AscVF passes
-ascvf-eliminate-common-mask
Eliminates duplicate mask operations within VFGroupOp
Removes redundant UpdateMaskOp and CreateMaskOp operations inside VFGroupOp regions by replacing uses of duplicate masks with the first occurrence and deleting the duplicates.
-ascvf-eliminate-data-transfer
Eliminates redundant load/store operations in VFGroupOp
Performs three optimizations: eliminates loads after stores by replacing the loaded value with the stored value, removes stores that are immediately overwritten, and merges repeated loads from the same memory location.
-ascvf-find-vf-group
Finds and groups L2 operations into VFGroupOp for vector fusion
Identifies groups of fusible L2 operations (binary, unary, reduce, duplicate) that share the same calCount and element type, and wraps them into VFGroupOp operations for subsequent vector fusion optimization.
-ascvf-fuse-vf-for
Fuses consecutive VFForOp loops within VecScopeOp
Merges adjacent VFForOp loops into a single loop by copying operations from subsequent loops into the first loop, reducing loop overhead.
-ascvf-insert-local-mem-bar
Inserts local memory barriers between consecutive VFForOp loops
Inserts LocalMemBarOp operations between consecutive VFForOp loops within VFGroupOp to synchronize vector store and vector load operations, ensuring proper memory ordering for vector fusion execution.
-ascvf-lower-to-micro
Lowers L2 operations to micro-level operations with loops
Converts L2 operations (binary, unary, reduce, duplicate) into micro-level operations by wrapping them in VecScopeOp, creating VFForOp loops, allocating register tensors, and inserting load/store micro operations.
-ascvf-materialize-load-store
Materializes abstract load/store micro ops into data copy operations
Converts LoadMicroOp and StoreMicroOp operations into concrete data copy operations with physical addresses, creating LocalTensorGetPhyAddrV2Op and DataCopyLoadOp/DataCopyStoreOp operations.
-ascvf-reorder-ops-in-vec-scope
Hoists and reorders operations within VecScopeOp blocks
Reorders operations inside VecScopeOp blocks by moving constants, register tensors, variables, mask operations, and duplicate operations to the beginning in a specific order for better code generation.