-aie-assign-runtime-sequence-bd-idsAssign IDs to Buffer Descriptors Configured in the Runtime Sequence
-aie-create-coresCreate CoreOp, MemOp, and FlowOp of AIE dialect
Lower toplevel ‘call’ operations with implicit data movement into aie.core, aie.mem, and aie.flow operations with explicit data movement. The tile tile associated with the operations is inferred based on the aie.x and aie.y attributes of the call operation. e.g.:
func.func @aie_task(%arg0: memref<256xi32>, %arg1: i32) -> () {
...
return
}
%a = constant 0 : i32
func.call @aie_task(%buf, %a) { aie.x = 1, aie.y = 1 } : (memref<256xi32>, i32) -> ()
will result in:
%0 = AIE.tile(1, 1)
%1 = AIE.buffer(%0) : memref<256xi32>
%2 = AIE.buffer(%0) : memref<1xi32>
%c0_i32 = constant 0 : i32
%5 = AIE.core(%0) {
...
}
In this case, each argument to aie_task results in an explicit buffer accessed by the core.
-aie-create-locksGenerate physical lock ops from logical lock (token) ops
Tokens represent high-level buffer synchronization through a sequence of pipeline stages. This pass lowers token operations into physical aie.lock operations.
-aie-ctrl-packet-infer-tilesInfer aie.tile ops from aiex.control_packet addresses
-aie-ctrl-packet-to-dmaLowers npu.control_packet op to npu.dma_memcpy_nd op
-aie-dma-tasks-to-npuLower configured DMA tasks to NPU instructions
-aie-dma-to-npu-aie-expand-load-pdiExpand load_pdi operations to explicit configuration sequences
This pass transforms load_pdi { device_ref = @device } operations as follows:
@empty_N.load_pdi { device_ref = @empty_N } – this causes a device reset.The configuration operations are generated by converting the referenced device’s configuration to a transaction binary and then disassembling it into MLIR operations.
-aie-herd-routingLowering herds with place and route ops to AIE cores, mems, and switchboxes
An experimental pass which elaborates herd operations (e.g. aie.herd, aie.iter, aie.select) into an explicit representation (e.g. aie.core, aie.mem, etc.).
-aie-legalize-ctrl-packetLegalize control packet operations for target
-aie-lower-broadcast-packetReplace combination of broadcast and packet-switch by packet-flow
Replace combination of broadcast and packet-switch by packet-flow
-aie-lower-memcpyLower aie.memcpy operations to Flows and DMA programs
aie.memcpy operations are an experimental high-level abstraction which move data from one buffer to another. This pass lowers them into appropriate aie.flow and aie.mem operations.
-aie-lower-multicastLower AIE.multicast operation to AIE.flow operations
This pass replaces AIE.multicast operation with the equivalent number of AIE.flow operations. The lowered AIE.flow operations have the same source port but different destinations.
-aie-lower-set-lockLowers all aiex.set_lock operations to npu.write32Op
-aie-materialize-bd-chainsConcretize aie.bd_chain ops at aiex.start_task use sites
Inlines pre-defined aie.bd_chains at aiex.start_task use sites to become aiex.dma_configure_task and aiex.dma_start_task ops.
-aie-materialize-runtime-sequencesTurn aiex.configure into configuration primitives and inline aiex.run calls
Turns top-level aiex.configure into load PDI firmware instructions that set up the requested configuration.
Inlines calls to other runtime sequences using aiex.run into the calling runtime sequence, resolving references within them to the device containing the definition.
This pass requires ObjectFIFOs to be lowered first; apply the ObjectFIFO stateful transform before applying this pass.
-aie-substitute-shim-dma-allocationsReplace symbolic references to aie.shim_dma_allocation ops with their (tile, direction, channel) triple
-aie-transform-bfp-typesTransform bfp types to standard builtin types
Lowers bfp types to standard builtin types. Adapts operations as necessary to accomodate for bfp data movement.
-aie-txn-to-ctrl-packetConvert transaction operations to control packet operations
-aiex-standard-loweringLower AIEX operations
AIEX Npu Ops are removed.