Revision 1e5c6cf6714efd1e02e5a9e611238b6ed88c0798 authored by Steven Johnson on 19 November 2018, 23:32:35 UTC, committed by Steven Johnson on 19 November 2018, 23:32:35 UTC
1 parent a4ed756
CodeGen_X86.h
#ifndef HALIDE_CODEGEN_X86_H
#define HALIDE_CODEGEN_X86_H
/** \file
* Defines the code-generator for producing x86 machine code
*/
#include "CodeGen_Posix.h"
#include "Target.h"
namespace llvm {
class JITEventListener;
}
namespace Halide {
namespace Internal {
/** A code generator that emits x86 code from a given Halide stmt. */
class CodeGen_X86 : public CodeGen_Posix {
public:
/** Create an x86 code generator. Processor features can be
* enabled using the appropriate flags in the target struct. */
CodeGen_X86(Target);
protected:
std::string mcpu() const override;
std::string mattrs() const override;
bool use_soft_float_abi() const override;
int native_vector_bits() const override;
Expr mulhi_shr(Expr a, Expr b, int shr) override;
using CodeGen_Posix::visit;
/** Nodes for which we want to emit specific sse/avx intrinsics */
// @{
void visit(const Add *) override;
void visit(const Sub *) override;
void visit(const Cast *) override;
void visit(const GT *) override;
void visit(const LT *) override;
void visit(const LE *) override;
void visit(const GE *) override;
void visit(const EQ *) override;
void visit(const NE *) override;
void visit(const Select *) override;
// @}
};
} // namespace Internal
} // namespace Halide
#endif
Computing file changes ...