halide_target_feature_t#
-
enum halide_target_feature_t#
Optional features a compilation Target can have.
Be sure to keep this in sync with:
the Feature enum in Target.h,
the implementation of get_runtime_compatible_target in Target.cpp,
PyEnums.cpp, if you add a new feature.
Values:
-
enumerator halide_target_feature_jit#
Generate code that will run immediately inside the calling process.
-
enumerator halide_target_feature_debug#
Turn on debug info and output for runtime code.
-
enumerator halide_target_feature_enable_backtraces#
Preserve frame pointers and include unwind tables to support accurate backtraces for debugging and profiling.
-
enumerator halide_target_feature_no_asserts#
Disable all runtime checks, for slightly tighter code.
-
enumerator halide_target_feature_no_bounds_query#
Disable the bounds querying functionality.
-
enumerator halide_target_feature_sse41#
Use SSE 4.1 and earlier instructions. Only relevant on x86.
-
enumerator halide_target_feature_avx#
Use AVX 1 instructions. Only relevant on x86.
-
enumerator halide_target_feature_avx2#
Use AVX 2 instructions. Only relevant on x86.
-
enumerator halide_target_feature_avxvnni#
Enable the AVX-VNNI features supported by AVX2 instructions. Supports 256-bit VNNI instructions without EVEX encoding.
-
enumerator halide_target_feature_fma#
Enable x86 FMA instruction.
-
enumerator halide_target_feature_fma4#
Enable x86 (AMD) FMA4 instruction set.
-
enumerator halide_target_feature_f16c#
Enable x86 16-bit float support.
-
enumerator halide_target_feature_armv7s#
Generate code for ARMv7s. Only relevant for 32-bit ARM.
-
enumerator halide_target_feature_no_neon#
Avoid using NEON instructions. Only relevant for 32-bit ARM.
-
enumerator halide_target_feature_vsx#
Use VSX instructions. Only relevant on POWERPC.
-
enumerator halide_target_feature_power_arch_2_07#
Use POWER ISA 2.07 new instructions. Only relevant on POWERPC.
-
enumerator halide_target_feature_cuda#
Enable the CUDA runtime. Defaults to compute capability 2.0 (Fermi).
-
enumerator halide_target_feature_cuda_capability30#
Enable CUDA compute capability 3.0 (Kepler).
-
enumerator halide_target_feature_cuda_capability32#
Enable CUDA compute capability 3.2 (Tegra K1).
-
enumerator halide_target_feature_cuda_capability35#
Enable CUDA compute capability 3.5 (Kepler).
-
enumerator halide_target_feature_cuda_capability50#
Enable CUDA compute capability 5.0 (Maxwell).
-
enumerator halide_target_feature_cuda_capability61#
Enable CUDA compute capability 6.1 (Pascal).
-
enumerator halide_target_feature_cuda_capability70#
Enable CUDA compute capability 7.0 (Volta).
-
enumerator halide_target_feature_cuda_capability75#
Enable CUDA compute capability 7.5 (Turing).
-
enumerator halide_target_feature_cuda_capability80#
Enable CUDA compute capability 8.0 (Ampere).
-
enumerator halide_target_feature_cuda_capability86#
Enable CUDA compute capability 8.6 (Ampere).
-
enumerator halide_target_feature_cuda_capability89#
Enable CUDA compute capability 8.9 (Ada).
-
enumerator halide_target_feature_cuda_capability90#
Enable CUDA compute capability 9.0 (Hopper).
-
enumerator halide_target_feature_cuda_capability100#
Enable CUDA compute capability 10.0 (Blackwell).
-
enumerator halide_target_feature_cuda_capability120#
Enable CUDA compute capability 12.0 (Blackwell).
-
enumerator halide_target_feature_opencl#
Enable the OpenCL runtime.
-
enumerator halide_target_feature_cl_doubles#
Enable double support on OpenCL targets.
-
enumerator halide_target_feature_cl_atomic64#
Enable 64-bit atomics operations on OpenCL targets.
-
enumerator halide_target_feature_user_context#
Generated code takes a user_context pointer as first argument.
-
enumerator halide_target_feature_profile#
Launch a sampling profiler alongside the Halide pipeline that monitors and reports the runtime used by each Func. Also injects a synchronous halide_device_sync after every GPU kernel launch so the profiler can attribute compute time correctly — see halide_profiler_func_stats for the trade-off.
-
enumerator halide_target_feature_no_runtime#
Do not include a copy of the Halide runtime in any generated object file or assembly.
-
enumerator halide_target_feature_metal#
Enable the (Apple) Metal runtime.
-
enumerator halide_target_feature_c_plus_plus_mangling#
Generate C++ mangled names for result function, et al.
-
enumerator halide_target_feature_large_buffers#
Enable 64-bit buffer indexing to support buffers > 2GB. Ignored if bits != 64.
-
enumerator halide_target_feature_hvx_128#
Enable HVX 128 byte mode.
-
enumerator halide_target_feature_hvx_v62#
Enable Hexagon v62 architecture.
-
enumerator halide_target_feature_fuzz_float_stores#
On every floating point store, set the last bit of the mantissa to zero. Pipelines for which the output is very different with this feature enabled may also produce very different output on different processors.
-
enumerator halide_target_feature_soft_float_abi#
Enable soft float ABI. This only enables the soft float ABI calling convention, which does not necessarily use soft floats.
-
enumerator halide_target_feature_msan#
Enable hooks for MSAN support.
-
enumerator halide_target_feature_avx512#
Enable the base AVX512 subset supported by all AVX512 architectures. The specific feature sets are AVX-512F and AVX512-CD. See https://en.wikipedia.org/wiki/AVX-512 for a description of each AVX subset.
-
enumerator halide_target_feature_avx512_knl#
Enable the AVX512 features supported by Knight’s Landing chips, such as the Xeon Phi x200. This includes the base AVX512 set, and also AVX512-CD and AVX512-ER.
-
enumerator halide_target_feature_avx512_skylake#
Enable the AVX512 features supported by Skylake Xeon server processors. This adds AVX512-VL, AVX512-BW, and AVX512-DQ to the base set. The main difference from the base AVX512 set is better support for small integer ops. Note that this does not include the Knight’s Landing features. Note also that these features are not available on Skylake desktop and mobile processors.
-
enumerator halide_target_feature_avx512_cannonlake#
Enable the AVX512 features expected to be supported by future Cannonlake processors. This includes all of the Skylake features, plus AVX512-IFMA and AVX512-VBMI.
-
enumerator halide_target_feature_avx512_zen4#
Enable the AVX512 features supported by Zen4 processors. This include all of the Cannonlake features, plus AVX512-VNNI, AVX512-BF16, and more.
-
enumerator halide_target_feature_avx512_zen5#
Enable the AVX512 features supported by Zen5 processors. This include all of the Cannonlake features, plus AVX512-VNNI, AVX512-BF16, AVX-VNNI and more.
-
enumerator halide_target_feature_avx512_sapphirerapids#
Enable the AVX512 features supported by Sapphire Rapids processors. This include all of the Zen4 features, plus AVX-VNNI and AMX instructions.
-
enumerator halide_target_feature_trace_loads#
Trace all loads done by the pipeline. Equivalent to calling Func::trace_loads on every non-inlined Func.
-
enumerator halide_target_feature_trace_stores#
Trace all stores done by the pipeline. Equivalent to calling Func::trace_stores on every non-inlined Func.
-
enumerator halide_target_feature_trace_realizations#
Trace all realizations done by the pipeline. Equivalent to calling Func::trace_realizations on every non-inlined Func.
-
enumerator halide_target_feature_trace_pipeline#
Trace the pipeline.
-
enumerator halide_target_feature_hvx_v65#
Enable Hexagon v65 architecture.
-
enumerator halide_target_feature_hvx_v66#
Enable Hexagon v66 architecture.
-
enumerator halide_target_feature_hvx_v68#
Enable Hexagon v68 architecture.
-
enumerator halide_target_feature_cl_half#
Enable half support on OpenCL targets.
-
enumerator halide_target_feature_strict_float#
Turn off all non-IEEE floating-point optimization. Currently applies only to LLVM targets.
-
enumerator halide_target_feature_tsan#
Enable hooks for TSAN support.
-
enumerator halide_target_feature_asan#
Enable hooks for ASAN support.
-
enumerator halide_target_feature_d3d12compute#
Enable Direct3D 12 Compute runtime.
-
enumerator halide_target_feature_check_unsafe_promises#
Insert assertions for promises.
-
enumerator halide_target_feature_hexagon_dma#
Enable Hexagon DMA buffers.
-
enumerator halide_target_feature_embed_bitcode#
Emulate clang -fembed-bitcode flag.
-
enumerator halide_target_feature_enable_llvm_loop_opt#
Enable loop vectorization + unrolling in LLVM. Overrides halide_target_feature_disable_llvm_loop_opt. (Ignored for non-LLVM targets.).
-
enumerator halide_target_feature_wasm_mvponly#
Disable all extensions to WebAssembly codegen (including +sign-ext and +nontrapping-fptoint, which are on by default).
-
enumerator halide_target_feature_wasm_simd128#
Enable +simd128 instructions for WebAssembly codegen.
-
enumerator halide_target_feature_wasm_threads#
Enable use of threads in WebAssembly codegen. Requires the use of a wasm runtime that provides pthread-compatible wrappers (typically, Emscripten with the -pthreads flag). Unsupported under WASI.
-
enumerator halide_target_feature_wasm_bulk_memory#
Enable +bulk-memory instructions for WebAssembly codegen.
-
enumerator halide_target_feature_webgpu#
Enable the WebGPU runtime.
-
enumerator halide_target_feature_sve#
Enable ARM Scalable Vector Extensions.
-
enumerator halide_target_feature_sve2#
Enable ARM Scalable Vector Extensions v2.
-
enumerator halide_target_feature_sme2#
Enable ARM Scalable Matrix Extensions v2.
-
enumerator halide_target_feature_sme_svl128#
Assume ARM SME streaming vector length is 128 bits.
-
enumerator halide_target_feature_sme_svl256#
Assume ARM SME streaming vector length is 256 bits.
-
enumerator halide_target_feature_sme_svl512#
Assume ARM SME streaming vector length is 512 bits.
-
enumerator halide_target_feature_sme_svl1024#
Assume ARM SME streaming vector length is 1024 bits.
-
enumerator halide_target_feature_sme_svl2048#
Assume ARM SME streaming vector length is 2048 bits.
-
enumerator halide_target_feature_egl#
Force use of EGL support.
-
enumerator halide_target_feature_arm_dot_prod#
Enable ARMv8.2-a dotprod extension (i.e. udot and sdot instructions).
-
enumerator halide_target_feature_arm_fp16#
Enable ARMv8.2-a half-precision floating point data processing.
-
enumerator halide_llvm_large_code_model#
Use the LLVM large code model to compile.
-
enumerator halide_target_feature_rvv#
Enable RISCV “V” Vector Extension.
-
enumerator halide_target_feature_armv8a#
Enable ARMv8a instructions.
-
enumerator halide_target_feature_armv81a#
Enable ARMv8.1a instructions.
-
enumerator halide_target_feature_armv82a#
Enable ARMv8.2a instructions.
-
enumerator halide_target_feature_armv83a#
Enable ARMv8.3a instructions.
-
enumerator halide_target_feature_armv84a#
Enable ARMv8.4a instructions.
-
enumerator halide_target_feature_armv85a#
Enable ARMv8.5a instructions.
-
enumerator halide_target_feature_armv86a#
Enable ARMv8.6a instructions.
-
enumerator halide_target_feature_armv87a#
Enable ARMv8.7a instructions.
-
enumerator halide_target_feature_armv88a#
Enable ARMv8.8a instructions.
-
enumerator halide_target_feature_armv89a#
Enable ARMv8.9a instructions.
-
enumerator halide_target_feature_sanitizer_coverage#
Enable hooks for SanitizerCoverage support.
-
enumerator halide_target_feature_profile_by_timer#
Alternative to halide_target_feature_profile using timer interrupt for systems without threads or applicartions that need to avoid them.
-
enumerator halide_target_feature_spirv#
Enable SPIR-V code generation support.
-
enumerator halide_target_feature_vulkan#
Enable Vulkan runtime support.
-
enumerator halide_target_feature_vulkan_int8#
Enable Vulkan 8-bit integer support.
-
enumerator halide_target_feature_vulkan_int16#
Enable Vulkan 16-bit integer support.
-
enumerator halide_target_feature_vulkan_int64#
Enable Vulkan 64-bit integer support.
-
enumerator halide_target_feature_vulkan_float16#
Enable Vulkan 16-bit float support.
-
enumerator halide_target_feature_vulkan_float64#
Enable Vulkan 64-bit float support.
-
enumerator halide_target_feature_vulkan_version10#
Enable Vulkan v1.0 runtime target support.
-
enumerator halide_target_feature_vulkan_version12#
Enable Vulkan v1.2 runtime target support.
-
enumerator halide_target_feature_vulkan_version13#
Enable Vulkan v1.3 runtime target support.
-
enumerator halide_target_feature_semihosting#
Used together with Target::NoOS for the baremetal target built with semihosting library and run with semihosting mode where minimum I/O communication with a host PC is available.
-
enumerator halide_target_feature_avx10_1#
Intel AVX10 version 1 support. vector_bits is used to indicate width.
-
enumerator halide_target_feature_x86_apx#
Intel x86 APX support. Covers initial set of features released as APX: egpr,push2pop2,ppx,ndd .
-
enumerator halide_target_feature_simulator#
Target is for a simulator environment. Currently only applies to iOS.
-
enumerator halide_target_feature_hlsl_sm60#
Enable D3D12 Shader Model 6.0 (DXIL, 64-bit types, wave intrinsics). Requires d3d12compute. Uses DXC compiler.
-
enumerator halide_target_feature_hlsl_sm61#
Enable D3D12 Shader Model 6.1.
-
enumerator halide_target_feature_hlsl_sm62#
Enable D3D12 Shader Model 6.2 (native 16-bit scalar types with -enable-16bit-types).
-
enumerator halide_target_feature_hlsl_sm63#
Enable D3D12 Shader Model 6.3.
-
enumerator halide_target_feature_hlsl_sm64#
Enable D3D12 Shader Model 6.4.
-
enumerator halide_target_feature_hlsl_sm65#
Enable D3D12 Shader Model 6.5.
-
enumerator halide_target_feature_hlsl_sm66#
Enable D3D12 Shader Model 6.6 (64-bit atomics, packed 8-bit types).
-
enumerator halide_target_feature_hlsl_sm67#
Enable D3D12 Shader Model 6.7.
-
enumerator halide_target_feature_hlsl_sm68#
Enable D3D12 Shader Model 6.8.
-
enumerator halide_target_feature_hlsl_sm69#
Enable D3D12 Shader Model 6.9 (long vectors 5-1024 lanes, native 16-bit/wave/int64 required).
-
enumerator halide_target_feature_end#
A sentinel. Every target is considered to have this feature, and setting this feature does nothing.