# AscVF passes * [`-ascvf-eliminate-common-mask`](#ascvf-eliminate-common-mask) * [`-ascvf-eliminate-data-transfer`](#ascvf-eliminate-data-transfer) * [`-ascvf-find-vf-group`](#ascvf-find-vf-group) * [`-ascvf-fuse-vf-for`](#ascvf-fuse-vf-for) * [`-ascvf-insert-local-mem-bar`](#ascvf-insert-local-mem-bar) * [`-ascvf-lower-to-micro`](#ascvf-lower-to-micro) * [`-ascvf-materialize-load-store`](#ascvf-materialize-load-store) * [`-ascvf-reorder-ops-in-vec-scope`](#ascvf-reorder-ops-in-vec-scope) ## `-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.