Halide 19.0.0
Halide compiler and libraries
Loading...
Searching...
No Matches
src Directory Reference

Directories

 autoschedulers
 
 runtime
 

Files

 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.
 
 ExtractTileOperations.h
 Defines the lowering pass that injects calls to tile intrinsics that support AMX instructions.
 
 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_Headers.h
 
 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.