Halide 22.0.0 Halide compiler and libraries

Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
Halide::Internal::CodeGen_GPU_C Class Reference

A base class for GPU backends that require C-like shader output. More...

`#include <CodeGen_GPU_Dev.h>`

Inheritance diagram for Halide::Internal::CodeGen_GPU_C:

## Public Types
enum class | VectorDeclarationStyle { CLikeSyntax = 0 , OpenCLSyntax = 1 , WGSLSyntax = 2 }
| OpenCL and WGSL use different syntax than C for immediate vectors. More...
Public Types inherited from Halide::Internal::CodeGen_C
enum | OutputKind { CHeader , CPlusPlusHeader , CImplementation , CPlusPlusImplementation , CExternDecl , CPlusPlusExternDecl , CPlusPlusFunctionInfoHeader }

## Public Member Functions
| CodeGen_GPU_C (std::ostream &s, Target t)
Public Member Functions inherited from Halide::Internal::CodeGen_C
| CodeGen_C (std::ostream &dest, const Target &target, OutputKind output_kind=CImplementation, const std::string &include_guard="")
| Initialize a C code generator pointing at a particular output stream (e.g. More...
| ~CodeGen_C () override
void | compile (const Module &module)
| Emit the declarations contained in the module as C code. More...
const Target & | get_target () const
| The target we're generating code for. More...
Public Member Functions inherited from Halide::Internal::IRPrinter
| IRPrinter (std::ostream &)
| Construct an IRPrinter pointed at a given output stream (e.g. More...
void | print (const Expr &)
| emit an expression on the output stream More...
void | print_no_parens (const Expr &)
| Emit an expression on the output stream without enclosing parens. More...
void | print (const Stmt &)
| emit a statement on the output stream More...
void | print_summary (const Stmt &)
| emit a statement summary on the output stream More...
void | print_list (const std::vector< Expr > &exprs)
| emit a comma delimited list of exprs, without any leading or trailing punctuation. More...
Public Member Functions inherited from Halide::Internal::IRVisitor
| IRVisitor ()=default
virtual | ~IRVisitor ()=default

## Protected Member Functions
void | visit (const Shuffle *op) override
void | visit (const Call *op) override
std::string | print_extern_call (const Call *op) override
| Bottleneck to allow customization of calls to generic Extern/PureExtern calls. More...
void | visit (const Variable *) override
void | visit (const IntImm *) override
void | visit (const UIntImm *) override
void | visit (const StringImm *) override
void | visit (const FloatImm *) override
void | visit (const Cast *) override
void | visit (const Reinterpret *) 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 Max *) override
void | visit (const Min *) 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 Call *) override
void | visit (const Select *) override
void | visit (const Load *) override
void | visit (const Store *) 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 Ramp *) override
void | visit (const Broadcast *) override
void | visit (const Provide *) override
void | visit (const Allocate *) override
void | visit (const Free *) override
void | visit (const Realize *) override
void | visit (const IfThenElse *) override
void | visit (const Evaluate *) override
void | visit (const Shuffle *) override
void | visit (const Prefetch *) override
void | visit (const Fork *) override
void | visit (const Acquire *) override
void | visit (const Atomic *) override
void | visit (const VectorReduce *) override
void | visit (const IntImm *) override
void | visit (const UIntImm *) override
void | visit (const FloatImm *) override
void | visit (const StringImm *) override
void | visit (const Cast *) override
void | visit (const Reinterpret *) 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 Provide *) override
void | visit (const Allocate *) override
void | visit (const Free *) override
void | visit (const Realize *) 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 HoistedStorage *) override
Protected Member Functions inherited from Halide::Internal::CodeGen_C
void | compile (const LoweredFunc &func, const MetadataNameMap &metadata_name_map)
| Emit a declaration. More...
void | compile (const Buffer<> &buffer)
virtual Stmt | preprocess_function_body (const Stmt &stmt)
| This is a hook that subclasses can use to transform a function body just before it is emitted – e.g., to transform the IR to code that is easier to recognize and emit. More...
std::string | print_expr (const Expr &)
| Emit an expression as an assignment, then return the id of the resulting var. More...
std::string | print_cast_expr (const Type &, const Expr &)
| Like print_expr, but cast the Expr to the given Type. More...
void | print_stmt (const Stmt &)
| Emit a statement. More...
void | create_assertion (const std::string &id_cond, const Expr &message)
void | create_assertion (const Expr &cond, const Expr &message)
Expr | scalarize_vector_reduce (const VectorReduce *op)
virtual std::string | print_type (Type, AppendSpaceIfNeeded space_option=DoNotAppendSpace)
| Emit the C name for a halide type. More...
virtual std::string | print_reinterpret (Type, const Expr &)
| Emit a statement to reinterpret an expression as another type. More...
virtual std::string | print_name (const std::string &)
| Emit a version of a string that is a valid identifier in C (. More...
virtual void | add_platform_prologue ()
| Add platform specific prologue. More...
virtual void | add_vector_typedefs (const std::set< Type > &vector_types)
| Add typedefs for vector types. More...
virtual std::string | print_extern_call (const Call *op)
| Bottleneck to allow customization of calls to generic Extern/PureExtern calls. More...
std::string | print_scalarized_expr (const Expr &e)
| Convert a vector Expr into a series of scalar Exprs, then reassemble into vector of original type. More...
virtual std::string | print_assignment (Type t, const std::string &rhs)
| Emit an SSA-style assignment, and set id to the freshly generated name. More...
void | print_heap_free (const std::string &alloc_name)
| Emit free for the heap allocation. More...
bool | is_header ()
| Return true if only generating an interface, which may be extern "C" or C++. More...
bool | is_extern_decl ()
| Return true if only generating an interface, which may be extern "C" or C++. More...
bool | is_header_or_extern_decl ()
| Return true if only generating an interface, which may be extern "C" or C++. More...
bool | is_c_plus_plus_interface ()
| Return true if generating C++ linkage. More...
void | open_scope ()
| Open a new C scope (i.e. More...
void | close_scope (const std::string &comment)
| Close a C scope (i.e. More...
void | forward_declare_type_if_needed (const Type &t)
| If the Type is a handle type, emit a forward-declaration for it if we haven't already. More...
void | set_name_mangling_mode (NameMangling mode)
void | visit (const Variable *) override
void | visit (const IntImm *) override
void | visit (const UIntImm *) override
void | visit (const StringImm *) override
void | visit (const FloatImm *) override
void | visit (const Cast *) override
void | visit (const Reinterpret *) 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 Max *) override
void | visit (const Min *) 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 Call *) override
void | visit (const Select *) override
void | visit (const Load *) override
void | visit (const Store *) 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 Ramp *) override
void | visit (const Broadcast *) override
void | visit (const Provide *) override
void | visit (const Allocate *) override
void | visit (const Free *) override
void | visit (const Realize *) override
void | visit (const IfThenElse *) override
void | visit (const Evaluate *) override
void | visit (const Shuffle *) override
void | visit (const Prefetch *) override
void | visit (const Fork *) override
void | visit (const Acquire *) override
void | visit (const Atomic *) override
void | visit (const VectorReduce *) override
void | visit_binop (Type t, const Expr &a, const Expr &b, const char *op)
void | visit_relop (Type t, const Expr &a, const Expr &b, const char *scalar_op, const char *vector_op)
virtual bool | is_stack_private_to_thread () const
| Some architectures have private memory for the call stack; this means a thread cannot hand pointers to stack memory to another thread. More...
void | emit_argv_wrapper (const std::string &function_name, const std::vector< LoweredArgument > &args)
void | emit_metadata_getter (const std::string &function_name, const std::vector< LoweredArgument > &args, const MetadataNameMap &metadata_name_map)
void | emit_constexpr_function_info (const std::string &function_name, const std::vector< LoweredArgument > &args, const MetadataNameMap &metadata_name_map)
void | emit_halide_free_helper (const std::string &alloc_name, const std::string &free_function)
void | visit (const IntImm *) override
void | visit (const UIntImm *) override
void | visit (const FloatImm *) override
void | visit (const StringImm *) override
void | visit (const Cast *) override
void | visit (const Reinterpret *) 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 Provide *) override
void | visit (const Allocate *) override
void | visit (const Free *) override
void | visit (const Realize *) 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 HoistedStorage *) override
Protected Member Functions inherited from Halide::Internal::IRPrinter
Indentation | get_indent () const
template<typename T >
Ansi< T > | hl (const T &t)
template<typename T >
Ansi< T > | kw (const T &t)
template<typename T >
Ansi< T > | imm_int (const T &t)
template<typename T >
Ansi< T > | imm_float (const T &t)
template<typename T >
Ansi< T > | imm_str (const T &t)
template<typename T >
Ansi< T > | var (const T &t)
template<typename T >
Ansi< T > | buf (const T &t)
template<typename T >
Ansi< T > | fn (const T &t)
template<typename T >
Ansi< T > | type (const T &t)
template<typename T >
Ansi< T > | typep (const T &t)
template<typename T >
Ansi< T > | paren (const T &t, bool bold=true, int d=-1)
void | open ()
| Either emits "(" or "", depending on the value of implicit_parens. More...
void | close ()
| Either emits ")" or "", depending on the value of implicit_parens. More...
void | openf ()
| Emits "(" always. More...
void | openf (const char *name)
| Emits "name(" always. More...
void | closef ()
| Emits ")" always. More...
void | print_lets (const Let *let)
| A helper for printing a chain of lets with line breaks. More...
void | print_braced_stmt (const Stmt &, int extra_indent=2)
| A helper for printing a braced statement. More...
void | visit (const IntImm *) override
void | visit (const UIntImm *) override
void | visit (const FloatImm *) override
void | visit (const StringImm *) override
void | visit (const Cast *) override
void | visit (const Reinterpret *) 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 Provide *) override
void | visit (const Allocate *) override
void | visit (const Free *) override
void | visit (const Realize *) 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 HoistedStorage *) override
virtual void | visit (const IntImm *)
virtual void | visit (const UIntImm *)
virtual void | visit (const FloatImm *)
virtual void | visit (const StringImm *)
virtual void | visit (const Cast *)
virtual void | visit (const Reinterpret *)
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 Let *)
virtual void | visit (const LetStmt *)
virtual void | visit (const AssertStmt *)
virtual void | visit (const ProducerConsumer *)
virtual void | visit (const Store *)
virtual void | visit (const Provide *)
virtual void | visit (const Allocate *)
virtual void | visit (const Free *)
virtual void | visit (const Realize *)
virtual void | visit (const Block *)
virtual void | visit (const Fork *)
virtual void | visit (const IfThenElse *)
virtual void | visit (const Evaluate *)
virtual void | visit (const Call *)
virtual void | visit (const Variable *)
virtual void | visit (const For *)
virtual void | visit (const Acquire *)
virtual void | visit (const Shuffle *)
virtual void | visit (const Prefetch *)
virtual void | visit (const HoistedStorage *)
virtual void | visit (const Atomic *)
virtual void | visit (const VectorReduce *)

## Protected Attributes
VectorDeclarationStyle | vector_declaration_style = VectorDeclarationStyle::CLikeSyntax
bool | abs_returns_unsigned_type {false}
Protected Attributes inherited from Halide::Internal::CodeGen_C
IntegerSuffixStyle | integer_suffix_style = IntegerSuffixStyle::PlainC
| How to emit 64-bit integer constants. More...
std::string | id
| An ID for the most recently generated ssa variable. More...
Target | target
| The target being generated for. More...
OutputKind | output_kind
| Controls whether this instance is generating declarations or definitions and whether the interface us extern "C" or C++. More...
std::map< std::string, std::string > | cache
| A cache of generated values in scope. More...
std::unordered_map< std::string, std::string > | extern_function_name_map
Scope< Allocation > | allocations
| Track the types of allocations to avoid unnecessary casts. More...
Scope | heap_allocations
| Track which allocations actually went on the heap. More...
bool | have_user_context
| True if there is a void * __user_context parameter in the arguments. More...
bool | extern_c_open = false
| Track current calling convention scope. More...
bool | uses_gpu_for_loops
| True if at least one gpu-based for loop is used. More...
std::set< const halide_handle_cplusplus_type * > | forward_declared
| Track which handle types have been forward-declared already. More...
bool | inside_atomic_mutex_node = false
| Are we inside an atomic node that uses mutex locks? This is used for detecting deadlocks from nested atomics. More...
bool | emit_atomic_stores = false
| Emit atomic store instructions? More...
bool | using_vector_typedefs = false
| true if add_vector_typedefs() has been called. More...
Protected Attributes inherited from Halide::Internal::IRPrinter
std::ostream & | stream
| The stream on which we're outputting. More...
int | indent = 0
| The current indentation level, useful for pretty-printing statements. More...
bool | implicit_parens = false
| Certain expressions do not need parens around them, e.g. More...
bool | is_summary = false
| Print only a summary of a statement, with sub-statements replaced by ellipses (...). More...
bool | ansi = false
int | paren_depth = 0
const char * | ansi_hl = ""
const char * | ansi_dim = ""
const char * | ansi_kw = ""
const char * | ansi_imm_int = ""
const char * | ansi_imm_float = ""
const char * | ansi_imm_str = ""
const char * | ansi_var = ""
const char * | ansi_buf = ""
const char * | ansi_fn = ""
const char * | ansi_type = ""
const char * | ansi_reset_col = ""
const char * | ansi_reset = ""
Scope | known_type
| The symbols whose types can be inferred from values printed already. More...

## Additional Inherited Members
Static Public Member Functions inherited from Halide::Internal::CodeGen_C
static void | test ()
Static Public Member Functions inherited from Halide::Internal::IRPrinter
static void | test ()
Protected Types inherited from Halide::Internal::CodeGen_C
enum class | IntegerSuffixStyle { PlainC = 0 , OpenCL = 1 , HLSL = 2 }
enum | AppendSpaceIfNeeded { DoNotAppendSpace , AppendSpace }
Static Protected Member Functions inherited from Halide::Internal::CodeGen_C
template<typename T >
static std::string | with_sep (const std::vector< T > &v, const std::string &sep)
template<typename T >
static std::string | with_commas (const std::vector< T > &v)

## Detailed Description

A base class for GPU backends that require C-like shader output.

GPU backends derive from and specialize this class.

Definition at line 84 of file CodeGen_GPU_Dev.h.

## Member Enumeration Documentation

## ◆ VectorDeclarationStyle

enum class Halide::Internal::CodeGen_GPU_C::VectorDeclarationStyle
| strong

OpenCL and WGSL use different syntax than C for immediate vectors.

This enum defines which style should be used by the backend.

Enumerator
CLikeSyntax |
OpenCLSyntax |
WGSLSyntax |

Definition at line 88 of file CodeGen_GPU_Dev.h.

## Constructor & Destructor Documentation

## ◆ CodeGen_GPU_C()

Halide::Internal::CodeGen_GPU_C::CodeGen_GPU_C | ( | std::ostream & | s,
|  | Target | t
| ) |  |
| inline

Definition at line 94 of file CodeGen_GPU_Dev.h.

## Member Function Documentation

## ◆ visit() [1/96]

void Halide::Internal::CodeGen_GPU_C::visit | ( | const Shuffle * | op | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [2/96]

void Halide::Internal::CodeGen_GPU_C::visit | ( | const Call * | op | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ print_extern_call()

std::string Halide::Internal::CodeGen_GPU_C::print_extern_call | ( | const Call * | op | ) |
| overrideprotectedvirtual

Bottleneck to allow customization of calls to generic Extern/PureExtern calls.

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [3/96]

void Halide::Internal::CodeGen_C::visit | ( | const Variable * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [4/96]

void Halide::Internal::CodeGen_C::visit | ( | const IntImm * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [5/96]

void Halide::Internal::CodeGen_C::visit | ( | const UIntImm * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [6/96]

void Halide::Internal::CodeGen_C::visit | ( | const StringImm * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [7/96]

void Halide::Internal::CodeGen_C::visit | ( | const FloatImm * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [8/96]

void Halide::Internal::CodeGen_C::visit | ( | const Cast * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [9/96]

void Halide::Internal::CodeGen_C::visit | ( | const Reinterpret * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [10/96]

void Halide::Internal::CodeGen_C::visit | ( | const Add * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [11/96]

void Halide::Internal::CodeGen_C::visit | ( | const Sub * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [12/96]

void Halide::Internal::CodeGen_C::visit | ( | const Mul * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [13/96]

void Halide::Internal::CodeGen_C::visit | ( | const Div * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [14/96]

void Halide::Internal::CodeGen_C::visit | ( | const Mod * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [15/96]

void Halide::Internal::CodeGen_C::visit | ( | const Max * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [16/96]

void Halide::Internal::CodeGen_C::visit | ( | const Min * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [17/96]

void Halide::Internal::CodeGen_C::visit | ( | const EQ * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [18/96]

void Halide::Internal::CodeGen_C::visit | ( | const NE * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [19/96]

void Halide::Internal::CodeGen_C::visit | ( | const LT * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [20/96]

void Halide::Internal::CodeGen_C::visit | ( | const LE * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [21/96]

void Halide::Internal::CodeGen_C::visit | ( | const GT * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [22/96]

void Halide::Internal::CodeGen_C::visit | ( | const GE * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [23/96]

void Halide::Internal::CodeGen_C::visit | ( | const And * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [24/96]

void Halide::Internal::CodeGen_C::visit | ( | const Or * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [25/96]

void Halide::Internal::CodeGen_C::visit | ( | const Not * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [26/96]

void Halide::Internal::CodeGen_C::visit | ( | const Call * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [27/96]

void Halide::Internal::CodeGen_C::visit | ( | const Select * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [28/96]

void Halide::Internal::CodeGen_C::visit | ( | const Load * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [29/96]

void Halide::Internal::CodeGen_C::visit | ( | const Store * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [30/96]

void Halide::Internal::CodeGen_C::visit | ( | const Let * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [31/96]

void Halide::Internal::CodeGen_C::visit | ( | const LetStmt * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [32/96]

void Halide::Internal::CodeGen_C::visit | ( | const AssertStmt * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [33/96]

void Halide::Internal::CodeGen_C::visit | ( | const ProducerConsumer * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [34/96]

void Halide::Internal::CodeGen_C::visit | ( | const For * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [35/96]

void Halide::Internal::CodeGen_C::visit | ( | const Ramp * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [36/96]

void Halide::Internal::CodeGen_C::visit | ( | const Broadcast * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [37/96]

void Halide::Internal::CodeGen_C::visit | ( | const Provide * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [38/96]

void Halide::Internal::CodeGen_C::visit | ( | const Allocate * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [39/96]

void Halide::Internal::CodeGen_C::visit | ( | const Free * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [40/96]

void Halide::Internal::CodeGen_C::visit | ( | const Realize * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [41/96]

void Halide::Internal::CodeGen_C::visit | ( | const IfThenElse * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [42/96]

void Halide::Internal::CodeGen_C::visit | ( | const Evaluate * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [43/96]

void Halide::Internal::CodeGen_C::visit | ( | const Shuffle * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [44/96]

void Halide::Internal::CodeGen_C::visit | ( | const Prefetch * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [45/96]

void Halide::Internal::CodeGen_C::visit | ( | const Fork * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [46/96]

void Halide::Internal::CodeGen_C::visit | ( | const Acquire * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [47/96]

void Halide::Internal::CodeGen_C::visit | ( | const Atomic * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [48/96]

void Halide::Internal::CodeGen_C::visit | ( | const VectorReduce * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [49/96]

void Halide::Internal::IRPrinter::visit | ( | const IntImm * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [50/96]

void Halide::Internal::IRPrinter::visit | ( | const UIntImm * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [51/96]

void Halide::Internal::IRPrinter::visit | ( | const FloatImm * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [52/96]

void Halide::Internal::IRPrinter::visit | ( | const StringImm * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [53/96]

void Halide::Internal::IRPrinter::visit | ( | const Cast * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [54/96]

void Halide::Internal::IRPrinter::visit | ( | const Reinterpret * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [55/96]

void Halide::Internal::IRPrinter::visit | ( | const Variable * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [56/96]

void Halide::Internal::IRPrinter::visit | ( | const Add * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [57/96]

void Halide::Internal::IRPrinter::visit | ( | const Sub * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [58/96]

void Halide::Internal::IRPrinter::visit | ( | const Mul * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [59/96]

void Halide::Internal::IRPrinter::visit | ( | const Div * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [60/96]

void Halide::Internal::IRPrinter::visit | ( | const Mod * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [61/96]

void Halide::Internal::IRPrinter::visit | ( | const Min * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [62/96]

void Halide::Internal::IRPrinter::visit | ( | const Max * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [63/96]

void Halide::Internal::IRPrinter::visit | ( | const EQ * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [64/96]

void Halide::Internal::IRPrinter::visit | ( | const NE * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [65/96]

void Halide::Internal::IRPrinter::visit | ( | const LT * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [66/96]

void Halide::Internal::IRPrinter::visit | ( | const LE * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [67/96]

void Halide::Internal::IRPrinter::visit | ( | const GT * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [68/96]

void Halide::Internal::IRPrinter::visit | ( | const GE * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [69/96]

void Halide::Internal::IRPrinter::visit | ( | const And * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [70/96]

void Halide::Internal::IRPrinter::visit | ( | const Or * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [71/96]

void Halide::Internal::IRPrinter::visit | ( | const Not * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [72/96]

void Halide::Internal::IRPrinter::visit | ( | const Select * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [73/96]

void Halide::Internal::IRPrinter::visit | ( | const Load * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [74/96]

void Halide::Internal::IRPrinter::visit | ( | const Ramp * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [75/96]

void Halide::Internal::IRPrinter::visit | ( | const Broadcast * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [76/96]

void Halide::Internal::IRPrinter::visit | ( | const Call * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [77/96]

void Halide::Internal::IRPrinter::visit | ( | const Let * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [78/96]

void Halide::Internal::IRPrinter::visit | ( | const LetStmt * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [79/96]

void Halide::Internal::IRPrinter::visit | ( | const AssertStmt * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [80/96]

void Halide::Internal::IRPrinter::visit | ( | const ProducerConsumer * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [81/96]

void Halide::Internal::IRPrinter::visit | ( | const For * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [82/96]

void Halide::Internal::IRPrinter::visit | ( | const Acquire * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [83/96]

void Halide::Internal::IRPrinter::visit | ( | const Store * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [84/96]

void Halide::Internal::IRPrinter::visit | ( | const Provide * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [85/96]

void Halide::Internal::IRPrinter::visit | ( | const Allocate * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [86/96]

void Halide::Internal::IRPrinter::visit | ( | const Free * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [87/96]

void Halide::Internal::IRPrinter::visit | ( | const Realize * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [88/96]

void Halide::Internal::IRPrinter::visit | ( | const Block * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [89/96]

void Halide::Internal::IRPrinter::visit | ( | const Fork * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [90/96]

void Halide::Internal::IRPrinter::visit | ( | const IfThenElse * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [91/96]

void Halide::Internal::IRPrinter::visit | ( | const Evaluate * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [92/96]

void Halide::Internal::IRPrinter::visit | ( | const Shuffle * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [93/96]

void Halide::Internal::IRPrinter::visit | ( | const VectorReduce * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [94/96]

void Halide::Internal::IRPrinter::visit | ( | const Prefetch * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [95/96]

void Halide::Internal::IRPrinter::visit | ( | const Atomic * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## ◆ visit() [96/96]

void Halide::Internal::IRPrinter::visit | ( | const HoistedStorage * |  | ) |
| overrideprotectedvirtual

Reimplemented from Halide::Internal::CodeGen_C.

## Member Data Documentation

## ◆ vector_declaration_style

VectorDeclarationStyle Halide::Internal::CodeGen_GPU_C::vector_declaration_style = VectorDeclarationStyle::CLikeSyntax
| protected

Definition at line 105 of file CodeGen_GPU_Dev.h.

## ◆ abs_returns_unsigned_type

bool Halide::Internal::CodeGen_GPU_C::abs_returns_unsigned_type {false}
| protected

Definition at line 106 of file CodeGen_GPU_Dev.h.

The documentation for this class was generated from the following file:

- src/CodeGen_GPU_Dev.h