|
Halide 13.0.2
Halide compiler and libraries
|
A code generator that emits posix code from a given Halide stmt. More...
#include <CodeGen_Posix.h>
Inherits Halide::Internal::CodeGen_LLVM.
Classes | |
| struct | Allocation |
| A struct describing heap or stack allocations. More... | |
Public Member Functions | |
| CodeGen_Posix (const Target &t) | |
| Create an posix code generator. More... | |
Public Member Functions inherited from Halide::Internal::CodeGen_LLVM | |
| ~CodeGen_LLVM () override | |
| virtual std::unique_ptr< llvm::Module > | compile (const Module &module) |
| Takes a halide Module and compiles it to an llvm Module. More... | |
| const Target & | get_target () const |
| The target we're generating code for. More... | |
| void | set_context (llvm::LLVMContext &context) |
| Tell the code generator which LLVM context to use. More... | |
| size_t | get_requested_alloca_total () const |
Public Member Functions inherited from Halide::Internal::IRVisitor | |
| IRVisitor ()=default | |
| virtual | ~IRVisitor ()=default |
Protected Member Functions | |
| void | visit (const Allocate *) override |
| Posix implementation of Allocate. More... | |
| void | visit (const Free *) override |
| Generate code for a free node. More... | |
| virtual int | allocation_padding (Type type) const |
| It can be convenient for backends to assume there is extra padding beyond the end of a buffer to enable faster loads/stores. More... | |
| std::string | get_allocation_name (const std::string &n) override |
| Get a unique name for the actual block of memory that an allocate node uses. More... | |
| void | visit (const IntImm *) override |
| Generate code for various IR nodes. More... | |
| void | visit (const UIntImm *) override |
| void | visit (const FloatImm *) override |
| void | visit (const StringImm *) override |
| void | visit (const Cast *) override |
| void | visit (const Variable *) override |
| void | visit (const Add *) override |
| void | visit (const Sub *) override |
| void | visit (const Mul *) override |
| void | visit (const Div *) override |
| void | visit (const Mod *) override |
| void | visit (const Min *) override |
| void | visit (const Max *) override |
| void | visit (const EQ *) override |
| void | visit (const NE *) override |
| void | visit (const LT *) override |
| void | visit (const LE *) override |
| void | visit (const GT *) override |
| void | visit (const GE *) override |
| void | visit (const And *) override |
| void | visit (const Or *) override |
| void | visit (const Not *) override |
| void | visit (const Select *) override |
| void | visit (const Load *) override |
| void | visit (const Ramp *) override |
| void | visit (const Broadcast *) override |
| void | visit (const Call *) override |
| void | visit (const Let *) override |
| void | visit (const LetStmt *) override |
| void | visit (const AssertStmt *) override |
| void | visit (const ProducerConsumer *) override |
| void | visit (const For *) override |
| void | visit (const Acquire *) override |
| void | visit (const Store *) override |
| void | visit (const Block *) override |
| void | visit (const Fork *) override |
| void | visit (const IfThenElse *) override |
| void | visit (const Evaluate *) override |
| void | visit (const Shuffle *) override |
| void | visit (const VectorReduce *) override |
| void | visit (const Prefetch *) override |
| void | visit (const Atomic *) override |
| void | visit (const Allocate *) override=0 |
| Generate code for an allocate node. More... | |
| void | visit (const Free *) override=0 |
| Generate code for a free node. More... | |
| void | visit (const Provide *) override |
| These IR nodes should have been removed during lowering. More... | |
| void | visit (const Realize *) override |
| virtual void | visit (const IntImm *) |
| Generate code for various IR nodes. More... | |
| virtual void | visit (const UIntImm *) |
| virtual void | visit (const FloatImm *) |
| virtual void | visit (const StringImm *) |
| virtual void | visit (const Cast *) |
| virtual void | visit (const Variable *) |
| virtual void | visit (const Add *) |
| virtual void | visit (const Sub *) |
| virtual void | visit (const Mul *) |
| virtual void | visit (const Div *) |
| virtual void | visit (const Mod *) |
| virtual void | visit (const Min *) |
| virtual void | visit (const Max *) |
| virtual void | visit (const EQ *) |
| virtual void | visit (const NE *) |
| virtual void | visit (const LT *) |
| virtual void | visit (const LE *) |
| virtual void | visit (const GT *) |
| virtual void | visit (const GE *) |
| virtual void | visit (const And *) |
| virtual void | visit (const Or *) |
| virtual void | visit (const Not *) |
| virtual void | visit (const Select *) |
| virtual void | visit (const Load *) |
| virtual void | visit (const Ramp *) |
| virtual void | visit (const Broadcast *) |
| virtual void | visit (const Call *) |
| virtual void | visit (const Let *) |
| virtual void | visit (const LetStmt *) |
| virtual void | visit (const AssertStmt *) |
| virtual void | visit (const ProducerConsumer *) |
| virtual void | visit (const For *) |
| virtual void | visit (const Store *) |
| virtual void | visit (const Provide *) |
| These IR nodes should have been removed during lowering. More... | |
| virtual void | visit (const Allocate *) |
| Generate code for an allocate node. More... | |
| virtual void | visit (const Free *) |
| Generate code for a free node. More... | |
| virtual void | visit (const Realize *) |
| virtual void | visit (const Block *) |
| virtual void | visit (const IfThenElse *) |
| virtual void | visit (const Evaluate *) |
| virtual void | visit (const Shuffle *) |
| virtual void | visit (const VectorReduce *) |
| virtual void | visit (const Prefetch *) |
| virtual void | visit (const Fork *) |
| virtual void | visit (const Acquire *) |
| virtual void | visit (const Atomic *) |
Protected Member Functions inherited from Halide::Internal::CodeGen_LLVM | |
| CodeGen_LLVM (const Target &t) | |
| virtual void | compile_func (const LoweredFunc &func, const std::string &simple_name, const std::string &extern_name) |
| Compile a specific halide declaration into the llvm Module. More... | |
| virtual void | compile_buffer (const Buffer<> &buffer) |
| virtual void | begin_func (LinkageType linkage, const std::string &simple_name, const std::string &extern_name, const std::vector< LoweredArgument > &args) |
| Helper functions for compiling Halide functions to llvm functions. More... | |
| virtual void | end_func (const std::vector< LoweredArgument > &args) |
| virtual std::string | mcpu () const =0 |
| What should be passed as -mcpu, -mattrs, and related for compilation. More... | |
| virtual std::string | mattrs () const =0 |
| virtual std::string | mabi () const |
| virtual bool | use_soft_float_abi () const =0 |
| virtual bool | use_pic () const |
| virtual bool | promote_indices () const |
| Should indexing math be promoted to 64-bit on platforms with 64-bit pointers? More... | |
| virtual int | native_vector_bits () const =0 |
| What's the natural vector bit-width to use for loads, stores, etc. More... | |
| virtual Type | upgrade_type_for_arithmetic (const Type &) const |
| Return the type in which arithmetic should be done for the given storage type. More... | |
| virtual Type | upgrade_type_for_storage (const Type &) const |
| Return the type that a given Halide type should be stored/loaded from memory as. More... | |
| virtual Type | upgrade_type_for_argument_passing (const Type &) const |
| Return the type that a Halide type should be passed in and out of functions as. More... | |
| virtual void | init_context () |
| Grab all the context specific internal state. More... | |
| virtual void | init_module () |
| Initialize the CodeGen_LLVM internal state to compile a fresh module. More... | |
| void | add_external_code (const Module &halide_module) |
| Add external_code entries to llvm module. More... | |
| void | optimize_module () |
| Run all of llvm's optimization passes on the module. More... | |
| void | sym_push (const std::string &name, llvm::Value *value) |
| Add an entry to the symbol table, hiding previous entries with the same name. More... | |
| void | sym_pop (const std::string &name) |
| Remove an entry for the symbol table, revealing any previous entries with the same name. More... | |
| llvm::Value * | sym_get (const std::string &name, bool must_succeed=true) const |
| Fetch an entry from the symbol table. More... | |
| bool | sym_exists (const std::string &name) const |
| Test if an item exists in the symbol table. More... | |
| llvm::FunctionType * | signature_to_type (const ExternSignature &signature) |
| Given a Halide ExternSignature, return the equivalent llvm::FunctionType. More... | |
| llvm::Value * | codegen (const Expr &) |
| Emit code that evaluates an expression, and return the llvm representation of the result of the expression. More... | |
| void | codegen (const Stmt &) |
| Emit code that runs a statement. More... | |
| void | scalarize (const Expr &) |
| Codegen a vector Expr by codegenning each lane and combining. More... | |
| llvm::Value * | register_destructor (llvm::Function *destructor_fn, llvm::Value *obj, DestructorType when) |
| void | trigger_destructor (llvm::Function *destructor_fn, llvm::Value *stack_slot) |
| Call a destructor early. More... | |
| llvm::BasicBlock * | get_destructor_block () |
| Retrieves the block containing the error handling code. More... | |
| void | create_assertion (llvm::Value *condition, const Expr &message, llvm::Value *error_code=nullptr) |
| Codegen an assertion. More... | |
| void | codegen_asserts (const std::vector< const AssertStmt * > &asserts) |
| Codegen a block of asserts with pure conditions. More... | |
| void | get_parallel_tasks (const Stmt &s, std::vector< ParallelTask > &tasks, std::pair< std::string, int > prefix) |
| void | do_parallel_tasks (const std::vector< ParallelTask > &tasks) |
| void | do_as_parallel_task (const Stmt &s) |
| void | return_with_error_code (llvm::Value *error_code) |
| Return the the pipeline with the given error code. More... | |
| llvm::Constant * | create_string_constant (const std::string &str) |
| Put a string constant in the module as a global variable and return a pointer to it. More... | |
| llvm::Constant * | create_binary_blob (const std::vector< char > &data, const std::string &name, bool constant=true) |
| Put a binary blob in the module as a global variable and return a pointer to it. More... | |
| llvm::Value * | create_broadcast (llvm::Value *, int lanes) |
| Widen an llvm scalar into an llvm vector with the given number of lanes. More... | |
| llvm::Value * | codegen_buffer_pointer (const std::string &buffer, Type type, llvm::Value *index) |
| Generate a pointer into a named buffer at a given index, of a given type. More... | |
| llvm::Value * | codegen_buffer_pointer (const std::string &buffer, Type type, Expr index) |
| llvm::Value * | codegen_buffer_pointer (llvm::Value *base_address, Type type, Expr index) |
| llvm::Value * | codegen_buffer_pointer (llvm::Value *base_address, Type type, llvm::Value *index) |
| llvm::Value * | make_halide_type_t (const Type &) |
| Turn a Halide Type into an llvm::Value representing a constant halide_type_t. More... | |
| void | add_tbaa_metadata (llvm::Instruction *inst, std::string buffer, const Expr &index) |
| Mark a load or store with type-based-alias-analysis metadata so that llvm knows it can reorder loads and stores across different buffers. More... | |
| virtual void | prepare_for_early_exit () |
| If we have to bail out of a pipeline midway, this should inject the appropriate target-specific cleanup code. More... | |
| virtual llvm::Type * | llvm_type_of (const Type &) const |
| Get the llvm type equivalent to the given halide type in the current context. More... | |
| llvm::Value * | create_alloca_at_entry (llvm::Type *type, int n, bool zero_initialize=false, const std::string &name="") |
| Perform an alloca at the function entrypoint. More... | |
| llvm::Value * | get_user_context () const |
| The user_context argument. More... | |
| virtual llvm::Value * | interleave_vectors (const std::vector< llvm::Value * > &) |
| Implementation of the intrinsic call to interleave_vectors. More... | |
| llvm::Function * | get_llvm_intrin (const Type &ret_type, const std::string &name, const std::vector< Type > &arg_types, bool scalars_are_vectors=false) |
| Get an LLVM intrinsic declaration. More... | |
| llvm::Function * | get_llvm_intrin (llvm::Type *ret_type, const std::string &name, const std::vector< llvm::Type * > &arg_types) |
| llvm::Function * | declare_intrin_overload (const std::string &name, const Type &ret_type, const std::string &impl_name, std::vector< Type > arg_types, bool scalars_are_vectors=false) |
| Declare an intrinsic function that participates in overload resolution. More... | |
| void | declare_intrin_overload (const std::string &name, const Type &ret_type, llvm::Function *impl, std::vector< Type > arg_types) |
| llvm::Value * | call_overloaded_intrin (const Type &result_type, const std::string &name, const std::vector< Expr > &args) |
| Call an overloaded intrinsic function. More... | |
| llvm::Value * | call_intrin (const Type &t, int intrin_lanes, const std::string &name, std::vector< Expr >) |
| Generate a call to a vector intrinsic or runtime inlined function. More... | |
| llvm::Value * | call_intrin (const Type &t, int intrin_lanes, llvm::Function *intrin, std::vector< Expr >) |
| llvm::Value * | call_intrin (llvm::Type *t, int intrin_lanes, const std::string &name, std::vector< llvm::Value * >) |
| llvm::Value * | call_intrin (llvm::Type *t, int intrin_lanes, llvm::Function *intrin, std::vector< llvm::Value * >) |
| virtual llvm::Value * | slice_vector (llvm::Value *vec, int start, int extent) |
| Take a slice of lanes out of an llvm vector. More... | |
| virtual llvm::Value * | concat_vectors (const std::vector< llvm::Value * > &) |
| Concatenate a bunch of llvm vectors. More... | |
| virtual llvm::Value * | shuffle_vectors (llvm::Value *a, llvm::Value *b, const std::vector< int > &indices) |
| Create an LLVM shuffle vectors instruction. More... | |
| llvm::Value * | shuffle_vectors (llvm::Value *v, const std::vector< int > &indices) |
| Shorthand for shuffling a vector with an undef vector. More... | |
| std::pair< llvm::Function *, int > | find_vector_runtime_function (const std::string &name, int lanes) |
| Go looking for a vector version of a runtime function. More... | |
| virtual bool | supports_atomic_add (const Type &t) const |
| virtual void | codegen_vector_reduce (const VectorReduce *op, const Expr &init) |
| Compile a horizontal reduction that starts with an explicit initial value. More... | |
| virtual bool | supports_call_as_float16 (const Call *op) const |
| Can we call this operation with float16 type? This is used to avoid "emulated" equivalent code-gen in case target has FP16 feature. More... | |
Protected Attributes | |
| Scope< Allocation > | allocations |
| The allocations currently in scope. More... | |
Protected Attributes inherited from Halide::Internal::CodeGen_LLVM | |
| std::unique_ptr< llvm::Module > | module |
| llvm::Function * | function |
| llvm::LLVMContext * | context |
| llvm::IRBuilder< llvm::ConstantFolder, llvm::IRBuilderDefaultInserter > * | builder |
| llvm::Value * | value |
| llvm::MDNode * | very_likely_branch |
| llvm::MDNode * | default_fp_math_md |
| llvm::MDNode * | strict_fp_math_md |
| std::vector< LoweredArgument > | current_function_args |
| Halide::Target | target |
| The target we're generating code for. More... | |
| llvm::Type * | void_t |
| Some useful llvm types. More... | |
| llvm::Type * | i1_t |
| llvm::Type * | i8_t |
| llvm::Type * | i16_t |
| llvm::Type * | i32_t |
| llvm::Type * | i64_t |
| llvm::Type * | f16_t |
| llvm::Type * | f32_t |
| llvm::Type * | f64_t |
| llvm::StructType * | halide_buffer_t_type |
| llvm::StructType * | type_t_type |
| llvm::StructType * | dimension_t_type |
| llvm::StructType * | metadata_t_type |
| llvm::StructType * | argument_t_type |
| llvm::StructType * | scalar_value_t_type |
| llvm::StructType * | device_interface_t_type |
| llvm::StructType * | pseudostack_slot_t_type |
| llvm::StructType * | semaphore_t_type |
| llvm::StructType * | semaphore_acquire_t_type |
| llvm::StructType * | parallel_task_t_type |
| Expr | wild_u1x_ |
| Some wildcard variables used for peephole optimizations in subclasses. More... | |
| Expr | wild_i8x_ |
| Expr | wild_u8x_ |
| Expr | wild_i16x_ |
| Expr | wild_u16x_ |
| Expr | wild_i32x_ |
| Expr | wild_u32x_ |
| Expr | wild_i64x_ |
| Expr | wild_u64x_ |
| Expr | wild_f32x_ |
| Expr | wild_f64x_ |
| Expr | wild_u1_ |
| Expr | wild_i8_ |
| Expr | wild_u8_ |
| Expr | wild_i16_ |
| Expr | wild_u16_ |
| Expr | wild_i32_ |
| Expr | wild_u32_ |
| Expr | wild_i64_ |
| Expr | wild_u64_ |
| Expr | wild_f32_ |
| Expr | wild_f64_ |
| int | task_depth |
| size_t | requested_alloca_total = 0 |
| A (very) conservative guess at the size of all alloca() storage requested (including alignment padding). More... | |
| std::map< std::string, std::vector< Intrinsic > > | intrinsics |
| Mapping of intrinsic functions to the various overloads implementing it. More... | |
| bool | inside_atomic_mutex_node |
| Are we inside an atomic node that uses mutex locks? This is used for detecting deadlocks from nested atomics & illegal vectorization. More... | |
| bool | emit_atomic_stores |
| Emit atomic store instructions? More... | |
Additional Inherited Members | |
Static Public Member Functions inherited from Halide::Internal::CodeGen_LLVM | |
| static std::unique_ptr< CodeGen_LLVM > | new_for_target (const Target &target, llvm::LLVMContext &context) |
| Create an instance of CodeGen_LLVM suitable for the target. More... | |
| static void | initialize_llvm () |
| Initialize internal llvm state for the enabled targets. More... | |
| static std::unique_ptr< llvm::Module > | compile_trampolines (const Target &target, llvm::LLVMContext &context, const std::string &suffix, const std::vector< std::pair< std::string, ExternSignature > > &externs) |
Protected Types inherited from Halide::Internal::CodeGen_LLVM | |
| enum | DestructorType { Always , OnError , OnSuccess } |
| Some destructors should always be called. More... | |
A code generator that emits posix code from a given Halide stmt.
Definition at line 14 of file CodeGen_Posix.h.
| Halide::Internal::CodeGen_Posix::CodeGen_Posix | ( | const Target & | t | ) |
Create an posix code generator.
Processor features can be enabled using the appropriate arguments
|
overrideprotectedvirtual |
Posix implementation of Allocate.
Small constant-sized allocations go on the stack. The rest go on the heap by calling "halide_malloc" and "halide_free" in the standard library.
Implements Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Generate code for a free node.
It has no default implementation and must be handled in an architecture-specific way.
Implements Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
It can be convenient for backends to assume there is extra padding beyond the end of a buffer to enable faster loads/stores.
This function gets the padding required by the implementing target.
|
overrideprotectedvirtual |
Get a unique name for the actual block of memory that an allocate node uses.
Used so that alias analysis understands when multiple Allocate nodes shared the same memory.
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Generate code for various IR nodes.
These can be overridden by architecture-specific code to perform peephole optimizations. The result of each is stored in value
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Generate code for an allocate node.
It has no default implementation - it must be handled in an architecture-specific way.
Implements Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Generate code for a free node.
It has no default implementation and must be handled in an architecture-specific way.
Implements Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
These IR nodes should have been removed during lowering.
CodeGen_LLVM will error out if they are present
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
overrideprotectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Generate code for various IR nodes.
These can be overridden by architecture-specific code to perform peephole optimizations. The result of each is stored in value
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
These IR nodes should have been removed during lowering.
CodeGen_LLVM will error out if they are present
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Generate code for an allocate node.
It has no default implementation - it must be handled in an architecture-specific way.
Implements Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Generate code for a free node.
It has no default implementation and must be handled in an architecture-specific way.
Implements Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protectedvirtual |
Reimplemented from Halide::Internal::CodeGen_LLVM.
|
protected |
The allocations currently in scope.
The stack gets pushed when we enter a new function.
Definition at line 71 of file CodeGen_Posix.h.