LLVMCPU
-iree-convert-to-llvm
link
Perform final conversion from Linalg/HAL/Shape/Vector/Standard to LLVMIR dialect
Optionslink
-reassociateFpReductions : Specifies if FP add and mult reductions can be reordered
-target-triple : Code generation target triple.
-target-data-layout : Code generation target data layout.
-iree-llvmcpu-2d-scalable-to-1d-scalable
link
Pass to replace unsupported scalable dimensions with loops.
Optionslink
-assume-arm-sme : Assume the current target is ArmSME (used for testing)
-iree-llvmcpu-assign-constant-ordinals
link
Assigns executable constant ordinals across all LLVMCPU variants.
-iree-llvmcpu-assign-import-ordinals
link
Assigns executable import ordinals across all LLVMCPU variants.
-iree-llvmcpu-check-ir-before-llvm-conversion
link
Checks CPU backend specific IR constraints (like no allocas)
Optionslink
-fail-on-out-of-bounds : Fails if the upper bound of dynamic stack allocation cannot beresolved or is more than the limit.
-iree-llvmcpu-emit-vectorization-remarks
link
Emit vectorization remarks on Linalg ops
-iree-llvmcpu-expand-f16-op-to-f32
link
Preform f16 opertaions by expanding them to f32.
Pass to handel F16 bit operations, but converting f16 operands to F32. Currently this pass is handeling fmaxf conversion from f16 to f32, and then returing a f16 output back after preforming the operation. Can handle more operations if required in future.
-iree-llvmcpu-link-executables
link
Links LLVMCPU HAL executables within the top-level program module.
Optionslink
-target : Target backend name whose executables will be linked by this pass.
-iree-llvmcpu-lower-executable-target
link
Lower executable target using an IREE::HAL::DispatchLoweringPassPipeline
Pass to lower the module an hal.executable.variant operation to external dialect. Currently this pass lowers to LLVM dialect, but could be generalized to lower to any "final" dialect like SPIR-V/NVVM, etc.
-iree-llvmcpu-mmt4d-vector-lowering
link
Apply vector lowering logic to vector ops
Optionslink
-vector-contract-custom-kernels : Flag to enable or disable vector contract custom kernels.
-iree-llvmcpu-peel
link
Pass to perform peeling on non-distributed loops.
-iree-llvmcpu-select-lowering-strategy
link
Select a IREE::HAL::DispatchLoweringPassPipeline for lowering the variant
Pass to select a lowering strategy for a hal.executable.variant operation. The variant is annotated with the selected strategies, which are subsequently ingested by LLVMCPULowerExecutableTargetPass.
-iree-llvmcpu-split-reduction
link
Pass to splitReduce linalg operations.
Optionslink
-enable-fp-reduction-reordering : Flag to enable reduction reordering on floating points.
-iree-llvmcpu-synchronize-symbol-visibility
link
Synchronizes LLVM linkage with MLIR symbol visibility
-iree-llvmcpu-tile
link
Pass to tile TilingInterface operations.
Optionslink
-tiling-level : Use default tiling level used to retrieve the configuration from lowering_config
-iree-llvmcpu-tile-and-fuse
link
Pass to tile and fuse TilingInterface operations.
Optionslink
-tiling-level : Use default tiling level used to retrieve the configuration from lowering_config
-iree-llvmcpu-tile-root-and-fuse-producer-consumer
link
Pass to tile root op and fuse with producer and consumer TilingInterface ops.
Optionslink
-tiling-level : Use default tiling level used to retrieve the configuration from lowering_config
-only-fuse-producer-input-operands : Specifies if we only want to fuse producer's input operands. This is helpful to tile&fuse in case of reduction dimensions.
-iree-llvmcpu-unfuse-fma-pass
link
Convert llvm.fma into unfused mulf and addf ops
-iree-llvmcpu-vector-contract-custom-kernels
link
Enable custom kernels (inline assembly or intrinsics) for some vector.contract ops
-iree-llvmcpu-vector-shape-cast-lowering
link
Pass to lower vector.shape_cast ops.
-iree-llvmcpu-vector-transpose-lowering
link
Pass to lower vector.transpose ops.
Optionslink
-lower-vector-transpose-to-avx2 : Add specific transpose to avx2 lowering patterns.
-iree-llvmcpu-verify-linalg-transform-legality
link
Verify that only supported IR constructs are passed to the compiler.
-iree-llvmcpu-verify-vector-size-legality
link
Signals errors when there are large vectors in the IR. I.e., one ofthe vector sizes is greater thanclMaxAllowedNumberOfNativeVectors * native_vector_size. For scalablevectors, it assumes that the vscale value is always 1. It may be anunderestimate if the runtime larger than 1, but it should still catchunreasonable vector sizes.
-iree-llvmcpu-virtual-vector-lowering
link
Pass to lower high level vector operations like contract or multidim reduce ops to lower level vector ops.
Optionslink
-split-transfers : Split vector transfers between slow (masked) and fast "
"(unmasked) variants. Possible options are:\n"
"\tnone [default]: keep unsplit vector.transfer and pay the price\n"
"\tlinalg-copy: use linalg.fill + linalg.generic for the slow path\n"
"\tvector-transfers: use extra small unmasked vector.transfers for"
" the slow path\n
-enable-arm-i8mm : Enables arm i8mm lowering patterns