|  | 
|  | AbstractGenerator.h | 
|  | AddAtomicMutex.h | 
|  | Defines the lowering pass that insert mutex allocation code & locks for the atomic nodes that require mutex locks. 
 | 
|  | AddImageChecks.h | 
|  | Defines the lowering pass that adds the assertions that validate input and output buffers. 
 | 
|  | AddParameterChecks.h | 
|  | Defines the lowering pass that adds the assertions that validate scalar parameters. 
 | 
|  | AddSplitFactorChecks.h | 
|  | Defines the lowering pass that adds the assertions that all split factors are strictly positive. 
 | 
|  | AlignLoads.h | 
|  | Defines a lowering pass that rewrites unaligned loads into sequences of aligned loads. 
 | 
|  | AllocationBoundsInference.h | 
|  | Defines the lowering pass that determines how large internal allocations should be. 
 | 
|  | ApplySplit.h | 
|  | Defines method that returns a list of let stmts, substitutions, and predicates to be added given a split schedule. 
 | 
|  | Argument.h | 
|  | Defines a type used for expressing the type signature of a generated halide pipeline. 
 | 
|  | AssociativeOpsTable.h | 
|  | Tables listing associative operators and their identities. 
 | 
|  | Associativity.h | 
|  | Methods for extracting an associative operator from a Func's update definition if there is any and computing the identity of the associative operator. 
 | 
|  | AsyncProducers.h | 
|  | Defines the lowering pass that injects task parallelism for producers that are scheduled as async. 
 | 
|  | AutoScheduleUtils.h | 
|  | Defines util functions that used by auto scheduler. 
 | 
|  | BoundaryConditions.h | 
|  | Support for imposing boundary conditions on Halide::Funcs. 
 | 
|  | BoundConstantExtentLoops.h | 
|  | Defines the lowering pass that enforces a constant extent on all vectorized or unrolled loops. 
 | 
|  | Bounds.h | 
|  | Methods for computing the upper and lower bounds of an expression, and the regions of a function read or written by a statement. 
 | 
|  | BoundsInference.h | 
|  | Defines the bounds_inference lowering pass. 
 | 
|  | BoundSmallAllocations.h | 
|  | Defines the lowering pass that attempts to rewrite small allocations to have constant size. 
 | 
|  | Buffer.h | 
|  | Callable.h | 
|  | Defines the front-end class representing a jitted, callable Halide pipeline. 
 | 
|  | CanonicalizeGPUVars.h | 
|  | Defines the lowering pass that canonicalize the GPU var names over. 
 | 
|  | ClampUnsafeAccesses.h | 
|  | Defines the clamp_unsafe_accesses lowering pass. 
 | 
|  | Closure.h | 
|  | Provides Closure class. 
 | 
|  | CodeGen_C.h | 
|  | Defines an IRPrinter that emits C++ code equivalent to a halide stmt. 
 | 
|  | CodeGen_D3D12Compute_Dev.h | 
|  | Defines the code-generator for producing D3D12-compatible HLSL kernel code. 
 | 
|  | CodeGen_GPU_Dev.h | 
|  | Defines the code-generator interface for producing GPU device code. 
 | 
|  | CodeGen_Internal.h | 
|  | Defines functionality that's useful to multiple target-specific CodeGen paths, but shouldn't live in CodeGen_LLVM.h (because that's the front-end-facing interface to CodeGen). 
 | 
|  | CodeGen_LLVM.h | 
|  | Defines the base-class for all architecture-specific code generators that use llvm. 
 | 
|  | CodeGen_Metal_Dev.h | 
|  | Defines the code-generator for producing Apple Metal shading language kernel code. 
 | 
|  | CodeGen_OpenCL_Dev.h | 
|  | Defines the code-generator for producing OpenCL C kernel code. 
 | 
|  | CodeGen_Posix.h | 
|  | Defines a base-class for code-generators on posixy cpu platforms. 
 | 
|  | CodeGen_PTX_Dev.h | 
|  | Defines the code-generator for producing CUDA host code. 
 | 
|  | CodeGen_PyTorch.h | 
|  | Defines an IRPrinter that emits C++ code that: 
 | 
|  | CodeGen_Targets.h | 
|  | Provides constructors for code generators for various targets. 
 | 
|  | CodeGen_Vulkan_Dev.h | 
|  | Defines the code-generator for producing SPIR-V binary modules for use with the Vulkan runtime. 
 | 
|  | CodeGen_WebGPU_Dev.h | 
|  | Defines the code-generator for producing WebGPU shader code (WGSL) 
 | 
|  | CompilerLogger.h | 
|  | Defines an interface used to gather and log compile-time information, stats, etc for use in evaluating internal Halide compilation rules and efficiency. 
 | 
|  | ConciseCasts.h | 
|  | Defines concise cast and saturating cast operators to make it easier to read cast-heavy code. 
 | 
|  | ConstantBounds.h | 
|  | Methods for computing compile-time constant int64_t upper and lower bounds of an expression. 
 | 
|  | ConstantInterval.h | 
|  | Defines the ConstantInterval class, and operators on it. 
 | 
|  | CPlusPlusMangle.h | 
|  | A simple function to get a C++ mangled function name for a function. 
 | 
|  | CSE.h | 
|  | Defines a pass for introducing let expressions to wrap common sub-expressions. 
 | 
|  | Debug.h | 
|  | Defines functions for debug logging during code generation. 
 | 
|  | DebugArguments.h | 
|  | Defines a lowering pass that injects debug statements inside a LoweredFunc. 
 | 
|  | DebugToFile.h | 
|  | Defines the lowering pass that injects code at the end of every realization to dump functions to a file for debugging. 
 | 
|  | Definition.h | 
|  | Defines the internal representation of a halide function's definition and related classes. 
 | 
|  | Deinterleave.h | 
|  | Defines methods for splitting up a vector into the even lanes and the odd lanes. 
 | 
|  | Derivative.h | 
|  | Automatic differentiation. 
 | 
|  | DerivativeUtils.h | 
|  | Deserialization.h | 
|  | DeviceAPI.h | 
|  | Defines DeviceAPI. 
 | 
|  | DeviceArgument.h | 
|  | Defines helpers for passing arguments to separate devices, such as GPUs. 
 | 
|  | DeviceInterface.h | 
|  | Methods for managing device allocations when jitting. 
 | 
|  | Dimension.h | 
|  | Defines the Dimension utility class for Halide pipelines. 
 | 
|  | DistributeShifts.h | 
|  | A tool to distribute shifts as multiplies, useful for some backends. 
 | 
|  | EarlyFree.h | 
|  | Defines the lowering pass that injects markers just after the last use of each buffer so that they can potentially be freed earlier. 
 | 
|  | Elf.h | 
|  | EliminateBoolVectors.h | 
|  | Method to eliminate vectors of booleans from IR. 
 | 
|  | EmulateFloat16Math.h | 
|  | Methods for dealing with float16 arithmetic using float32 math, by casting back and forth with bit tricks. 
 | 
|  | Error.h | 
|  | Expr.h | 
|  | Base classes for Halide expressions (Halide::Expr) and statements (Halide::Internal::Stmt) 
 | 
|  | ExprUsesVar.h | 
|  | Defines a method to determine if an expression depends on some variables. 
 | 
|  | Extern.h | 
|  | Convenience macros that lift functions that take C types into functions that take and return exprs, and call the original function at runtime under the hood. 
 | 
|  | ExternFuncArgument.h | 
|  | Defines the internal representation of a halide ExternFuncArgument. 
 | 
|  | FastIntegerDivide.h | 
|  | FindCalls.h | 
|  | Defines analyses to extract the functions called a function. 
 | 
|  | FindIntrinsics.h | 
|  | Tools to replace common patterns with more readily recognizable intrinsics. 
 | 
|  | FlattenNestedRamps.h | 
|  | Defines the lowering pass that flattens nested ramps and broadcasts. 
 | 
|  | Float16.h | 
|  | Func.h | 
|  | Defines Func - the front-end handle on a halide function, and related classes. 
 | 
|  | Function.h | 
|  | Defines the internal representation of a halide function and related classes. 
 | 
|  | FunctionPtr.h | 
|  | FuseGPUThreadLoops.h | 
|  | Defines the lowering pass that fuses and normalizes loops over gpu threads to target CUDA, OpenCL, and Metal. 
 | 
|  | FuzzFloatStores.h | 
|  | Defines a lowering pass that messes with floating point stores. 
 | 
|  | Generator.h | 
|  | Generator is a class used to encapsulate the building of Funcs in user pipelines. 
 | 
|  | HexagonAlignment.h | 
|  | Class for analyzing Alignment of loads and stores for Hexagon. 
 | 
|  | HexagonOffload.h | 
|  | Defines a lowering pass to pull loops marked with the Hexagon device API to a separate module, and call them through the Hexagon host runtime module. 
 | 
|  | HexagonOptimize.h | 
|  | Tools for optimizing IR for Hexagon. 
 | 
|  | ImageParam.h | 
|  | Classes for declaring image parameters to halide pipelines. 
 | 
|  | InferArguments.h | 
|  | Interface for a visitor to infer arguments used in a body Stmt. 
 | 
|  | InjectHostDevBufferCopies.h | 
|  | Defines the lowering passes that deal with host and device buffer flow. 
 | 
|  | Inline.h | 
|  | Methods for replacing calls to functions with their definitions. 
 | 
|  | InlineReductions.h | 
|  | Defines some inline reductions: sum, product, minimum, maximum. 
 | 
|  | IntegerDivisionTable.h | 
|  | Tables telling us how to do integer division via fixed-point multiplication for various small constants. 
 | 
|  | Interval.h | 
|  | Defines the Interval class. 
 | 
|  | IntrusivePtr.h | 
|  | Support classes for reference-counting via intrusive shared pointers. 
 | 
|  | IR.h | 
|  | Subtypes for Halide expressions (Halide::Expr) and statements (Halide::Internal::Stmt) 
 | 
|  | IREquality.h | 
|  | Methods to test Exprs and Stmts for equality of value. 
 | 
|  | IRMatch.h | 
|  | Defines a method to match a fragment of IR against a pattern containing wildcards. 
 | 
|  | IRMutator.h | 
|  | Defines a base class for passes over the IR that modify it. 
 | 
|  | IROperator.h | 
|  | Defines various operator overloads and utility functions that make it more pleasant to work with Halide expressions. 
 | 
|  | IRPrinter.h | 
|  | This header file defines operators that let you dump a Halide expression, statement, or type directly into an output stream in a human readable form. 
 | 
|  | IRVisitor.h | 
|  | Defines the base class for things that recursively walk over the IR. 
 | 
|  | JITModule.h | 
|  | Defines the struct representing lifetime and dependencies of a JIT compiled halide pipeline. 
 | 
|  | Lambda.h | 
|  | Convenience functions for creating small anonymous Halide functions. 
 | 
|  | Lerp.h | 
|  | Defines methods for converting a lerp intrinsic into Halide IR. 
 | 
|  | LICM.h | 
|  | Methods for lifting loop invariants out of inner loops. 
 | 
|  | LLVM_Output.h | 
|  | LLVM_Runtime_Linker.h | 
|  | Support for linking LLVM modules that comprise the runtime. 
 | 
|  | LoopCarry.h | 
|  | LoopPartitioningDirective.h | 
|  | Defines the Partition enum. 
 | 
|  | Lower.h | 
|  | Defines the function that generates a statement that computes a Halide function using its schedule. 
 | 
|  | LowerParallelTasks.h | 
|  | Support for platform independent lowering of Halide parallel and async mechanisms. 
 | 
|  | LowerWarpShuffles.h | 
|  | Defines the lowering pass that injects CUDA warp shuffle instructions to access storage outside of a GPULane loop. 
 | 
|  | MainPage.h | 
|  | This file only exists to contain the front-page of the documentation. 
 | 
|  | Memoization.h | 
|  | Defines the interface to the pass that injects support for compute_cached roots. 
 | 
|  | Module.h | 
|  | Defines Module, an IR container that fully describes a Halide program. 
 | 
|  | ModulusRemainder.h | 
|  | Routines for statically determining what expressions are divisible by. 
 | 
|  | Monotonic.h | 
|  | Methods for computing whether expressions are monotonic. 
 | 
|  | ObjectInstanceRegistry.h | 
|  | Provides a single global registry of Generators, GeneratorParams, and Params indexed by this pointer. 
 | 
|  | OffloadGPULoops.h | 
|  | Defines a lowering pass to pull loops marked with GPU device APIs to a separate module, and call them through the appropriate host runtime module. 
 | 
|  | OptimizeShuffles.h | 
|  | Defines a lowering pass that replace indirect loads with dynamic_shuffle intrinsics where possible. 
 | 
|  | OutputImageParam.h | 
|  | Classes for declaring output image parameters to halide pipelines. 
 | 
|  | ParallelRVar.h | 
|  | Method for checking if it's safe to parallelize an update definition across a reduction variable. 
 | 
|  | Param.h | 
|  | Classes for declaring scalar parameters to halide pipelines. 
 | 
|  | Parameter.h | 
|  | Defines the internal representation of parameters to halide piplines. 
 | 
|  | PartitionLoops.h | 
|  | Defines a lowering pass that partitions loop bodies into three to handle boundary conditions: A prologue, a simplified steady-stage, and an epilogue. 
 | 
|  | Pipeline.h | 
|  | Defines the front-end class representing an entire Halide imaging pipeline. 
 | 
|  | Prefetch.h | 
|  | Defines the lowering pass that injects prefetch calls when prefetching appears in the schedule. 
 | 
|  | PrefetchDirective.h | 
|  | Defines the PrefetchDirective struct. 
 | 
|  | PrintLoopNest.h | 
|  | Defines methods to print out the loop nest corresponding to a schedule. 
 | 
|  | Profiling.h | 
|  | Defines the lowering pass that injects print statements when profiling is turned on. 
 | 
|  | PurifyIndexMath.h | 
|  | Removes side-effects in integer math. 
 | 
|  | PythonExtensionGen.h | 
|  | Qualify.h | 
|  | Defines methods for prefixing names in an expression with a prefix string. 
 | 
|  | Random.h | 
|  | Defines deterministic random functions, and methods to redirect front-end calls to random_float and random_int to use them. 
 | 
|  | RDom.h | 
|  | Defines the front-end syntax for reduction domains and reduction variables. 
 | 
|  | Realization.h | 
|  | Defines Realization - a vector of Buffer for use in pipelines with multiple outputs. 
 | 
|  | RealizationOrder.h | 
|  | Defines the lowering pass that determines the order in which realizations are injected and groups functions with fused computation loops. 
 | 
|  | RebaseLoopsToZero.h | 
|  | Defines the lowering pass that rewrites loop mins to be 0. 
 | 
|  | Reduction.h | 
|  | Defines internal classes related to Reduction Domains. 
 | 
|  | RegionCosts.h | 
|  | Defines RegionCosts - used by the auto scheduler to query the cost of computing some function regions. 
 | 
|  | RemoveDeadAllocations.h | 
|  | Defines the lowering pass that removes allocate and free nodes that are not used. 
 | 
|  | RemoveExternLoops.h | 
|  | Defines a lowering pass that removes placeholder loops for extern stages. 
 | 
|  | RemoveUndef.h | 
|  | Defines a lowering pass that elides stores that depend on unitialized values. 
 | 
|  | Schedule.h | 
|  | Defines the internal representation of the schedule for a function. 
 | 
|  | ScheduleFunctions.h | 
|  | Defines the function that does initial lowering of Halide Functions into a loop nest using its schedule. 
 | 
|  | Scope.h | 
|  | Defines the Scope class, which is used for keeping track of names in a scope while traversing IR. 
 | 
|  | SelectGPUAPI.h | 
|  | Defines a lowering pass that selects which GPU api to use for each gpu for loop. 
 | 
|  | Serialization.h | 
|  | Simplify.h | 
|  | Methods for simplifying halide statements and expressions. 
 | 
|  | Simplify_Internal.h | 
|  | The simplifier is separated into multiple compilation units with this single shared header to speed up the build. 
 | 
|  | SimplifyCorrelatedDifferences.h | 
|  | Defines a simplification pass for handling differences of correlated expressions. 
 | 
|  | SimplifySpecializations.h | 
|  | Defines pass that try to simplify the RHS/LHS of a function's definition based on its specializations. 
 | 
|  | SkipStages.h | 
|  | Defines a pass that dynamically avoids realizing unnecessary stages. 
 | 
|  | SlidingWindow.h | 
|  | Defines the sliding_window lowering optimization pass, which avoids computing provably-already-computed values. 
 | 
|  | Solve.h | 
|  | SpirvIR.h | 
|  | Defines methods for constructing and encoding instructions into the Khronos format specification known as the Standard Portable Intermediate Representation for Vulkan (SPIR-V). 
 | 
|  | SplitTuples.h | 
|  | Defines the lowering pass that breaks up Tuple-valued realization and productions into several scalar-valued ones. 
 | 
|  | StageStridedLoads.h | 
|  | Defines the compiler pass that converts strided loads into dense loads followed by shuffles. 
 | 
|  | StmtToHTML.h | 
|  | Defines a function to dump an HTML-formatted visualization to a file. 
 | 
|  | StorageFlattening.h | 
|  | Defines the lowering pass that flattens multi-dimensional storage into single-dimensional array access. 
 | 
|  | StorageFolding.h | 
|  | Defines the lowering optimization pass that reduces large buffers down to smaller circular buffers when possible. 
 | 
|  | StrictifyFloat.h | 
|  | Defines a lowering pass to make all floating-point strict for all top-level Exprs. 
 | 
|  | StripAsserts.h | 
|  | Defines the lowering pass that strips asserts when NoAsserts is set. 
 | 
|  | Substitute.h | 
|  | Defines methods for substituting out variables in expressions and statements. 
 | 
|  | Target.h | 
|  | Defines the structure that describes a Halide target. 
 | 
|  | TargetQueryOps.h | 
|  | Defines a lowering pass to lower all target_is() and target_has() helpers. 
 | 
|  | Tracing.h | 
|  | Defines the lowering pass that injects print statements when tracing is turned on. 
 | 
|  | TrimNoOps.h | 
|  | Defines a lowering pass that truncates loops to the region over which they actually do something. 
 | 
|  | Tuple.h | 
|  | Defines Tuple - the front-end handle on small arrays of expressions. 
 | 
|  | Type.h | 
|  | Defines halide types. 
 | 
|  | UnifyDuplicateLets.h | 
|  | Defines the lowering pass that coalesces redundant let statements. 
 | 
|  | UniquifyVariableNames.h | 
|  | Defines the lowering pass that renames all variables to have unique names. 
 | 
|  | UnpackBuffers.h | 
|  | Defines the lowering pass that unpacks buffer arguments onto the symbol table. 
 | 
|  | UnrollLoops.h | 
|  | Defines the lowering pass that unrolls loops marked as such. 
 | 
|  | UnsafePromises.h | 
|  | Defines the lowering pass that removes unsafe promises. 
 | 
|  | Util.h | 
|  | Various utility functions used internally Halide. 
 | 
|  | Var.h | 
|  | Defines the Var - the front-end variable. 
 | 
|  | VectorizeLoops.h | 
|  | Defines the lowering pass that vectorizes loops marked as such. 
 | 
|  | WasmExecutor.h | 
|  | Support for running Halide-compiled Wasm code in-process. 
 | 
|  | WrapCalls.h | 
|  | Defines pass to replace calls to wrapped Functions with their wrappers. 
 |