Halide
File List
Here is a list of all files with brief descriptions:
 AddImageChecks.hDefines the lowering pass that adds the assertions that validate input and output buffers
 AddParameterChecks.hDefines the lowering pass that adds the assertions that validate scalar parameters
 AlignLoads.hDefines a lowering pass that rewrites unaligned loads into sequences of aligned loads
 AllocationBoundsInference.hDefines the lowering pass that determines how large internal allocations should be
 android_ioctl.h
 ApplySplit.hDefines method that returns a list of let stmts, substitutions, and predicates to be added given a split schedule
 Argument.hDefines a type used for expressing the type signature of a generated halide pipeline
 AssociativeOpsTable.hTables listing associative operators and their identities
 Associativity.hMethods for extracting an associative operator from a Func's update definition if there is any and computing the identity of the associative operator
 AutoSchedule.hDefines the method that does automatic scheduling of Funcs within a pipeline
 AutoScheduleUtils.hDefines util functions that used by auto scheduler
 BoundaryConditions.hSupport for imposing boundary conditions on Halide::Funcs
 Bounds.hMethods for computing the upper and lower bounds of an expression, and the regions of a function read or written by a statement
 BoundsInference.hDefines the bounds_inference lowering pass
 Buffer.h
 CanonicalizeGPUVars.hDefines the lowering pass that canonicalize the GPU var names over
 cl_functions.h
 Closure.hProvides Closure class
 CodeGen_ARM.hDefines the code-generator for producing ARM machine code
 CodeGen_C.hDefines an IRPrinter that emits C++ code equivalent to a halide stmt
 CodeGen_GPU_Dev.hDefines the code-generator interface for producing GPU device code
 CodeGen_GPU_Host.hDefines the code-generator for producing GPU host code
 CodeGen_Hexagon.hDefines the code-generator for producing Hexagon machine code
 CodeGen_Internal.hDefines 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.hDefines the base-class for all architecture-specific code generators that use llvm
 CodeGen_Metal_Dev.hDefines the code-generator for producing Apple Metal shading language kernel code
 CodeGen_MIPS.hDefines the code-generator for producing MIPS machine code
 CodeGen_OpenCL_Dev.hDefines the code-generator for producing OpenCL C kernel code
 CodeGen_OpenGL_Dev.hDefines the code-generator for producing GLSL kernel code
 CodeGen_OpenGLCompute_Dev.hDefines the code-generator for producing GLSL kernel code for OpenGL Compute
 CodeGen_Posix.hDefines a base-class for code-generators on posixy cpu platforms
 CodeGen_PowerPC.hDefines the code-generator for producing POWERPC machine code
 CodeGen_PTX_Dev.hDefines the code-generator for producing CUDA host code
 CodeGen_X86.hDefines the code-generator for producing x86 machine code
 ConciseCasts.hDefines concise cast and saturating cast operators to make it easier to read cast-heavy code
 CPlusPlusMangle.hA simple function to get a C++ mangled function name for a function
 CSE.hDefines a pass for introducing let expressions to wrap common sub-expressions
 cuda_functions.h
 Debug.hDefines functions for debug logging during code generation
 DebugArguments.hDefines a lowering pass that injects debug statements inside a LoweredFunc
 DebugToFile.hDefines the lowering pass that injects code at the end of every realization to dump functions to a file for debugging
 Definition.hDefines the internal representation of a halide function's definition and related classes
 Deinterleave.hDefines methods for splitting up a vector into the even lanes and the odd lanes
 device_buffer_utils.h
 device_interface.h
 DeviceArgument.hDefines helpers for passing arguments to separate devices, such as GPUs
 DeviceInterface.hMethods for managing device allocations when jitting
 Dimension.hDefines the Dimension utility class for Halide pipelines
 dlib.h
 EarlyFree.hDefines 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.hMethod to eliminate vectors of booleans from IR
 Error.h
 Expr.hBase classes for Halide expressions (Halide::Expr) and statements (Halide::Internal::Stmt)
 ExprUsesVar.hDefines a method to determine if an expression depends on some variables
 Extern.hConvenience 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
 ExternalCode.h
 FastIntegerDivide.h
 FindCalls.hDefines analyses to extract the functions called a function
 Float16.h
 Func.hDefines Func - the front-end handle on a halide function, and related classes
 Function.hDefines the internal representation of a halide function and related classes
 FunctionPtr.h
 FuseGPUThreadLoops.hDefines the lowering pass that fuses and normalizes loops over gpu threads to target CUDA, OpenCL, and Metal
 FuzzFloatStores.hDefines a lowering pass that messes with floating point stores
 Generator.hGenerator is a class used to encapsulate the building of Funcs in user pipelines
 halide_hexagon_remote.h
 HalideBuffer.hDefines a Buffer type that wraps from buffer_t and adds functionality, and methods for more conveniently iterating over the samples in a buffer_t outside of Halide code
 HalideFooter.h
 HalideRuntime.hSet a custom malloc and free for halide to use
 HalideRuntimeCuda.hRoutines specific to the Halide Cuda runtime
 HalideRuntimeHexagonHost.hRoutines specific to the Halide Hexagon host-side runtime
 HalideRuntimeMetal.hRoutines specific to the Halide Metal runtime
 HalideRuntimeOpenCL.hRoutines specific to the Halide OpenCL runtime
 HalideRuntimeOpenGL.hRoutines specific to the Halide OpenGL runtime
 HalideRuntimeOpenGLCompute.hRoutines specific to the Halide OpenGL Compute runtime
 HalideRuntimeQurt.hRoutines specific to the Halide QuRT runtime
 HexagonOffload.hDefines 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.hTools for optimizing IR for Hexagon
 ImageParam.hClasses for declaring image parameters to halide pipelines
 InferArguments.hInterface for a visitor to infer arguments used in a body Stmt
 InjectHostDevBufferCopies.hDefines the lowering passes that deal with host and device buffer flow
 InjectOpenGLIntrinsics.hDefines the lowering pass that injects texture loads and texture stores for opengl
 Inline.hMethods for replacing calls to functions with their definitions
 InlineReductions.hDefines some inline reductions: sum, product, minimum, maximum
 IntegerDivisionTable.hTables telling us how to do integer division via fixed-point multiplication for various small constants
 Interval.hDefines the Interval class
 Introspection.hDefines methods for introspecting in C++
 IntrusivePtr.hSupport classes for reference-counting via intrusive shared pointers
 IR.hSubtypes for Halide expressions (Halide::Expr) and statements (Halide::Internal::Stmt)
 IREquality.hMethods to test Exprs and Stmts for equality of value
 IRMatch.hDefines a method to match a fragment of IR against a pattern containing wildcards
 IRMutator.hDefines a base class for passes over the IR that modify it
 IROperator.hDefines various operator overloads and utility functions that make it more pleasant to work with Halide expressions
 IRPrinter.hThis 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.hDefines the base class for things that recursively walk over the IR
 JITModule.hDefines the struct representing lifetime and dependencies of a JIT compiled halide pipeline
 known_symbols.h
 Lambda.hConvenience functions for creating small anonymous Halide functions
 Lerp.hDefines methods for converting a lerp intrinsic into Halide IR
 LICM.hMethods for lifting loop invariants out of inner loops
 LLVM_Headers.h
 LLVM_Output.h
 LLVM_Runtime_Linker.hSupport for linking LLVM modules that comprise the runtime
 log.h
 LoopCarry.h
 Lower.hDefines the function that generates a statement that computes a Halide function using its schedule
 MainPage.hThis file only exists to contain the front-page of the documentation
 MatlabWrapper.hProvides an output function to generate a Matlab mex API compatible object file
 Memoization.hDefines the interface to the pass that injects support for compute_cached roots
 metal_objc_platform_dependent.h
 mex_functions.h
 mini_cl.h
 mini_cuda.h
 mini_opengl.h
 mini_qurt.h
 Module.hDefines Module, an IR container that fully describes a Halide program
 ModulusRemainder.hRoutines for statically determining what expressions are divisible by
 Monotonic.hMethods for computing whether expressions are monotonic
 objc_support.h
 ObjectInstanceRegistry.hProvides a single global registry of Generators, GeneratorParams, and Params indexed by this pointer
 OutputImageParam.hClasses for declaring output image parameters to halide pipelines
 Outputs.hProvides output functions to enable writing out various build objects from Halide Module objects
 ParallelRVar.hMethod for checking if it's safe to parallelize an update definition across a reduction variable
 Param.hClasses for declaring scalar parameters to halide pipelines
 Parameter.hDefines the internal representation of parameters to halide piplines
 PartitionLoops.hDefines a lowering pass that partitions loop bodies into three to handle boundary conditions: A prologue, a simplified steady-stage, and an epilogue
 Pipeline.hDefines the front-end class representing an entire Halide imaging pipeline
 pipeline_context.h
 Prefetch.hDefines the lowering pass that injects prefetch calls when prefetching appears in the schedule
 printer.h
 PrintLoopNest.hDefines methods to print out the loop nest corresponding to a schedule
 Profiling.hDefines the lowering pass that injects print statements when profiling is turned on
 Qualify.hDefines methods for prefixing names in an expression with a prefix string
 Random.hDefines deterministic random functions, and methods to redirect front-end calls to random_float and random_int to use them
 RDom.hDefines the front-end syntax for reduction domains and reduction variables
 RealizationOrder.hDefines the lowering pass that determines the order in which realizations are injected
 Reduction.hDefines internal classes related to Reduction Domains
 RegionCosts.hDefines RegionCosts - used by the auto scheduler to query the cost of computing some function regions
 RemoveDeadAllocations.hDefines the lowering pass that removes allocate and free nodes that are not used
 RemoveTrivialForLoops.hDefines the lowering pass removes for loops of size 1
 RemoveUndef.hDefines a lowering pass that elides stores that depend on unitialized values
 RoundingMode.h
 runtime_internal.h
 Schedule.hDefines the internal representation of the schedule for a function
 ScheduleFunctions.hDefines the function that does initial lowering of Halide Functions into a loop nest using its schedule
 ScheduleParam.hClasses for declaring scalar parameters to halide pipelines
 Scope.hDefines the Scope class, which is used for keeping track of names in a scope while traversing IR
 scoped_mutex_lock.h
 scoped_spin_lock.h
 SelectGPUAPI.hDefines a lowering pass that selects which GPU api to use for each gpu for loop
 sim_protocol.h
 Simplify.hMethods for simplifying halide statements and expressions
 SimplifySpecializations.hDefines pass that try to simplify the RHS/LHS of a function's definition based on its specializations
 SkipStages.hDefines a pass that dynamically avoids realizing unnecessary stages
 SlidingWindow.hDefines the sliding_window lowering optimization pass, which avoids computing provably-already-computed values
 Solve.h
 SplitTuples.hDefines the lowering pass that breaks up Tuple-valued realization and productions into several scalar-valued ones
 StmtToHtml.hDefines a function to dump an HTML-formatted stmt to a file
 StorageFlattening.hDefines the lowering pass that flattens multi-dimensional storage into single-dimensional array access
 StorageFolding.hDefines the lowering optimization pass that reduces large buffers down to smaller circular buffers when possible
 Substitute.hDefines methods for substituting out variables in expressions and statements
 Target.hDefines the structure that describes a Halide target
 thread_pool_common.h
 ThreadPool.hDefine a simple thread pool utility that is modeled on the api of C++11 std::async(); since implementation details of std::async can vary considerably, with no control over thread spawning, this class allows us to use the same model but with precise control over thread usage
 Tracing.hDefines the lowering pass that injects print statements when tracing is turned on
 TrimNoOps.hDefines a lowering pass that truncates loops to the region over which they actually do something
 Tuple.hDefines Tuple - the front-end handle on small arrays of expressions
 Type.hDefines halide types
 UnifyDuplicateLets.hDefines the lowering pass that coalesces redundant let statements
 UniquifyVariableNames.hDefines the lowering pass that renames all variables to have unique names
 UnpackBuffers.hDefines the lowering pass that unpacks buffer arguments onto the symbol table
 UnrollLoops.hDefines the lowering pass that unrolls loops marked as such
 Util.hVarious utility functions used internally Halide
 Var.hDefines the Var - the front-end variable
 VaryingAttributes.hThis file contains functions that detect expressions in a GLSL scheduled function that may be evaluated per vertex and interpolated across the domain instead of being evaluated at each pixel location across the image
 VectorizeLoops.hDefines the lowering pass that vectorizes loops marked as such
 WrapCalls.hDefines pass to replace calls to wrapped Functions with their wrappers
 WrapExternStages.hDefines a pass over a Module that adds wrapper LoweredFuncs to any extern stages that need them