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