Integrate LLVM to llvm/llvm-project@d98828d394e4 (#24832)

Bumps the llvm-project submodule from llvm/llvm-project@d37fa5a838db to
llvm/llvm-project@d98828d394e4.

This is based on llvm/llvm-project@bd9990e127e1 with a temporary revert
of llvm/llvm-project@202ece62657c due to a regression in MLIR SPIR-V
conversion where i16 StorageBuffer accesses can fail legalization when
narrow-integer emulation is required. Follow-up investigation/upstream
fix required.

Adaptations needed:
- llvm/llvm-project@7e0416da49f4 removed `TargetOptions::FloatABIType`
in favor of the `float-abi` LLVM IR module flag. Store the float ABI on
IREE's `LLVMTarget` instead and set the module flag on generated
executables in the LLVMCPU target backend, preserving the previous
hard-float default.
- Updated lit tests for MLIR assembly-format changes that moved inherent
attributes out of the attr-dict into declarative syntax.
- Regenerated CAPI export files.

Assisted-by: Claude Code

Signed-off-by: Pooja Hemashekar <hemashekar@roofline.ai>
diff --git a/compiler/plugins/target/LLVMCPU/LLVMCPUTarget.cpp b/compiler/plugins/target/LLVMCPU/LLVMCPUTarget.cpp
index 9a8ec2e..b0b9f19 100644
--- a/compiler/plugins/target/LLVMCPU/LLVMCPUTarget.cpp
+++ b/compiler/plugins/target/LLVMCPU/LLVMCPUTarget.cpp
@@ -531,6 +531,15 @@
     // Specialize the module to our target machine.
     llvmModule->setDataLayout(targetMachine->createDataLayout());
     llvmModule->setTargetTriple(targetMachine->getTargetTriple());
+    // An explicit "float-abi" module flag wins; only record the target's ABI
+    // when the module does not already carry one.
+    if (target.floatABI != llvm::FloatABI::Default &&
+        !llvmModule->getModuleFlag("float-abi")) {
+      llvmModule->addModuleFlag(
+          llvm::Module::Error, "float-abi",
+          llvm::MDString::get(llvmModule->getContext(),
+                              llvm::FloatABI::getABITypeName(target.floatABI)));
+    }
 
     // Dump just the codegen bitcode before linking and optimization.
     if (!options.dumpIntermediatesPath.empty()) {
diff --git a/compiler/plugins/target/LLVMCPU/LLVMTargetOptions.cpp b/compiler/plugins/target/LLVMCPU/LLVMTargetOptions.cpp
index c58cb4e..289ae03 100644
--- a/compiler/plugins/target/LLVMCPU/LLVMTargetOptions.cpp
+++ b/compiler/plugins/target/LLVMCPU/LLVMTargetOptions.cpp
@@ -37,7 +37,7 @@
   // TODO(benvanik): add an option for this.
   optimizerOptLevel = llvm::OptimizationLevel::O2;
   codeGenOptLevel = llvm::CodeGenOptLevel::Aggressive;
-  llvmTargetOptions.FloatABIType = DEFAULT_FLOAT_ABI;
+  floatABI = DEFAULT_FLOAT_ABI;
 
   // Force `-ffunction-sections` so we can strip unused code.
   llvmTargetOptions.FunctionSections = true;
@@ -111,8 +111,7 @@
      << "    SLPVectorization=" << pipelineTuningOptions.SLPVectorization
      << "\n"
      << "  }, llvmTargetOptions={\n"
-     << "    FloatABIType=" << static_cast<int>(llvmTargetOptions.FloatABIType)
-     << "\n"
+     << "    FloatABI=" << static_cast<int>(floatABI) << "\n"
      << "  }\n"
      << "  ukernels=" << ukernels << "\n"
      << "  linkUkernelBitcode=" << linkUkernelBitcode << "\n"
@@ -180,8 +179,8 @@
   if (!llvmTargetOptions.MCOptions.ABIName.empty()) {
     addString("target_abi", llvmTargetOptions.MCOptions.ABIName);
   }
-  if (llvmTargetOptions.FloatABIType != DEFAULT_FLOAT_ABI) {
-    switch (llvmTargetOptions.FloatABIType) {
+  if (floatABI != DEFAULT_FLOAT_ABI) {
+    switch (floatABI) {
     case llvm::FloatABI::Default:
       addString("float_abi", "default");
       break;
@@ -318,11 +317,11 @@
   auto floatAbi = getOptionalString("float_abi");
   if (floatAbi) {
     if (floatAbi == "default") {
-      target.llvmTargetOptions.FloatABIType = llvm::FloatABI::Default;
+      target.floatABI = llvm::FloatABI::Default;
     } else if (floatAbi == "soft") {
-      target.llvmTargetOptions.FloatABIType = llvm::FloatABI::Default;
+      target.floatABI = llvm::FloatABI::Default;
     } else if (floatAbi == "hard") {
-      target.llvmTargetOptions.FloatABIType = llvm::FloatABI::Default;
+      target.floatABI = llvm::FloatABI::Default;
     } else {
       emitError(loc) << "executable config unexpected value for 'float_abi'";
       return {};
@@ -670,7 +669,7 @@
   target.pipelineTuningOptions.SLPVectorization = llvmSLPVectorization;
   target.sanitizerKind = sanitizerKind;
   target.llvmTargetOptions.MCOptions.ABIName = targetABI;
-  target.llvmTargetOptions.FloatABIType = targetFloatABI;
+  target.floatABI = targetFloatABI;
   target.dataLayout = targetDataLayout;
   target.vectorWidthInBytes = targetVectorWidthInBytes;
   target.maxStackAllocSizeInBytes = targetMaxStackAllocSizeInBytes.value;
diff --git a/compiler/plugins/target/LLVMCPU/LLVMTargetOptions.h b/compiler/plugins/target/LLVMCPU/LLVMTargetOptions.h
index cb39c88..d40b82c 100644
--- a/compiler/plugins/target/LLVMCPU/LLVMTargetOptions.h
+++ b/compiler/plugins/target/LLVMCPU/LLVMTargetOptions.h
@@ -105,6 +105,9 @@
   // Optimization level to be used by the LLVM code generator (back-end).
   llvm::CodeGenOptLevel codeGenOptLevel;
   llvm::TargetOptions llvmTargetOptions;
+  // Floating-point ABI to use, recorded on generated LLVM modules via the
+  // "float-abi" module flag (Default defers to the target triple).
+  llvm::FloatABI::ABIType floatABI = DEFAULT_FLOAT_ABI;
 
   bool getLinkEmbedded() const { return linkEmbedded; }
 
diff --git a/compiler/plugins/target/ROCM/builtins/mlir_ukernel/iree_uk_amdgpu_dt_matmul_f8E4M3FNUZ.mlir b/compiler/plugins/target/ROCM/builtins/mlir_ukernel/iree_uk_amdgpu_dt_matmul_f8E4M3FNUZ.mlir
index 1225b8a..83aae08 100644
--- a/compiler/plugins/target/ROCM/builtins/mlir_ukernel/iree_uk_amdgpu_dt_matmul_f8E4M3FNUZ.mlir
+++ b/compiler/plugins/target/ROCM/builtins/mlir_ukernel/iree_uk_amdgpu_dt_matmul_f8E4M3FNUZ.mlir
@@ -380,8 +380,8 @@
     %3 = scf.for %i = %c1 to %nDim step %c1 iter_args(%iter = %2) -> vector<8x2x1x4xf32> {
       // Local loads of lhs.
       %lhs_vec = vector.transfer_read %lhs_shared[%c0, %ids#0, %ids#2, %c0], %cst {in_bounds = [true, true, true, true]} : !m_lhs_shared_ty, vector<2x8x1x16xf8E4M3FNUZ>
-      %lhs_vec_0 = vector.extract_strided_slice %lhs_vec {offsets = [0, 0, 0, 0], sizes = [1, 8, 1, 16], strides = [1, 1, 1, 1]} : vector<2x8x1x16xf8E4M3FNUZ> to vector<1x8x1x16xf8E4M3FNUZ>
-      %lhs_vec_2 = vector.extract_strided_slice %lhs_vec {offsets = [1, 0, 0, 0], sizes = [1, 8, 1, 16], strides = [1, 1, 1, 1]} : vector<2x8x1x16xf8E4M3FNUZ> to vector<1x8x1x16xf8E4M3FNUZ>
+      %lhs_vec_0 = vector.extract_strided_slice %lhs_vec offsets = [0, 0, 0, 0], sizes = [1, 8, 1, 16], strides = [1, 1, 1, 1] : vector<2x8x1x16xf8E4M3FNUZ> to vector<1x8x1x16xf8E4M3FNUZ>
+      %lhs_vec_2 = vector.extract_strided_slice %lhs_vec offsets = [1, 0, 0, 0], sizes = [1, 8, 1, 16], strides = [1, 1, 1, 1] : vector<2x8x1x16xf8E4M3FNUZ> to vector<1x8x1x16xf8E4M3FNUZ>
       %lhs_vec_0_t = vector.shape_cast %lhs_vec_0 : vector<1x8x1x16xf8E4M3FNUZ> to vector<8x2x1x8xf8E4M3FNUZ>
       %lhs_vec_2_t = vector.shape_cast %lhs_vec_2 : vector<1x8x1x16xf8E4M3FNUZ> to vector<8x2x1x8xf8E4M3FNUZ>
 
@@ -397,8 +397,8 @@
 
       // Local loads of rhs.
       %rhs_vec = vector.transfer_read %rhs_shared[%c0, %glb0_rhs, %ids#2, %c0], %cst {in_bounds = [true, true, true, true]} : !m_rhs_shared_ty, vector<2x2x1x16xf8E4M3FNUZ>
-      %rhs_vec_0 = vector.extract_strided_slice %rhs_vec {offsets = [0, 0, 0, 0], sizes = [1, 2, 1, 16], strides = [1, 1, 1, 1]} : vector<2x2x1x16xf8E4M3FNUZ> to vector<1x2x1x16xf8E4M3FNUZ>
-      %rhs_vec_2 = vector.extract_strided_slice %rhs_vec {offsets = [1, 0, 0, 0], sizes = [1, 2, 1, 16], strides = [1, 1, 1, 1]} : vector<2x2x1x16xf8E4M3FNUZ> to vector<1x2x1x16xf8E4M3FNUZ>
+      %rhs_vec_0 = vector.extract_strided_slice %rhs_vec offsets = [0, 0, 0, 0], sizes = [1, 2, 1, 16], strides = [1, 1, 1, 1] : vector<2x2x1x16xf8E4M3FNUZ> to vector<1x2x1x16xf8E4M3FNUZ>
+      %rhs_vec_2 = vector.extract_strided_slice %rhs_vec offsets = [1, 0, 0, 0], sizes = [1, 2, 1, 16], strides = [1, 1, 1, 1] : vector<2x2x1x16xf8E4M3FNUZ> to vector<1x2x1x16xf8E4M3FNUZ>
       %rhs_vec_0_t = vector.shape_cast %rhs_vec_0 : vector<1x2x1x16xf8E4M3FNUZ> to vector<2x2x1x8xf8E4M3FNUZ>
       %rhs_vec_2_t = vector.shape_cast %rhs_vec_2 : vector<1x2x1x16xf8E4M3FNUZ> to vector<2x2x1x8xf8E4M3FNUZ>
 
@@ -461,14 +461,14 @@
 
     // Epilogue
     %lhs_vec = vector.transfer_read %lhs_shared[%c0, %ids#0, %ids#2, %c0], %cst {in_bounds = [true, true, true, true]} : !m_lhs_shared_ty, vector<2x8x1x16xf8E4M3FNUZ>
-    %lhs_vec_0 = vector.extract_strided_slice %lhs_vec {offsets = [0, 0, 0, 0], sizes = [1, 8, 1, 16], strides = [1, 1, 1, 1]} : vector<2x8x1x16xf8E4M3FNUZ> to vector<1x8x1x16xf8E4M3FNUZ>
-    %lhs_vec_2 = vector.extract_strided_slice %lhs_vec {offsets = [1, 0, 0, 0], sizes = [1, 8, 1, 16], strides = [1, 1, 1, 1]} : vector<2x8x1x16xf8E4M3FNUZ> to vector<1x8x1x16xf8E4M3FNUZ>
+    %lhs_vec_0 = vector.extract_strided_slice %lhs_vec offsets = [0, 0, 0, 0], sizes = [1, 8, 1, 16], strides = [1, 1, 1, 1] : vector<2x8x1x16xf8E4M3FNUZ> to vector<1x8x1x16xf8E4M3FNUZ>
+    %lhs_vec_2 = vector.extract_strided_slice %lhs_vec offsets = [1, 0, 0, 0], sizes = [1, 8, 1, 16], strides = [1, 1, 1, 1] : vector<2x8x1x16xf8E4M3FNUZ> to vector<1x8x1x16xf8E4M3FNUZ>
     %lhs_vec_0_t = vector.shape_cast %lhs_vec_0 : vector<1x8x1x16xf8E4M3FNUZ> to vector<8x2x1x8xf8E4M3FNUZ>
     %lhs_vec_2_t = vector.shape_cast %lhs_vec_2 : vector<1x8x1x16xf8E4M3FNUZ> to vector<8x2x1x8xf8E4M3FNUZ>
 
     %rhs_vec = vector.transfer_read %rhs_shared[%c0, %glb0_rhs, %ids#2, %c0], %cst {in_bounds = [true, true, true, true]} : !m_rhs_shared_ty, vector<2x2x1x16xf8E4M3FNUZ>
-    %rhs_vec_0 = vector.extract_strided_slice %rhs_vec {offsets = [0, 0, 0, 0], sizes = [1, 2, 1, 16], strides = [1, 1, 1, 1]} : vector<2x2x1x16xf8E4M3FNUZ> to vector<1x2x1x16xf8E4M3FNUZ>
-    %rhs_vec_2 = vector.extract_strided_slice %rhs_vec {offsets = [1, 0, 0, 0], sizes = [1, 2, 1, 16], strides = [1, 1, 1, 1]} : vector<2x2x1x16xf8E4M3FNUZ> to vector<1x2x1x16xf8E4M3FNUZ>
+    %rhs_vec_0 = vector.extract_strided_slice %rhs_vec offsets = [0, 0, 0, 0], sizes = [1, 2, 1, 16], strides = [1, 1, 1, 1] : vector<2x2x1x16xf8E4M3FNUZ> to vector<1x2x1x16xf8E4M3FNUZ>
+    %rhs_vec_2 = vector.extract_strided_slice %rhs_vec offsets = [1, 0, 0, 0], sizes = [1, 2, 1, 16], strides = [1, 1, 1, 1] : vector<2x2x1x16xf8E4M3FNUZ> to vector<1x2x1x16xf8E4M3FNUZ>
     %rhs_vec_0_t = vector.shape_cast %rhs_vec_0 : vector<1x2x1x16xf8E4M3FNUZ> to vector<2x2x1x8xf8E4M3FNUZ>
     %rhs_vec_2_t = vector.shape_cast %rhs_vec_2 : vector<1x2x1x16xf8E4M3FNUZ> to vector<2x2x1x8xf8E4M3FNUZ>
 
diff --git a/compiler/plugins/target/ROCM/builtins/mlir_ukernel/iree_uk_amdgpu_dt_scaled_matmul_f4E2M1FN.mlir b/compiler/plugins/target/ROCM/builtins/mlir_ukernel/iree_uk_amdgpu_dt_scaled_matmul_f4E2M1FN.mlir
index da42889..c573678 100644
--- a/compiler/plugins/target/ROCM/builtins/mlir_ukernel/iree_uk_amdgpu_dt_scaled_matmul_f4E2M1FN.mlir
+++ b/compiler/plugins/target/ROCM/builtins/mlir_ukernel/iree_uk_amdgpu_dt_scaled_matmul_f4E2M1FN.mlir
@@ -137,11 +137,11 @@
   %lhs_scale_byte = iree_tensor_ext.bitcast %lhs_scale_base : !lhs_scale_ty{%k} -> !lhs_scale_byte_ty{%k}
   %rhs_scale_byte = iree_tensor_ext.bitcast %rhs_scale_base : !rhs_scale_ty{%k} -> !rhs_scale_byte_ty{%k}
 
-  %lhs = bufferization.to_buffer %lhs_byte {read_only} : !lhs_byte_ty to !lhs_buffer_ty
-  %rhs = bufferization.to_buffer %rhs_byte {read_only} : !rhs_byte_ty to !rhs_buffer_ty
+  %lhs = bufferization.to_buffer %lhs_byte read_only : !lhs_byte_ty to !lhs_buffer_ty
+  %rhs = bufferization.to_buffer %rhs_byte read_only : !rhs_byte_ty to !rhs_buffer_ty
 
-  %lhs_scale = bufferization.to_buffer %lhs_scale_byte {read_only} : !lhs_scale_byte_ty to !lhs_scale_buffer_ty
-  %rhs_scale = bufferization.to_buffer %rhs_scale_byte {read_only} : !rhs_scale_byte_ty to !rhs_scale_buffer_ty
+  %lhs_scale = bufferization.to_buffer %lhs_scale_byte read_only : !lhs_scale_byte_ty to !lhs_scale_buffer_ty
+  %rhs_scale = bufferization.to_buffer %rhs_scale_byte read_only : !rhs_scale_byte_ty to !rhs_scale_buffer_ty
 
   // Collapse shapes to reduce memory indexing overhead.
   %lhs_collapse = memref.collapse_shape %lhs [[0, 1], [2, 3, 4, 5, 6, 7, 8]] : !lhs_buffer_ty into !lhs_buffer_collapse_ty
diff --git a/compiler/plugins/target/ROCM/builtins/mlir_ukernel/ukernel_patterns_gfx942.mlir b/compiler/plugins/target/ROCM/builtins/mlir_ukernel/ukernel_patterns_gfx942.mlir
index d34db59..6097cae 100644
--- a/compiler/plugins/target/ROCM/builtins/mlir_ukernel/ukernel_patterns_gfx942.mlir
+++ b/compiler/plugins/target/ROCM/builtins/mlir_ukernel/ukernel_patterns_gfx942.mlir
@@ -34,7 +34,7 @@
         : !pdl.operation, !pdl.attribute, !pdl.attribute)
 
   %attr_name = pdl.attribute = "iree_codegen.ukernel"
-  pdl.apply_native_constraint "hasAttr"(%generic_op, %attr_name : !pdl.operation, !pdl.attribute) {isNegated = true}
+  pdl.apply_native_constraint "hasAttr"(%generic_op, %attr_name : !pdl.operation, !pdl.attribute) is_negated = true
 
   // M % 128 == 0, K % 128 == 0, N % 256 == 0
   %empty = pdl.attribute = {}
@@ -119,7 +119,7 @@
         : !pdl.operation, !pdl.attribute, !pdl.attribute)
 
   %attr_name = pdl.attribute = "iree_codegen.ukernel"
-  pdl.apply_native_constraint "hasAttr"(%generic_op, %attr_name : !pdl.operation, !pdl.attribute) {isNegated = true}
+  pdl.apply_native_constraint "hasAttr"(%generic_op, %attr_name : !pdl.operation, !pdl.attribute) is_negated = true
 
   // M % 256 == 0, K % 128 == 0, N % 256 == 0
   %empty = pdl.attribute = {}
@@ -211,7 +211,7 @@
         : !pdl.operation, !pdl.attribute, !pdl.attribute)
 
   %attr_name = pdl.attribute = "iree_codegen.ukernel"
-  pdl.apply_native_constraint "hasAttr"(%generic_op, %attr_name : !pdl.operation, !pdl.attribute) {isNegated = true}
+  pdl.apply_native_constraint "hasAttr"(%generic_op, %attr_name : !pdl.operation, !pdl.attribute) is_negated = true
 
   // M % 256 == 0, K % 64 == 0, N % 256 == 0
   %empty = pdl.attribute = {}
@@ -293,7 +293,7 @@
         : !pdl.operation, !pdl.attribute, !pdl.attribute)
 
   %attr_name = pdl.attribute = "iree_codegen.ukernel"
-  pdl.apply_native_constraint "hasAttr"(%generic_op, %attr_name : !pdl.operation, !pdl.attribute) {isNegated = true}
+  pdl.apply_native_constraint "hasAttr"(%generic_op, %attr_name : !pdl.operation, !pdl.attribute) is_negated = true
 
   // M % 128 == 0, K % 64 == 0, N % 256 == 0
   %empty = pdl.attribute = {}
@@ -382,7 +382,7 @@
         : !pdl.operation, !pdl.attribute, !pdl.attribute)
 
   %attr_name = pdl.attribute = "iree_codegen.ukernel"
-  pdl.apply_native_constraint "hasAttr"(%generic_op, %attr_name : !pdl.operation, !pdl.attribute) {isNegated = true}
+  pdl.apply_native_constraint "hasAttr"(%generic_op, %attr_name : !pdl.operation, !pdl.attribute) is_negated = true
 
   // M % 256 == 0, K % 64 == 0, N % 256 == 0
   %empty = pdl.attribute = {}
@@ -471,7 +471,7 @@
         : !pdl.operation, !pdl.attribute, !pdl.attribute)
 
   %attr_name = pdl.attribute = "iree_codegen.ukernel"
-  pdl.apply_native_constraint "hasAttr"(%generic_op, %attr_name : !pdl.operation, !pdl.attribute) {isNegated = true}
+  pdl.apply_native_constraint "hasAttr"(%generic_op, %attr_name : !pdl.operation, !pdl.attribute) is_negated = true
 
   // M % 256 == 0, K % 64 == 0, N % 256 == 0
   %empty = pdl.attribute = {}
@@ -553,7 +553,7 @@
         : !pdl.operation, !pdl.attribute, !pdl.attribute)
 
   %attr_name = pdl.attribute = "iree_codegen.ukernel"
-  pdl.apply_native_constraint "hasAttr"(%generic_op, %attr_name : !pdl.operation, !pdl.attribute) {isNegated = true}
+  pdl.apply_native_constraint "hasAttr"(%generic_op, %attr_name : !pdl.operation, !pdl.attribute) is_negated = true
 
   // M % 128 == 0, K % 64 == 0, N % 256 == 0
   %empty = pdl.attribute = {}
@@ -646,7 +646,7 @@
         : !pdl.operation, !pdl.attribute, !pdl.attribute)
 
   %attr_name = pdl.attribute = "iree_codegen.ukernel"
-  pdl.apply_native_constraint "hasAttr"(%generic_op, %attr_name : !pdl.operation, !pdl.attribute) {isNegated = true}
+  pdl.apply_native_constraint "hasAttr"(%generic_op, %attr_name : !pdl.operation, !pdl.attribute) is_negated = true
 
   // M % 256 == 0, K % 64 == 0, N % 256 == 0
   %empty = pdl.attribute = {}
@@ -708,7 +708,7 @@
   %generic_op = pdl.operation "iree_codegen.inner_tiled" (%lhs, %rhs, %out_init : !pdl.value, !pdl.value, !pdl.value) -> (%out_type : !pdl.type)
 
   %attr_name = pdl.attribute = "iree_codegen.ukernel"
-  pdl.apply_native_constraint "hasAttr"(%generic_op, %attr_name : !pdl.operation, !pdl.attribute) {isNegated = true}
+  pdl.apply_native_constraint "hasAttr"(%generic_op, %attr_name : !pdl.operation, !pdl.attribute) is_negated = true
 
   %lhs_cast_type = pdl.type : tensor<?x?x8x4x16x2x8xf8E4M3FNUZ>
   pdl.apply_native_constraint "matchCastCompatibleType"(%lhs, %lhs_cast_type : !pdl.value, !pdl.type)
@@ -765,7 +765,7 @@
   %generic_op = pdl.operation "iree_codegen.inner_tiled" (%lhs, %rhs, %out_init : !pdl.value, !pdl.value, !pdl.value) -> (%out_type : !pdl.type)
 
   %attr_name = pdl.attribute = "iree_codegen.ukernel"
-  pdl.apply_native_constraint "hasAttr"(%generic_op, %attr_name : !pdl.operation, !pdl.attribute) {isNegated = true}
+  pdl.apply_native_constraint "hasAttr"(%generic_op, %attr_name : !pdl.operation, !pdl.attribute) is_negated = true
 
   %lhs_cast_type = pdl.type : tensor<?x?x2x8x4x16x8xf8E4M3FNUZ>
   pdl.apply_native_constraint "matchCastCompatibleType"(%lhs, %lhs_cast_type : !pdl.value, !pdl.type)
@@ -822,7 +822,7 @@
   %generic_op = pdl.operation "iree_codegen.inner_tiled" (%lhs, %rhs, %out_init : !pdl.value, !pdl.value, !pdl.value) -> (%out_type : !pdl.type)
 
   %attr_name = pdl.attribute = "iree_codegen.ukernel"
-  pdl.apply_native_constraint "hasAttr"(%generic_op, %attr_name : !pdl.operation, !pdl.attribute) {isNegated = true}
+  pdl.apply_native_constraint "hasAttr"(%generic_op, %attr_name : !pdl.operation, !pdl.attribute) is_negated = true
 
   %lhs_cast_type = pdl.type : tensor<?x?x2x8x4x16x4xf16>
   pdl.apply_native_constraint "matchCastCompatibleType"(%lhs, %lhs_cast_type : !pdl.value, !pdl.type)
diff --git a/compiler/plugins/target/ROCM/builtins/mlir_ukernel/ukernel_patterns_gfx950.mlir b/compiler/plugins/target/ROCM/builtins/mlir_ukernel/ukernel_patterns_gfx950.mlir
index d6717e9..a267995 100644
--- a/compiler/plugins/target/ROCM/builtins/mlir_ukernel/ukernel_patterns_gfx950.mlir
+++ b/compiler/plugins/target/ROCM/builtins/mlir_ukernel/ukernel_patterns_gfx950.mlir
@@ -34,7 +34,7 @@
         : !pdl.operation, !pdl.attribute, !pdl.attribute)
 
   %attr_name = pdl.attribute = "iree_codegen.ukernel"
-  pdl.apply_native_constraint "hasAttr"(%generic_op, %attr_name : !pdl.operation, !pdl.attribute) {isNegated = true}
+  pdl.apply_native_constraint "hasAttr"(%generic_op, %attr_name : !pdl.operation, !pdl.attribute) is_negated = true
 
   // M % 128 == 0, K % 128 == 0, N % 256 == 0
   %empty = pdl.attribute = {}
@@ -119,7 +119,7 @@
         : !pdl.operation, !pdl.attribute, !pdl.attribute)
 
   %attr_name = pdl.attribute = "iree_codegen.ukernel"
-  pdl.apply_native_constraint "hasAttr"(%generic_op, %attr_name : !pdl.operation, !pdl.attribute) {isNegated = true}
+  pdl.apply_native_constraint "hasAttr"(%generic_op, %attr_name : !pdl.operation, !pdl.attribute) is_negated = true
 
   // M % 256 == 0, K % 128 == 0, N % 256 == 0
   %empty = pdl.attribute = {}
@@ -211,7 +211,7 @@
         : !pdl.operation, !pdl.attribute, !pdl.attribute)
 
   %attr_name = pdl.attribute = "iree_codegen.ukernel"
-  pdl.apply_native_constraint "hasAttr"(%generic_op, %attr_name : !pdl.operation, !pdl.attribute) {isNegated = true}
+  pdl.apply_native_constraint "hasAttr"(%generic_op, %attr_name : !pdl.operation, !pdl.attribute) is_negated = true
 
   // M % 256 == 0, K % 64 == 0, N % 256 == 0
   %empty = pdl.attribute = {}
@@ -293,7 +293,7 @@
         : !pdl.operation, !pdl.attribute, !pdl.attribute)
 
   %attr_name = pdl.attribute = "iree_codegen.ukernel"
-  pdl.apply_native_constraint "hasAttr"(%generic_op, %attr_name : !pdl.operation, !pdl.attribute) {isNegated = true}
+  pdl.apply_native_constraint "hasAttr"(%generic_op, %attr_name : !pdl.operation, !pdl.attribute) is_negated = true
 
   // M % 128 == 0, K % 64 == 0, N % 256 == 0
   %empty = pdl.attribute = {}
@@ -384,7 +384,7 @@
         : !pdl.operation, !pdl.attribute, !pdl.attribute)
 
   %attr_name = pdl.attribute = "iree_codegen.ukernel"
-  pdl.apply_native_constraint "hasAttr"(%generic_op, %attr_name : !pdl.operation, !pdl.attribute) {isNegated = true}
+  pdl.apply_native_constraint "hasAttr"(%generic_op, %attr_name : !pdl.operation, !pdl.attribute) is_negated = true
 
   // M % 256 == 0, K % 64 == 0, N % 256 == 0
   %empty = pdl.attribute = {}
@@ -473,7 +473,7 @@
         : !pdl.operation, !pdl.attribute, !pdl.attribute)
 
   %attr_name = pdl.attribute = "iree_codegen.ukernel"
-  pdl.apply_native_constraint "hasAttr"(%generic_op, %attr_name : !pdl.operation, !pdl.attribute) {isNegated = true}
+  pdl.apply_native_constraint "hasAttr"(%generic_op, %attr_name : !pdl.operation, !pdl.attribute) is_negated = true
 
   // M % 256 == 0, K % 64 == 0, N % 256 == 0
   %empty = pdl.attribute = {}
@@ -555,7 +555,7 @@
         : !pdl.operation, !pdl.attribute, !pdl.attribute)
 
   %attr_name = pdl.attribute = "iree_codegen.ukernel"
-  pdl.apply_native_constraint "hasAttr"(%generic_op, %attr_name : !pdl.operation, !pdl.attribute) {isNegated = true}
+  pdl.apply_native_constraint "hasAttr"(%generic_op, %attr_name : !pdl.operation, !pdl.attribute) is_negated = true
 
   // M % 128 == 0, K % 64 == 0, N % 256 == 0
   %empty = pdl.attribute = {}
@@ -648,7 +648,7 @@
         : !pdl.operation, !pdl.attribute, !pdl.attribute)
 
   %attr_name = pdl.attribute = "iree_codegen.ukernel"
-  pdl.apply_native_constraint "hasAttr"(%generic_op, %attr_name : !pdl.operation, !pdl.attribute) {isNegated = true}
+  pdl.apply_native_constraint "hasAttr"(%generic_op, %attr_name : !pdl.operation, !pdl.attribute) is_negated = true
 
   // M % 256 == 0, K % 64 == 0, N % 256 == 0
   %empty = pdl.attribute = {}
@@ -714,7 +714,7 @@
   %inner_tiled_op = pdl.operation "iree_codegen.inner_tiled" (%lhs, %rhs, %lhs_scale, %rhs_scale, %out_init : !pdl.value, !pdl.value, !pdl.value, !pdl.value, !pdl.value) -> (%out_type : !pdl.type)
 
   %attr_name = pdl.attribute = "iree_codegen.ukernel"
-  pdl.apply_native_constraint "hasAttr"(%inner_tiled_op, %attr_name : !pdl.operation, !pdl.attribute) {isNegated = true}
+  pdl.apply_native_constraint "hasAttr"(%inner_tiled_op, %attr_name : !pdl.operation, !pdl.attribute) is_negated = true
 
   %lhs_cast_type = pdl.type : tensor<?x?x1x2x4x2x4x16x32xf4E2M1FN>
   pdl.apply_native_constraint "matchCastCompatibleType"(%lhs, %lhs_cast_type : !pdl.value, !pdl.type)
@@ -779,7 +779,7 @@
   %generic_op = pdl.operation "iree_codegen.inner_tiled" (%lhs, %rhs, %out_init : !pdl.value, !pdl.value, !pdl.value) -> (%out_type : !pdl.type)
 
   %attr_name = pdl.attribute = "iree_codegen.ukernel"
-  pdl.apply_native_constraint "hasAttr"(%generic_op, %attr_name : !pdl.operation, !pdl.attribute) {isNegated = true}
+  pdl.apply_native_constraint "hasAttr"(%generic_op, %attr_name : !pdl.operation, !pdl.attribute) is_negated = true
 
   %lhs_cast_type = pdl.type : tensor<?x?x2x8x4x16x8xf8E4M3FN>
   pdl.apply_native_constraint "matchCastCompatibleType"(%lhs, %lhs_cast_type : !pdl.value, !pdl.type)
diff --git a/compiler/plugins/target/ROCM/builtins/specialization/specialization_patterns_gfx942.mlir b/compiler/plugins/target/ROCM/builtins/specialization/specialization_patterns_gfx942.mlir
index 893c73b..978ea0b 100644
--- a/compiler/plugins/target/ROCM/builtins/specialization/specialization_patterns_gfx942.mlir
+++ b/compiler/plugins/target/ROCM/builtins/specialization/specialization_patterns_gfx942.mlir
@@ -20,7 +20,7 @@
   %attr_name = pdl.attribute = "iree_codegen.specialization_ranges"
   pdl.apply_native_constraint "hasAttr"(
         %matmul, %attr_name
-        : !pdl.operation, !pdl.attribute) {isNegated = true}
+        : !pdl.operation, !pdl.attribute) is_negated = true
 
   pdl.rewrite %matmul {
     %ranges = pdl.attribute = #util<int.assumption.multi_array[
@@ -51,7 +51,7 @@
   %attr_name = pdl.attribute = "iree_codegen.specialization_ranges"
   pdl.apply_native_constraint "hasAttr"(
         %matmul, %attr_name
-        : !pdl.operation, !pdl.attribute) {isNegated = true}
+        : !pdl.operation, !pdl.attribute) is_negated = true
 
   pdl.rewrite %matmul {
     %ranges = pdl.attribute = #util<int.assumption.multi_array[
@@ -82,7 +82,7 @@
   %attr_name = pdl.attribute = "iree_codegen.specialization_ranges"
   pdl.apply_native_constraint "hasAttr"(
         %matmul, %attr_name
-        : !pdl.operation, !pdl.attribute) {isNegated = true}
+        : !pdl.operation, !pdl.attribute) is_negated = true
 
   pdl.rewrite %matmul {
     %ranges = pdl.attribute = #util<int.assumption.multi_array[
diff --git a/compiler/plugins/target/ROCM/builtins/specialization/specialization_patterns_gfx950.mlir b/compiler/plugins/target/ROCM/builtins/specialization/specialization_patterns_gfx950.mlir
index a57285f..9644e06 100644
--- a/compiler/plugins/target/ROCM/builtins/specialization/specialization_patterns_gfx950.mlir
+++ b/compiler/plugins/target/ROCM/builtins/specialization/specialization_patterns_gfx950.mlir
@@ -20,7 +20,7 @@
   %attr_name = pdl.attribute = "iree_codegen.specialization_ranges"
   pdl.apply_native_constraint "hasAttr"(
         %matmul, %attr_name
-        : !pdl.operation, !pdl.attribute) {isNegated = true}
+        : !pdl.operation, !pdl.attribute) is_negated = true
 
   pdl.rewrite %matmul {
     %ranges = pdl.attribute = #util<int.assumption.multi_array[
@@ -51,7 +51,7 @@
   %attr_name = pdl.attribute = "iree_codegen.specialization_ranges"
   pdl.apply_native_constraint "hasAttr"(
         %matmul, %attr_name
-        : !pdl.operation, !pdl.attribute) {isNegated = true}
+        : !pdl.operation, !pdl.attribute) is_negated = true
 
   pdl.rewrite %matmul {
     %ranges = pdl.attribute = #util<int.assumption.multi_array[
@@ -82,7 +82,7 @@
   %attr_name = pdl.attribute = "iree_codegen.specialization_ranges"
   pdl.apply_native_constraint "hasAttr"(
         %matmul, %attr_name
-        : !pdl.operation, !pdl.attribute) {isNegated = true}
+        : !pdl.operation, !pdl.attribute) is_negated = true
 
   pdl.rewrite %matmul {
     %ranges = pdl.attribute = #util<int.assumption.multi_array[
@@ -115,7 +115,7 @@
   %attr_name = pdl.attribute = "iree_codegen.specialization_ranges"
   pdl.apply_native_constraint "hasAttr"(
         %scaled_matmul, %attr_name
-        : !pdl.operation, !pdl.attribute) {isNegated = true}
+        : !pdl.operation, !pdl.attribute) is_negated = true
 
   pdl.rewrite %scaled_matmul {
     %ranges = pdl.attribute = #util<int.assumption.multi_array[
diff --git a/compiler/src/iree/compiler/API/api_exports.c b/compiler/src/iree/compiler/API/api_exports.c
index c92d46e..e0e31c3 100644
--- a/compiler/src/iree/compiler/API/api_exports.c
+++ b/compiler/src/iree/compiler/API/api_exports.c
@@ -314,12 +314,14 @@
 extern void mlirConditionallySpeculatableOpInterfaceTypeID();
 extern void mlirContextAppendDialectRegistry();
 extern void mlirContextAttachDiagnosticHandler();
+extern void mlirContextBeginTransientScope();
 extern void mlirContextCreate();
 extern void mlirContextCreateWithRegistry();
 extern void mlirContextCreateWithThreading();
 extern void mlirContextDestroy();
 extern void mlirContextDetachDiagnosticHandler();
 extern void mlirContextEnableMultithreading();
+extern void mlirContextEndTransientScope();
 extern void mlirContextEqual();
 extern void mlirContextGetAllowUnregisteredDialects();
 extern void mlirContextGetLoadedDialect();
@@ -328,6 +330,7 @@
 extern void mlirContextGetNumThreads();
 extern void mlirContextGetOrLoadDialect();
 extern void mlirContextGetThreadPool();
+extern void mlirContextIsInTransientScope();
 extern void mlirContextIsRegisteredOperation();
 extern void mlirContextLoadAllAvailableDialects();
 extern void mlirContextSetAllowUnregisteredDialects();
@@ -651,6 +654,7 @@
 extern void mlirLLVMDICompileUnitAttrGetName();
 extern void mlirLLVMDICompileUnitAttrGetRecSelf();
 extern void mlirLLVMDICompileUnitAttrGetWithSourceLanguageDialect();
+extern void mlirLLVMDICompileUnitAttrGetWithSourceLanguageName();
 extern void mlirLLVMDICompositeTypeAttrGet();
 extern void mlirLLVMDICompositeTypeAttrGetName();
 extern void mlirLLVMDICompositeTypeAttrGetRecSelf();
@@ -1552,12 +1556,14 @@
   x += (uintptr_t)&mlirConditionallySpeculatableOpInterfaceTypeID;
   x += (uintptr_t)&mlirContextAppendDialectRegistry;
   x += (uintptr_t)&mlirContextAttachDiagnosticHandler;
+  x += (uintptr_t)&mlirContextBeginTransientScope;
   x += (uintptr_t)&mlirContextCreate;
   x += (uintptr_t)&mlirContextCreateWithRegistry;
   x += (uintptr_t)&mlirContextCreateWithThreading;
   x += (uintptr_t)&mlirContextDestroy;
   x += (uintptr_t)&mlirContextDetachDiagnosticHandler;
   x += (uintptr_t)&mlirContextEnableMultithreading;
+  x += (uintptr_t)&mlirContextEndTransientScope;
   x += (uintptr_t)&mlirContextEqual;
   x += (uintptr_t)&mlirContextGetAllowUnregisteredDialects;
   x += (uintptr_t)&mlirContextGetLoadedDialect;
@@ -1566,6 +1572,7 @@
   x += (uintptr_t)&mlirContextGetNumThreads;
   x += (uintptr_t)&mlirContextGetOrLoadDialect;
   x += (uintptr_t)&mlirContextGetThreadPool;
+  x += (uintptr_t)&mlirContextIsInTransientScope;
   x += (uintptr_t)&mlirContextIsRegisteredOperation;
   x += (uintptr_t)&mlirContextLoadAllAvailableDialects;
   x += (uintptr_t)&mlirContextSetAllowUnregisteredDialects;
@@ -1889,6 +1896,7 @@
   x += (uintptr_t)&mlirLLVMDICompileUnitAttrGetName;
   x += (uintptr_t)&mlirLLVMDICompileUnitAttrGetRecSelf;
   x += (uintptr_t)&mlirLLVMDICompileUnitAttrGetWithSourceLanguageDialect;
+  x += (uintptr_t)&mlirLLVMDICompileUnitAttrGetWithSourceLanguageName;
   x += (uintptr_t)&mlirLLVMDICompositeTypeAttrGet;
   x += (uintptr_t)&mlirLLVMDICompositeTypeAttrGetName;
   x += (uintptr_t)&mlirLLVMDICompositeTypeAttrGetRecSelf;
diff --git a/compiler/src/iree/compiler/API/api_exports.def b/compiler/src/iree/compiler/API/api_exports.def
index 417cfcc..a4b5fe7 100644
--- a/compiler/src/iree/compiler/API/api_exports.def
+++ b/compiler/src/iree/compiler/API/api_exports.def
@@ -304,12 +304,14 @@
   mlirConditionallySpeculatableOpInterfaceTypeID
   mlirContextAppendDialectRegistry
   mlirContextAttachDiagnosticHandler
+  mlirContextBeginTransientScope
   mlirContextCreate
   mlirContextCreateWithRegistry
   mlirContextCreateWithThreading
   mlirContextDestroy
   mlirContextDetachDiagnosticHandler
   mlirContextEnableMultithreading
+  mlirContextEndTransientScope
   mlirContextEqual
   mlirContextGetAllowUnregisteredDialects
   mlirContextGetLoadedDialect
@@ -318,6 +320,7 @@
   mlirContextGetNumThreads
   mlirContextGetOrLoadDialect
   mlirContextGetThreadPool
+  mlirContextIsInTransientScope
   mlirContextIsRegisteredOperation
   mlirContextLoadAllAvailableDialects
   mlirContextSetAllowUnregisteredDialects
@@ -641,6 +644,7 @@
   mlirLLVMDICompileUnitAttrGetName
   mlirLLVMDICompileUnitAttrGetRecSelf
   mlirLLVMDICompileUnitAttrGetWithSourceLanguageDialect
+  mlirLLVMDICompileUnitAttrGetWithSourceLanguageName
   mlirLLVMDICompositeTypeAttrGet
   mlirLLVMDICompositeTypeAttrGetName
   mlirLLVMDICompositeTypeAttrGetRecSelf
diff --git a/compiler/src/iree/compiler/API/api_exports.ld b/compiler/src/iree/compiler/API/api_exports.ld
index 86643c8..bf447bd 100644
--- a/compiler/src/iree/compiler/API/api_exports.ld
+++ b/compiler/src/iree/compiler/API/api_exports.ld
@@ -305,12 +305,14 @@
     mlirConditionallySpeculatableOpInterfaceTypeID;
     mlirContextAppendDialectRegistry;
     mlirContextAttachDiagnosticHandler;
+    mlirContextBeginTransientScope;
     mlirContextCreate;
     mlirContextCreateWithRegistry;
     mlirContextCreateWithThreading;
     mlirContextDestroy;
     mlirContextDetachDiagnosticHandler;
     mlirContextEnableMultithreading;
+    mlirContextEndTransientScope;
     mlirContextEqual;
     mlirContextGetAllowUnregisteredDialects;
     mlirContextGetLoadedDialect;
@@ -319,6 +321,7 @@
     mlirContextGetNumThreads;
     mlirContextGetOrLoadDialect;
     mlirContextGetThreadPool;
+    mlirContextIsInTransientScope;
     mlirContextIsRegisteredOperation;
     mlirContextLoadAllAvailableDialects;
     mlirContextSetAllowUnregisteredDialects;
@@ -642,6 +645,7 @@
     mlirLLVMDICompileUnitAttrGetName;
     mlirLLVMDICompileUnitAttrGetRecSelf;
     mlirLLVMDICompileUnitAttrGetWithSourceLanguageDialect;
+    mlirLLVMDICompileUnitAttrGetWithSourceLanguageName;
     mlirLLVMDICompositeTypeAttrGet;
     mlirLLVMDICompositeTypeAttrGetName;
     mlirLLVMDICompositeTypeAttrGetRecSelf;
diff --git a/compiler/src/iree/compiler/API/api_exports.macos.lst b/compiler/src/iree/compiler/API/api_exports.macos.lst
index fc3d9f7..1db3db7 100644
--- a/compiler/src/iree/compiler/API/api_exports.macos.lst
+++ b/compiler/src/iree/compiler/API/api_exports.macos.lst
@@ -303,12 +303,14 @@
 _mlirConditionallySpeculatableOpInterfaceTypeID
 _mlirContextAppendDialectRegistry
 _mlirContextAttachDiagnosticHandler
+_mlirContextBeginTransientScope
 _mlirContextCreate
 _mlirContextCreateWithRegistry
 _mlirContextCreateWithThreading
 _mlirContextDestroy
 _mlirContextDetachDiagnosticHandler
 _mlirContextEnableMultithreading
+_mlirContextEndTransientScope
 _mlirContextEqual
 _mlirContextGetAllowUnregisteredDialects
 _mlirContextGetLoadedDialect
@@ -317,6 +319,7 @@
 _mlirContextGetNumThreads
 _mlirContextGetOrLoadDialect
 _mlirContextGetThreadPool
+_mlirContextIsInTransientScope
 _mlirContextIsRegisteredOperation
 _mlirContextLoadAllAvailableDialects
 _mlirContextSetAllowUnregisteredDialects
@@ -640,6 +643,7 @@
 _mlirLLVMDICompileUnitAttrGetName
 _mlirLLVMDICompileUnitAttrGetRecSelf
 _mlirLLVMDICompileUnitAttrGetWithSourceLanguageDialect
+_mlirLLVMDICompileUnitAttrGetWithSourceLanguageName
 _mlirLLVMDICompositeTypeAttrGet
 _mlirLLVMDICompositeTypeAttrGetName
 _mlirLLVMDICompositeTypeAttrGetRecSelf
diff --git a/compiler/src/iree/compiler/Codegen/Common/GPU/test/gpu_nested_layout_vector_distribution.mlir b/compiler/src/iree/compiler/Codegen/Common/GPU/test/gpu_nested_layout_vector_distribution.mlir
index d304b0a..31bc004 100644
--- a/compiler/src/iree/compiler/Codegen/Common/GPU/test/gpu_nested_layout_vector_distribution.mlir
+++ b/compiler/src/iree/compiler/Codegen/Common/GPU/test/gpu_nested_layout_vector_distribution.mlir
@@ -33,10 +33,10 @@
 // CHECK: %[[YX:.+]]:3 = affine.delinearize_index %[[IDX]] into (4, 8)
 // CHECK: %[[Y_SCALED:.+]] = affine.linearize_index disjoint [%[[YX]]#1, %c0] by (4, 4)
 // CHECK: %[[RD00:.+]] = vector.transfer_read %arg0[%[[Y_SCALED]], %[[YX]]#2], {{.*}} : memref<32x32xf16>, vector<4x1xf16>
-// CHECK: vector.insert_strided_slice %[[RD00]], %{{.*}} {offsets = [0, 0, 0, 0, 0, 0], strides = [1, 1]} : vector<4x1xf16> into vector<1x2x1x1x4x1xf16>
+// CHECK: vector.insert_strided_slice %[[RD00]], %{{.*}} offsets = [0, 0, 0, 0, 0, 0], strides = [1, 1] : vector<4x1xf16> into vector<1x2x1x1x4x1xf16>
 // CHECK: %[[X_PLUS_BATCH:.+]] = affine.linearize_index disjoint [%c1, %[[YX]]#2] by (2, 8)
 // CHECK: vector.transfer_read %arg0[%[[Y_SCALED]], %[[X_PLUS_BATCH]]], %{{.*}} {in_bounds = [true, true]} : memref<32x32xf16>, vector<4x1xf16>
-// CHECK: vector.insert_strided_slice {{.*}} {offsets = [0, 1, 0, 0, 0, 0]
+// CHECK: vector.insert_strided_slice {{.*}} offsets = [0, 1, 0, 0, 0, 0]
 // CHECK: iree_vector_ext.to_simd %{{.*}} : vector<1x2x1x1x4x1xf16> -> vector<16x16xf16>
 
 // -----
@@ -121,8 +121,8 @@
 // CHECK-SAME:    %[[I0:.+]]: index, %[[I1:.+]]: index
 
 // CHECK: %[[BROADCAST_READ:.+]] = vector.transfer_read %{{.*}}[%c0, %c0, %[[I0]], %[[I1]]], %{{.*}} permutation_map = #[[$MAP]]
-// CHECK: vector.insert_strided_slice %[[BROADCAST_READ]], %{{.*}} {offsets = [0, 0, 0, 0, 0, 0]
-// CHECK: vector.insert_strided_slice %[[BROADCAST_READ]], %{{.*}} {offsets = [0, 1, 0, 0, 0, 0]
+// CHECK: vector.insert_strided_slice %[[BROADCAST_READ]], %{{.*}} offsets = [0, 0, 0, 0, 0, 0]
+// CHECK: vector.insert_strided_slice %[[BROADCAST_READ]], %{{.*}} offsets = [0, 1, 0, 0, 0, 0]
 
 // -----
 
diff --git a/compiler/src/iree/compiler/Codegen/Common/GPU/test/gpu_nested_layout_vector_distribution_scan.mlir b/compiler/src/iree/compiler/Codegen/Common/GPU/test/gpu_nested_layout_vector_distribution_scan.mlir
index e0227a5..6eefab0 100644
--- a/compiler/src/iree/compiler/Codegen/Common/GPU/test/gpu_nested_layout_vector_distribution_scan.mlir
+++ b/compiler/src/iree/compiler/Codegen/Common/GPU/test/gpu_nested_layout_vector_distribution_scan.mlir
@@ -18,7 +18,7 @@
 // CHECK-LABEL: @scan_single_bo_inclusive
 func.func @scan_single_bo_inclusive(%src: vector<16xf32>, %init: vector<f32>) -> (vector<16xf32>, vector<f32>) {
   %src_l = iree_vector_ext.to_layout %src to layout(#layout_scan_1d) : vector<16xf32>
-  %out:2 = vector.scan <add>, %src_l, %init {inclusive = true, reduction_dim = 0 : i64}
+  %out:2 = vector.scan <add>, %src_l, %init reduction_dim = 0, inclusive = true
     : vector<16xf32>, vector<f32>
   return %out#0, %out#1 : vector<16xf32>, vector<f32>
 }
@@ -34,7 +34,7 @@
 // CHECK-DAG: %[[ID_VEC:.*]] = arith.constant dense<0.000000e+00> : vector<1x1xf32>
 // CHECK-DAG: %[[SRC_DIST:.*]] = iree_vector_ext.to_simt %{{.*}} : vector<16xf32> -> vector<1x1x4xf32>
 // Local inclusive scan with identity init.
-// CHECK: %[[LOCAL_SCAN:.*]], %[[LOCAL_TOTAL:.*]] = vector.scan <add>, %[[SRC_DIST]], %[[ID_VEC]] {inclusive = true, reduction_dim = 2 : i64} : vector<1x1x4xf32>, vector<1x1xf32>
+// CHECK: %[[LOCAL_SCAN:.*]], %[[LOCAL_TOTAL:.*]] = vector.scan <add>, %[[SRC_DIST]], %[[ID_VEC]] reduction_dim = 2, inclusive = true : vector<1x1x4xf32>, vector<1x1xf32>
 // Subgroup scan of localTotal.
 // CHECK: %[[SCALAR_TOTAL:.*]] = vector.extract %[[LOCAL_TOTAL]][0, 0] : f32 from vector<1x1xf32>
 // CHECK: %[[SUBGROUP_SCAN:.*]], %[[SUBGROUP_TOTAL:.*]] = iree_gpu.subgroup_scan(%[[SCALAR_TOTAL]], {{.*}}) cluster(size = 4)
@@ -69,7 +69,7 @@
 // CHECK-LABEL: @scan_single_bo_exclusive
 func.func @scan_single_bo_exclusive(%src: vector<16xf32>, %init: vector<f32>) -> (vector<16xf32>, vector<f32>) {
   %src_l = iree_vector_ext.to_layout %src to layout(#layout_scan_1d_excl) : vector<16xf32>
-  %out:2 = vector.scan <add>, %src_l, %init {inclusive = false, reduction_dim = 0 : i64}
+  %out:2 = vector.scan <add>, %src_l, %init reduction_dim = 0, inclusive = false
     : vector<16xf32>, vector<f32>
   return %out#0, %out#1 : vector<16xf32>, vector<f32>
 }
@@ -85,9 +85,9 @@
 // CHECK-DAG: %[[ID_VEC:.*]] = arith.constant dense<0.000000e+00> : vector<1x1xf32>
 // CHECK-DAG: %[[SRC_DIST:.*]] = iree_vector_ext.to_simt %{{.*}} : vector<16xf32> -> vector<1x1x4xf32>
 // Local exclusive scan with identity init.
-// CHECK: %[[LOCAL_SCAN:.*]], %[[ACC_VAL:.*]] = vector.scan <add>, %[[SRC_DIST]], %[[ID_VEC]] {inclusive = false, reduction_dim = 2 : i64}
+// CHECK: %[[LOCAL_SCAN:.*]], %[[ACC_VAL:.*]] = vector.scan <add>, %[[SRC_DIST]], %[[ID_VEC]] reduction_dim = 2, inclusive = false
 // Fix up localTotal: combine accumulated_value with last source element.
-// CHECK: %[[LAST_ELEM:.*]] = vector.extract_strided_slice %[[SRC_DIST]] {offsets = [0, 0, 3], sizes = [1, 1, 1], strides = [1, 1, 1]}
+// CHECK: %[[LAST_ELEM:.*]] = vector.extract_strided_slice %[[SRC_DIST]] offsets = [0, 0, 3], sizes = [1, 1, 1], strides = [1, 1, 1]
 // CHECK: %[[LAST_FLAT:.*]] = vector.shape_cast %[[LAST_ELEM]] : vector<1x1x1xf32> to vector<1x1xf32>
 // CHECK: %[[LOCAL_TOTAL:.*]] = arith.addf %[[ACC_VAL]], %[[LAST_FLAT]] : vector<1x1xf32>
 // Subgroup scan of fixed-up localTotal.
@@ -127,7 +127,7 @@
 // CHECK-LABEL: @scan_cross_subgroup_inclusive
 func.func @scan_cross_subgroup_inclusive(%src: vector<32xf32>, %init: vector<f32>) -> (vector<32xf32>, vector<f32>) {
   %src_l = iree_vector_ext.to_layout %src to layout(#layout_scan_cross) : vector<32xf32>
-  %out:2 = vector.scan <add>, %src_l, %init {inclusive = true, reduction_dim = 0 : i64}
+  %out:2 = vector.scan <add>, %src_l, %init reduction_dim = 0, inclusive = true
     : vector<32xf32>, vector<f32>
   return %out#0, %out#1 : vector<32xf32>, vector<f32>
 }
@@ -143,7 +143,7 @@
 // CHECK-DAG: %[[CST:.*]] = arith.constant dense<0.000000e+00> : vector<1x1xf32>
 // CHECK-DAG: %[[SRC_DIST:.*]] = iree_vector_ext.to_simt %{{.*}} : vector<32xf32> -> vector<1x1x4xf32>
 // Local inclusive scan with identity init.
-// CHECK: %[[LOCAL_SCAN:.*]], %[[LOCAL_TOTAL:.*]] = vector.scan <add>, %[[SRC_DIST]], %{{.*}} {inclusive = true, reduction_dim = 2 : i64}
+// CHECK: %[[LOCAL_SCAN:.*]], %[[LOCAL_TOTAL:.*]] = vector.scan <add>, %[[SRC_DIST]], %{{.*}} reduction_dim = 2, inclusive = true
 // Subgroup scan of localTotal.
 // CHECK: %[[SUBGROUP_SCAN:.*]], %[[SUBGROUP_TOTAL:.*]] = iree_gpu.subgroup_scan
 // Apply subgroup scan carry to local result.
@@ -187,7 +187,7 @@
 // CHECK-LABEL: @scan_cross_subgroup_exclusive
 func.func @scan_cross_subgroup_exclusive(%src: vector<32xf32>, %init: vector<f32>) -> (vector<32xf32>, vector<f32>) {
   %src_l = iree_vector_ext.to_layout %src to layout(#layout_scan_cross_excl) : vector<32xf32>
-  %out:2 = vector.scan <add>, %src_l, %init {inclusive = false, reduction_dim = 0 : i64}
+  %out:2 = vector.scan <add>, %src_l, %init reduction_dim = 0, inclusive = false
     : vector<32xf32>, vector<f32>
   return %out#0, %out#1 : vector<32xf32>, vector<f32>
 }
@@ -203,9 +203,9 @@
 // CHECK-DAG: %[[CST:.*]] = arith.constant dense<0.000000e+00> : vector<1x1xf32>
 // CHECK-DAG: %[[SRC_DIST:.*]] = iree_vector_ext.to_simt %{{.*}} : vector<32xf32> -> vector<1x1x4xf32>
 // Local exclusive scan with identity init.
-// CHECK: %[[LOCAL_SCAN:.*]], %[[ACC_VAL:.*]] = vector.scan <add>, %[[SRC_DIST]], %[[CST]] {inclusive = false, reduction_dim = 2 : i64}
+// CHECK: %[[LOCAL_SCAN:.*]], %[[ACC_VAL:.*]] = vector.scan <add>, %[[SRC_DIST]], %[[CST]] reduction_dim = 2, inclusive = false
 // Fix up localTotal: combine accumulated_value with last source element.
-// CHECK: %[[LAST_ELEM:.*]] = vector.extract_strided_slice %[[SRC_DIST]] {offsets = [0, 0, 3], sizes = [1, 1, 1], strides = [1, 1, 1]}
+// CHECK: %[[LAST_ELEM:.*]] = vector.extract_strided_slice %[[SRC_DIST]] offsets = [0, 0, 3], sizes = [1, 1, 1], strides = [1, 1, 1]
 // CHECK: %[[LAST_FLAT:.*]] = vector.shape_cast %[[LAST_ELEM]] : vector<1x1x1xf32> to vector<1x1xf32>
 // CHECK: %[[LOCAL_TOTAL:.*]] = arith.addf %[[ACC_VAL]], %[[LAST_FLAT]] : vector<1x1xf32>
 // Subgroup scan of fixed-up localTotal.
@@ -264,7 +264,7 @@
 // CHECK-LABEL: @scan_multi_bo_inclusive
 func.func @scan_multi_bo_inclusive(%src: vector<32xf32>, %init: vector<f32>) -> (vector<32xf32>, vector<f32>) {
   %src_l = iree_vector_ext.to_layout %src to layout(#layout_scan_multi) : vector<32xf32>
-  %out:2 = vector.scan <add>, %src_l, %init {inclusive = true, reduction_dim = 0 : i64}
+  %out:2 = vector.scan <add>, %src_l, %init reduction_dim = 0, inclusive = true
     : vector<32xf32>, vector<f32>
   return %out#0, %out#1 : vector<32xf32>, vector<f32>
 }
@@ -282,7 +282,7 @@
 // First (b=0): extract srcChunk, local scan, subgroup scan.
 // CHECK: %[[CHUNK0:.*]] = vector.extract %[[SRC_DIST]][0, 0] : vector<4xf32> from vector<2x1x4xf32>
 // CHECK: %[[CHUNK0_RS:.*]] = vector.shape_cast %[[CHUNK0]] : vector<4xf32> to vector<1x1x4xf32>
-// CHECK: %[[SCAN0:.*]], %[[TOTAL0:.*]] = vector.scan <add>, %[[CHUNK0_RS]], %[[ID_VEC]] {inclusive = true, reduction_dim = 2 : i64} : vector<1x1x4xf32>, vector<1x1xf32>
+// CHECK: %[[SCAN0:.*]], %[[TOTAL0:.*]] = vector.scan <add>, %[[CHUNK0_RS]], %[[ID_VEC]] reduction_dim = 2, inclusive = true : vector<1x1x4xf32>, vector<1x1xf32>
 // CHECK: %[[SCALAR0:.*]] = vector.extract %[[TOTAL0]][0, 0] : f32 from vector<1x1xf32>
 // CHECK: %[[SG_SCAN0:.*]], %[[SG_TOTAL0:.*]] = iree_gpu.subgroup_scan(%[[SCALAR0]], {{.*}}) cluster(size = 4)
 // Broadcast both subgroup scan results.
@@ -292,13 +292,13 @@
 // CHECK: %[[BLOCK_INCR0:.*]] = arith.addf %[[SG_SCAN0_VEC]], %[[ID_VEC]] : vector<1x1xf32>
 // CHECK: %[[BLOCK_INCR0_BCAST:.*]] = vector.broadcast %[[BLOCK_INCR0]] : vector<1x1xf32> to vector<1x1x4xf32>
 // CHECK: %[[LOCAL_RESULT0:.*]] = arith.addf %[[BLOCK_INCR0_BCAST]], %[[SCAN0]] : vector<1x1x4xf32>
-// CHECK: %[[RES0:.*]] = vector.insert_strided_slice %[[LOCAL_RESULT0]], %{{.*}} {offsets = [0, 0, 0], strides = [1, 1, 1]}
+// CHECK: %[[RES0:.*]] = vector.insert_strided_slice %[[LOCAL_RESULT0]], %{{.*}} offsets = [0, 0, 0], strides = [1, 1, 1]
 // Advance batchOuterRunning.
 // CHECK: %[[BO_RUNNING1:.*]] = arith.addf %[[SG_TOTAL0_VEC]], %[[ID_VEC]] : vector<1x1xf32>
 // Second (b=1): extract srcChunk, local scan, subgroup scan.
 // CHECK: %[[CHUNK1:.*]] = vector.extract %[[SRC_DIST]][1, 0] : vector<4xf32> from vector<2x1x4xf32>
 // CHECK: %[[CHUNK1_RS:.*]] = vector.shape_cast %[[CHUNK1]] : vector<4xf32> to vector<1x1x4xf32>
-// CHECK: %[[SCAN1:.*]], %[[TOTAL1:.*]] = vector.scan <add>, %[[CHUNK1_RS]], %[[ID_VEC]] {inclusive = true, reduction_dim = 2 : i64} : vector<1x1x4xf32>, vector<1x1xf32>
+// CHECK: %[[SCAN1:.*]], %[[TOTAL1:.*]] = vector.scan <add>, %[[CHUNK1_RS]], %[[ID_VEC]] reduction_dim = 2, inclusive = true : vector<1x1x4xf32>, vector<1x1xf32>
 // CHECK: %[[SCALAR1:.*]] = vector.extract %[[TOTAL1]][0, 0] : f32 from vector<1x1xf32>
 // CHECK: %[[SG_SCAN1:.*]], %[[SG_TOTAL1:.*]] = iree_gpu.subgroup_scan(%[[SCALAR1]], {{.*}}) cluster(size = 4)
 // Broadcast both subgroup scan results.
@@ -308,7 +308,7 @@
 // CHECK: %[[BLOCK_INCR1:.*]] = arith.addf %[[BO_RUNNING1]], %[[SG_SCAN1_VEC]] : vector<1x1xf32>
 // CHECK: %[[BLOCK_INCR1_BCAST:.*]] = vector.broadcast %[[BLOCK_INCR1]] : vector<1x1xf32> to vector<1x1x4xf32>
 // CHECK: %[[LOCAL_RESULT1:.*]] = arith.addf %[[BLOCK_INCR1_BCAST]], %[[SCAN1]] : vector<1x1x4xf32>
-// CHECK: %[[RESULT:.*]] = vector.insert_strided_slice %[[LOCAL_RESULT1]], %[[RES0]] {offsets = [1, 0, 0], strides = [1, 1, 1]}
+// CHECK: %[[RESULT:.*]] = vector.insert_strided_slice %[[LOCAL_RESULT1]], %[[RES0]] offsets = [1, 0, 0], strides = [1, 1, 1]
 // Accumulated value = final batchOuterRunning.
 // CHECK: %[[FINAL_BO_RUNNING:.*]] = arith.addf %[[BO_RUNNING1]], %[[SG_TOTAL1_VEC]] : vector<1x1xf32>
 // CHECK: %[[ACC:.*]] = vector.shape_cast %[[FINAL_BO_RUNNING]] : vector<1x1xf32> to vector<f32>
@@ -333,7 +333,7 @@
 // CHECK-LABEL: @scan_multi_bo_exclusive
 func.func @scan_multi_bo_exclusive(%src: vector<32xf32>, %init: vector<f32>) -> (vector<32xf32>, vector<f32>) {
   %src_l = iree_vector_ext.to_layout %src to layout(#layout_scan_multi_excl) : vector<32xf32>
-  %out:2 = vector.scan <add>, %src_l, %init {inclusive = false, reduction_dim = 0 : i64}
+  %out:2 = vector.scan <add>, %src_l, %init reduction_dim = 0, inclusive = false
     : vector<32xf32>, vector<f32>
   return %out#0, %out#1 : vector<32xf32>, vector<f32>
 }
@@ -351,9 +351,9 @@
 // First (b=0): extract srcChunk, local exclusive scan.
 // CHECK: %[[CHUNK0:.*]] = vector.extract %[[SRC_DIST]][0, 0] : vector<4xf32> from vector<2x1x4xf32>
 // CHECK: %[[CHUNK0_RS:.*]] = vector.shape_cast %[[CHUNK0]] : vector<4xf32> to vector<1x1x4xf32>
-// CHECK: %[[SCAN0:.*]], %[[ACC0:.*]] = vector.scan <add>, %[[CHUNK0_RS]], %[[ID_VEC]] {inclusive = false, reduction_dim = 2 : i64}
+// CHECK: %[[SCAN0:.*]], %[[ACC0:.*]] = vector.scan <add>, %[[CHUNK0_RS]], %[[ID_VEC]] reduction_dim = 2, inclusive = false
 // Fix up localTotal: combine accumulated_value with last source element.
-// CHECK: %[[LAST0:.*]] = vector.extract_strided_slice %[[CHUNK0_RS]] {offsets = [0, 0, 3], sizes = [1, 1, 1], strides = [1, 1, 1]}
+// CHECK: %[[LAST0:.*]] = vector.extract_strided_slice %[[CHUNK0_RS]] offsets = [0, 0, 3], sizes = [1, 1, 1], strides = [1, 1, 1]
 // CHECK: %[[LAST0_FLAT:.*]] = vector.shape_cast %[[LAST0]] : vector<1x1x1xf32> to vector<1x1xf32>
 // CHECK: %[[LOCAL_TOTAL0:.*]] = arith.addf %[[ACC0]], %[[LAST0_FLAT]] : vector<1x1xf32>
 // Subgroup scan.
@@ -366,15 +366,15 @@
 // CHECK: %[[BLOCK_INCR0:.*]] = arith.addf %[[SG_SCAN0_VEC]], %[[ID_VEC]] : vector<1x1xf32>
 // CHECK: %[[BLOCK_INCR0_BCAST:.*]] = vector.broadcast %[[BLOCK_INCR0]] : vector<1x1xf32> to vector<1x1x4xf32>
 // CHECK: %[[LOCAL_RESULT0:.*]] = arith.addf %[[BLOCK_INCR0_BCAST]], %[[SCAN0]] : vector<1x1x4xf32>
-// CHECK: %[[RES0:.*]] = vector.insert_strided_slice %[[LOCAL_RESULT0]], %{{.*}} {offsets = [0, 0, 0], strides = [1, 1, 1]}
+// CHECK: %[[RES0:.*]] = vector.insert_strided_slice %[[LOCAL_RESULT0]], %{{.*}} offsets = [0, 0, 0], strides = [1, 1, 1]
 // Advance batchOuterRunning.
 // CHECK: %[[BO_RUNNING1:.*]] = arith.addf %[[SG_TOTAL0_VEC]], %[[ID_VEC]] : vector<1x1xf32>
 // Second (b=1): extract srcChunk, local exclusive scan.
 // CHECK: %[[CHUNK1:.*]] = vector.extract %[[SRC_DIST]][1, 0] : vector<4xf32> from vector<2x1x4xf32>
 // CHECK: %[[CHUNK1_RS:.*]] = vector.shape_cast %[[CHUNK1]] : vector<4xf32> to vector<1x1x4xf32>
-// CHECK: %[[SCAN1:.*]], %[[ACC1:.*]] = vector.scan <add>, %[[CHUNK1_RS]], %[[ID_VEC]] {inclusive = false, reduction_dim = 2 : i64}
+// CHECK: %[[SCAN1:.*]], %[[ACC1:.*]] = vector.scan <add>, %[[CHUNK1_RS]], %[[ID_VEC]] reduction_dim = 2, inclusive = false
 // Fix up localTotal for second chunk.
-// CHECK: %[[LAST1:.*]] = vector.extract_strided_slice %[[CHUNK1_RS]] {offsets = [0, 0, 3], sizes = [1, 1, 1], strides = [1, 1, 1]}
+// CHECK: %[[LAST1:.*]] = vector.extract_strided_slice %[[CHUNK1_RS]] offsets = [0, 0, 3], sizes = [1, 1, 1], strides = [1, 1, 1]
 // CHECK: %[[LAST1_FLAT:.*]] = vector.shape_cast %[[LAST1]] : vector<1x1x1xf32> to vector<1x1xf32>
 // CHECK: %[[LOCAL_TOTAL1:.*]] = arith.addf %[[ACC1]], %[[LAST1_FLAT]] : vector<1x1xf32>
 // Subgroup scan.
@@ -385,7 +385,7 @@
 // CHECK: %[[BLOCK_INCR1:.*]] = arith.addf %[[BO_RUNNING1]], %[[SG_SCAN1_VEC]] : vector<1x1xf32>
 // CHECK: %[[BLOCK_INCR1_BCAST:.*]] = vector.broadcast %[[BLOCK_INCR1]] : vector<1x1xf32> to vector<1x1x4xf32>
 // CHECK: %[[LOCAL_RESULT1:.*]] = arith.addf %[[BLOCK_INCR1_BCAST]], %[[SCAN1]] : vector<1x1x4xf32>
-// CHECK: %[[PRE_INIT:.*]] = vector.insert_strided_slice %[[LOCAL_RESULT1]], %[[RES0]] {offsets = [1, 0, 0], strides = [1, 1, 1]}
+// CHECK: %[[PRE_INIT:.*]] = vector.insert_strided_slice %[[LOCAL_RESULT1]], %[[RES0]] offsets = [1, 0, 0], strides = [1, 1, 1]
 // Application of user init.
 // CHECK: %[[INIT_DIST:.*]] = iree_vector_ext.to_simt %{{.*}} : vector<f32> -> vector<f32>
 // CHECK: %[[INIT_BCAST:.*]] = vector.broadcast %[[INIT_DIST]] : vector<f32> to vector<2x1x4xf32>
@@ -415,7 +415,7 @@
 // CHECK-LABEL: @scan_2d_dim1_inclusive
 func.func @scan_2d_dim1_inclusive(%src: vector<2x16xf32>, %init: vector<2xf32>) -> (vector<2x16xf32>, vector<2xf32>) {
   %src_l = iree_vector_ext.to_layout %src to layout(#layout_scan_2d_dim1) : vector<2x16xf32>
-  %out:2 = vector.scan <add>, %src_l, %init {inclusive = true, reduction_dim = 1 : i64}
+  %out:2 = vector.scan <add>, %src_l, %init reduction_dim = 1, inclusive = true
     : vector<2x16xf32>, vector<2xf32>
   return %out#0, %out#1 : vector<2x16xf32>, vector<2xf32>
 }
@@ -430,7 +430,7 @@
 
 // CHECK-DAG: %[[ID_VEC:.*]] = arith.constant dense<0.000000e+00> : vector<2x1x1x1x1xf32>
 // CHECK-DAG: %[[SRC_DIST:.*]] = iree_vector_ext.to_simt %{{.*}} : vector<2x16xf32> -> vector<2x1x1x1x1x4xf32>
-// CHECK: %[[LOCAL_SCAN:.*]], %[[LOCAL_TOTAL:.*]] = vector.scan <add>, %[[SRC_DIST]], %[[ID_VEC]] {inclusive = true, reduction_dim = 5 : i64} : vector<2x1x1x1x1x4xf32>, vector<2x1x1x1x1xf32>
+// CHECK: %[[LOCAL_SCAN:.*]], %[[LOCAL_TOTAL:.*]] = vector.scan <add>, %[[SRC_DIST]], %[[ID_VEC]] reduction_dim = 5, inclusive = true : vector<2x1x1x1x1x4xf32>, vector<2x1x1x1x1xf32>
 // CHECK: %[[SCALAR0:.*]] = vector.extract %[[LOCAL_TOTAL]][0, 0, 0, 0, 0] : f32 from vector<2x1x1x1x1xf32>
 // CHECK: iree_gpu.subgroup_scan(%[[SCALAR0]], {{.*}}) cluster(size = 4)
 // CHECK: %[[SCALAR1:.*]] = vector.extract %[[LOCAL_TOTAL]][1, 0, 0, 0, 0] : f32 from vector<2x1x1x1x1xf32>
@@ -456,7 +456,7 @@
 // CHECK-LABEL: @scan_single_bo_exclusive_f16
 func.func @scan_single_bo_exclusive_f16(%src: vector<16xf16>, %init: vector<f16>) -> (vector<16xf16>, vector<f16>) {
   %src_l = iree_vector_ext.to_layout %src to layout(#layout_scan_1d_f16_excl) : vector<16xf16>
-  %out:2 = vector.scan <add>, %src_l, %init {inclusive = false, reduction_dim = 0 : i64}
+  %out:2 = vector.scan <add>, %src_l, %init reduction_dim = 0, inclusive = false
     : vector<16xf16>, vector<f16>
   return %out#0, %out#1 : vector<16xf16>, vector<f16>
 }
@@ -471,7 +471,7 @@
 
 // CHECK-DAG: %[[ID_VEC_F16:.*]] = arith.constant dense<0.000000e+00> : vector<1x1xf16>
 // CHECK-DAG: %[[SRC_DIST_F16:.*]] = iree_vector_ext.to_simt %{{.*}} : vector<16xf16> -> vector<1x1x4xf16>
-// CHECK: %[[LOCAL_SCAN_F16:.*]], %[[ACC_VAL_F16:.*]] = vector.scan <add>, %[[SRC_DIST_F16]], %[[ID_VEC_F16]] {inclusive = false, reduction_dim = 2 : i64}
+// CHECK: %[[LOCAL_SCAN_F16:.*]], %[[ACC_VAL_F16:.*]] = vector.scan <add>, %[[SRC_DIST_F16]], %[[ID_VEC_F16]] reduction_dim = 2, inclusive = false
 // CHECK: arith.addf %{{.*}}, %{{.*}} : vector<1x1x4xf16>
 // CHECK: %[[LAST_ACC_F16:.*]] = vector.extract %{{.*}}[0, 0, 3] : f16 from vector<1x1x4xf16>
 // CHECK: %[[PACKED:.*]] = arith.bitcast %[[LAST_ACC_F16]] : f16 to i16
@@ -500,7 +500,7 @@
 // CHECK-LABEL: @scan_thread_tile_1_inclusive
 func.func @scan_thread_tile_1_inclusive(%src: vector<4xf32>, %init: vector<f32>) -> (vector<4xf32>, vector<f32>) {
   %src_l = iree_vector_ext.to_layout %src to layout(#layout_scan_1d_thread_tile_1) : vector<4xf32>
-  %out:2 = vector.scan <add>, %src_l, %init {inclusive = true, reduction_dim = 0 : i64}
+  %out:2 = vector.scan <add>, %src_l, %init reduction_dim = 0, inclusive = true
     : vector<4xf32>, vector<f32>
   return %out#0, %out#1 : vector<4xf32>, vector<f32>
 }
@@ -515,7 +515,7 @@
 
 // CHECK-DAG: %[[ID_VEC_T1:.*]] = arith.constant dense<0.000000e+00> : vector<1x1xf32>
 // CHECK-DAG: %[[SRC_DIST_T1:.*]] = iree_vector_ext.to_simt %{{.*}} : vector<4xf32> -> vector<1x1x4xf32>
-// CHECK: %[[LOCAL_SCAN_T1:.*]], %[[LOCAL_TOTAL_T1:.*]] = vector.scan <add>, %[[SRC_DIST_T1]], %[[ID_VEC_T1]] {inclusive = true, reduction_dim = 2 : i64} : vector<1x1x4xf32>, vector<1x1xf32>
+// CHECK: %[[LOCAL_SCAN_T1:.*]], %[[LOCAL_TOTAL_T1:.*]] = vector.scan <add>, %[[SRC_DIST_T1]], %[[ID_VEC_T1]] reduction_dim = 2, inclusive = true : vector<1x1x4xf32>, vector<1x1xf32>
 // CHECK-NOT: iree_gpu.subgroup_scan
 // CHECK: arith.addf %[[LOCAL_SCAN_T1]], %{{.*}} : vector<1x1x4xf32>
 // CHECK: %[[BO_RUNNING_T1:.*]] = arith.addf %[[LOCAL_TOTAL_T1]], %[[ID_VEC_T1]] : vector<1x1xf32>
diff --git a/compiler/src/iree/compiler/Codegen/Common/GPU/test/gpu_pipeline.mlir b/compiler/src/iree/compiler/Codegen/Common/GPU/test/gpu_pipeline.mlir
index a91a36e..b76f6b3 100644
--- a/compiler/src/iree/compiler/Codegen/Common/GPU/test/gpu_pipeline.mlir
+++ b/compiler/src/iree/compiler/Codegen/Common/GPU/test/gpu_pipeline.mlir
@@ -39,18 +39,18 @@
     nvgpu.device_async_wait %21
     gpu.barrier memfence [#gpu.address_space<workgroup>]
     %22 = affine.apply affine_map<()[s0] -> (s0 * 16)>()[%2]
-    %23 = gpu.subgroup_mma_load_matrix %4[%16, %22, %c0] {leadDimension = 40 : index} : memref<4x32x40xf16, 3> -> !gpu.mma_matrix<16x16xf16, "AOp">
-    %24 = gpu.subgroup_mma_load_matrix %4[%16, %22, %c16] {leadDimension = 40 : index} : memref<4x32x40xf16, 3> -> !gpu.mma_matrix<16x16xf16, "AOp">
+    %23 = gpu.subgroup_mma_load_matrix %4[%16, %22, %c0] leadDimension 40 : memref<4x32x40xf16, 3> -> !gpu.mma_matrix<16x16xf16, "AOp">
+    %24 = gpu.subgroup_mma_load_matrix %4[%16, %22, %c16] leadDimension 40 : memref<4x32x40xf16, 3> -> !gpu.mma_matrix<16x16xf16, "AOp">
     %25 = affine.apply affine_map<()[s0] -> ((s0 floordiv 32) * 16)>()[%1]
-    %26 = gpu.subgroup_mma_load_matrix %5[%16, %c0, %25] {leadDimension = 40 : index} : memref<4x32x40xf16, 3> -> !gpu.mma_matrix<16x16xf16, "BOp">
-    %27 = gpu.subgroup_mma_load_matrix %5[%16, %c16, %25] {leadDimension = 40 : index} : memref<4x32x40xf16, 3> -> !gpu.mma_matrix<16x16xf16, "BOp">
+    %26 = gpu.subgroup_mma_load_matrix %5[%16, %c0, %25] leadDimension 40 : memref<4x32x40xf16, 3> -> !gpu.mma_matrix<16x16xf16, "BOp">
+    %27 = gpu.subgroup_mma_load_matrix %5[%16, %c16, %25] leadDimension 40 : memref<4x32x40xf16, 3> -> !gpu.mma_matrix<16x16xf16, "BOp">
     %28 = gpu.subgroup_mma_compute %23, %26, %arg1 : !gpu.mma_matrix<16x16xf16, "AOp">, !gpu.mma_matrix<16x16xf16, "BOp"> -> !gpu.mma_matrix<16x16xf16, "COp">
     %29 = gpu.subgroup_mma_compute %24, %27, %28 : !gpu.mma_matrix<16x16xf16, "AOp">, !gpu.mma_matrix<16x16xf16, "BOp"> -> !gpu.mma_matrix<16x16xf16, "COp">
     scf.yield %29 : !gpu.mma_matrix<16x16xf16, "COp">
   }
   %12 = affine.apply affine_map<()[s0, s1] -> (s0 * 16 + s1 * 32)>()[%2, %workgroup_id_y]
   %13 = affine.apply affine_map<()[s0, s1] -> (s1 * 32 + (s0 floordiv 32) * 16)>()[%1, %workgroup_id_x]
-  gpu.subgroup_mma_store_matrix %11, %8[%12, %13] {leadDimension = 1024 : index} : !gpu.mma_matrix<16x16xf16, "COp">, memref<3456x1024xf16>
+  gpu.subgroup_mma_store_matrix %11, %8[%12, %13] leadDimension 1024 : !gpu.mma_matrix<16x16xf16, "COp">, memref<3456x1024xf16>
   return
 }
 // CHECK-LABEL: func.func @_matmul_f16_f16_dispatch_0_fill_3456x1024
@@ -94,13 +94,13 @@
     %143 = arith.andi %140, %c6 : index
     %144 = arith.shli %143, %c2 : index
     %145 = arith.xori %141, %144 : index
-    %146 = nvgpu.device_async_copy %3[%139, %138], %alloc_1[%142, %140, %145], 8 {bypassL1} : memref<512x1280xf16> to memref<3x128x32xf16, #gpu.address_space<workgroup>>
+    %146 = nvgpu.device_async_copy %3[%139, %138], %alloc_1[%142, %140, %145], 8 bypassL1 : memref<512x1280xf16> to memref<3x128x32xf16, #gpu.address_space<workgroup>>
     %147 = affine.apply affine_map<()[s0, s1, s2, s3] -> (s1 * 32 + s2 * 64 + s3 * 128 + s0 floordiv 4 + 64)>()[%0, %1, %2, %workgroup_id_y]
     %148 = affine.apply affine_map<()[s0, s1, s2] -> (s1 * 32 + s2 * 64 + s0 floordiv 4 + 64)>()[%0, %1, %2]
     %149 = arith.andi %148, %c6 : index
     %150 = arith.shli %149, %c2 : index
     %151 = arith.xori %141, %150 : index
-    %152 = nvgpu.device_async_copy %3[%147, %138], %alloc_1[%142, %148, %151], 8 {bypassL1} : memref<512x1280xf16> to memref<3x128x32xf16, #gpu.address_space<workgroup>>
+    %152 = nvgpu.device_async_copy %3[%147, %138], %alloc_1[%142, %148, %151], 8 bypassL1 : memref<512x1280xf16> to memref<3x128x32xf16, #gpu.address_space<workgroup>>
     %153 = affine.apply affine_map<()[s0, s1, s2, s3] -> (s0 + s2 * 4 + s3 * 8 + s1 floordiv 32)>()[%arg0, %0, %1, %2]
     %154 = affine.apply affine_map<()[s0, s1] -> (s0 * 8 + s1 * 256 - (s0 floordiv 32) * 256)>()[%0, %workgroup_id_x]
     %155 = affine.apply affine_map<()[s0, s1, s2] -> (s1 * 4 + s2 * 8 + s0 floordiv 32)>()[%0, %1, %2]
@@ -108,25 +108,25 @@
     %157 = arith.andi %155, %c31 : index
     %158 = arith.shli %157, %c3 : index
     %159 = arith.xori %156, %158 : index
-    %160 = nvgpu.device_async_copy %4[%153, %154], %alloc_2[%142, %155, %159], 8 {bypassL1} : memref<1280x1280xf16> to memref<3x32x256xf16, #gpu.address_space<workgroup>>
+    %160 = nvgpu.device_async_copy %4[%153, %154], %alloc_2[%142, %155, %159], 8 bypassL1 : memref<1280x1280xf16> to memref<3x32x256xf16, #gpu.address_space<workgroup>>
     %161 = affine.apply affine_map<()[s0, s1, s2, s3] -> (s0 + s2 * 4 + s3 * 8 + s1 floordiv 32 + 8)>()[%arg0, %0, %1, %2]
     %162 = affine.apply affine_map<()[s0, s1, s2] -> (s1 * 4 + s2 * 8 + s0 floordiv 32 + 8)>()[%0, %1, %2]
     %163 = arith.andi %162, %c31 : index
     %164 = arith.shli %163, %c3 : index
     %165 = arith.xori %156, %164 : index
-    %166 = nvgpu.device_async_copy %4[%161, %154], %alloc_2[%142, %162, %165], 8 {bypassL1} : memref<1280x1280xf16> to memref<3x32x256xf16, #gpu.address_space<workgroup>>
+    %166 = nvgpu.device_async_copy %4[%161, %154], %alloc_2[%142, %162, %165], 8 bypassL1 : memref<1280x1280xf16> to memref<3x32x256xf16, #gpu.address_space<workgroup>>
     %167 = affine.apply affine_map<()[s0, s1, s2, s3] -> (s0 + s2 * 4 + s3 * 8 + s1 floordiv 32 + 16)>()[%arg0, %0, %1, %2]
     %168 = affine.apply affine_map<()[s0, s1, s2] -> (s1 * 4 + s2 * 8 + s0 floordiv 32 + 16)>()[%0, %1, %2]
     %169 = arith.andi %168, %c31 : index
     %170 = arith.shli %169, %c3 : index
     %171 = arith.xori %156, %170 : index
-    %172 = nvgpu.device_async_copy %4[%167, %154], %alloc_2[%142, %168, %171], 8 {bypassL1} : memref<1280x1280xf16> to memref<3x32x256xf16, #gpu.address_space<workgroup>>
+    %172 = nvgpu.device_async_copy %4[%167, %154], %alloc_2[%142, %168, %171], 8 bypassL1 : memref<1280x1280xf16> to memref<3x32x256xf16, #gpu.address_space<workgroup>>
     %173 = affine.apply affine_map<()[s0, s1, s2, s3] -> (s0 + s2 * 4 + s3 * 8 + s1 floordiv 32 + 24)>()[%arg0, %0, %1, %2]
     %174 = affine.apply affine_map<()[s0, s1, s2] -> (s1 * 4 + s2 * 8 + s0 floordiv 32 + 24)>()[%0, %1, %2]
     %175 = arith.andi %174, %c31 : index
     %176 = arith.shli %175, %c3 : index
     %177 = arith.xori %156, %176 : index
-    %178 = nvgpu.device_async_copy %4[%173, %154], %alloc_2[%142, %174, %177], 8 {bypassL1} : memref<1280x1280xf16> to memref<3x32x256xf16, #gpu.address_space<workgroup>>
+    %178 = nvgpu.device_async_copy %4[%173, %154], %alloc_2[%142, %174, %177], 8 bypassL1 : memref<1280x1280xf16> to memref<3x32x256xf16, #gpu.address_space<workgroup>>
     %179 = nvgpu.device_async_create_group %146, %152, %160, %166, %172, %178
     nvgpu.device_async_wait %179
     gpu.barrier memfence [#gpu.address_space<workgroup>]
@@ -136,137 +136,137 @@
     %183 = arith.andi %181, %c6 : index
     %184 = arith.shli %183, %c2 : index
     %185 = arith.xori %182, %184 : index
-    %186 = nvgpu.ldmatrix %alloc_1[%142, %181, %185] {numTiles = 4 : i32, transpose = false} : memref<3x128x32xf16, #gpu.address_space<workgroup>> -> vector<4x2xf16>
+    %186 = nvgpu.ldmatrix %alloc_1[%142, %181, %185] numTiles = 4 transpose = false : memref<3x128x32xf16, #gpu.address_space<workgroup>> -> vector<4x2xf16>
     %187 = affine.apply affine_map<(d0) -> ((d0 floordiv 16) * 8 + 16)>(%180)
     %188 = arith.xori %187, %184 : index
-    %189 = nvgpu.ldmatrix %alloc_1[%142, %181, %188] {numTiles = 4 : i32, transpose = false} : memref<3x128x32xf16, #gpu.address_space<workgroup>> -> vector<4x2xf16>
+    %189 = nvgpu.ldmatrix %alloc_1[%142, %181, %188] numTiles = 4 transpose = false : memref<3x128x32xf16, #gpu.address_space<workgroup>> -> vector<4x2xf16>
     %190 = affine.apply affine_map<(d0)[s0] -> (d0 + s0 * 64 - (d0 floordiv 16) * 16 + 16)>(%180)[%1]
     %191 = arith.andi %190, %c6 : index
     %192 = arith.shli %191, %c2 : index
     %193 = arith.xori %182, %192 : index
-    %194 = nvgpu.ldmatrix %alloc_1[%142, %190, %193] {numTiles = 4 : i32, transpose = false} : memref<3x128x32xf16, #gpu.address_space<workgroup>> -> vector<4x2xf16>
+    %194 = nvgpu.ldmatrix %alloc_1[%142, %190, %193] numTiles = 4 transpose = false : memref<3x128x32xf16, #gpu.address_space<workgroup>> -> vector<4x2xf16>
     %195 = arith.xori %187, %192 : index
-    %196 = nvgpu.ldmatrix %alloc_1[%142, %190, %195] {numTiles = 4 : i32, transpose = false} : memref<3x128x32xf16, #gpu.address_space<workgroup>> -> vector<4x2xf16>
+    %196 = nvgpu.ldmatrix %alloc_1[%142, %190, %195] numTiles = 4 transpose = false : memref<3x128x32xf16, #gpu.address_space<workgroup>> -> vector<4x2xf16>
     %197 = affine.apply affine_map<(d0)[s0] -> (d0 + s0 * 64 - (d0 floordiv 16) * 16 + 32)>(%180)[%1]
     %198 = arith.andi %197, %c6 : index
     %199 = arith.shli %198, %c2 : index
     %200 = arith.xori %182, %199 : index
-    %201 = nvgpu.ldmatrix %alloc_1[%142, %197, %200] {numTiles = 4 : i32, transpose = false} : memref<3x128x32xf16, #gpu.address_space<workgroup>> -> vector<4x2xf16>
+    %201 = nvgpu.ldmatrix %alloc_1[%142, %197, %200] numTiles = 4 transpose = false : memref<3x128x32xf16, #gpu.address_space<workgroup>> -> vector<4x2xf16>
     %202 = arith.xori %187, %199 : index
-    %203 = nvgpu.ldmatrix %alloc_1[%142, %197, %202] {numTiles = 4 : i32, transpose = false} : memref<3x128x32xf16, #gpu.address_space<workgroup>> -> vector<4x2xf16>
+    %203 = nvgpu.ldmatrix %alloc_1[%142, %197, %202] numTiles = 4 transpose = false : memref<3x128x32xf16, #gpu.address_space<workgroup>> -> vector<4x2xf16>
     %204 = affine.apply affine_map<(d0)[s0] -> (d0 + s0 * 64 - (d0 floordiv 16) * 16 + 48)>(%180)[%1]
     %205 = arith.andi %204, %c6 : index
     %206 = arith.shli %205, %c2 : index
     %207 = arith.xori %182, %206 : index
-    %208 = nvgpu.ldmatrix %alloc_1[%142, %204, %207] {numTiles = 4 : i32, transpose = false} : memref<3x128x32xf16, #gpu.address_space<workgroup>> -> vector<4x2xf16>
+    %208 = nvgpu.ldmatrix %alloc_1[%142, %204, %207] numTiles = 4 transpose = false : memref<3x128x32xf16, #gpu.address_space<workgroup>> -> vector<4x2xf16>
     %209 = arith.xori %187, %206 : index
-    %210 = nvgpu.ldmatrix %alloc_1[%142, %204, %209] {numTiles = 4 : i32, transpose = false} : memref<3x128x32xf16, #gpu.address_space<workgroup>> -> vector<4x2xf16>
+    %210 = nvgpu.ldmatrix %alloc_1[%142, %204, %209] numTiles = 4 transpose = false : memref<3x128x32xf16, #gpu.address_space<workgroup>> -> vector<4x2xf16>
     %211 = affine.apply affine_map<(d0)[s0] -> ((d0 floordiv 16) * 8 + (s0 floordiv 32) * 64)>(%180)[%0]
     %212 = affine.apply affine_map<(d0) -> (d0 mod 16)>(%180)
     %213 = arith.andi %212, %c31 : index
     %214 = arith.shli %213, %c3 : index
     %215 = arith.xori %211, %214 : index
-    %216 = nvgpu.ldmatrix %alloc_2[%142, %212, %215] {numTiles = 4 : i32, transpose = true} : memref<3x32x256xf16, #gpu.address_space<workgroup>> -> vector<4x2xf16>
+    %216 = nvgpu.ldmatrix %alloc_2[%142, %212, %215] numTiles = 4 transpose = true : memref<3x32x256xf16, #gpu.address_space<workgroup>> -> vector<4x2xf16>
     %217 = affine.apply affine_map<(d0) -> (d0 mod 16 + 16)>(%180)
     %218 = arith.andi %217, %c31 : index
     %219 = arith.shli %218, %c3 : index
     %220 = arith.xori %211, %219 : index
-    %221 = nvgpu.ldmatrix %alloc_2[%142, %217, %220] {numTiles = 4 : i32, transpose = true} : memref<3x32x256xf16, #gpu.address_space<workgroup>> -> vector<4x2xf16>
+    %221 = nvgpu.ldmatrix %alloc_2[%142, %217, %220] numTiles = 4 transpose = true : memref<3x32x256xf16, #gpu.address_space<workgroup>> -> vector<4x2xf16>
     %222 = affine.apply affine_map<(d0)[s0] -> ((d0 floordiv 16) * 8 + (s0 floordiv 32) * 64 + 16)>(%180)[%0]
     %223 = arith.xori %222, %214 : index
-    %224 = nvgpu.ldmatrix %alloc_2[%142, %212, %223] {numTiles = 4 : i32, transpose = true} : memref<3x32x256xf16, #gpu.address_space<workgroup>> -> vector<4x2xf16>
+    %224 = nvgpu.ldmatrix %alloc_2[%142, %212, %223] numTiles = 4 transpose = true : memref<3x32x256xf16, #gpu.address_space<workgroup>> -> vector<4x2xf16>
     %225 = arith.xori %222, %219 : index
-    %226 = nvgpu.ldmatrix %alloc_2[%142, %217, %225] {numTiles = 4 : i32, transpose = true} : memref<3x32x256xf16, #gpu.address_space<workgroup>> -> vector<4x2xf16>
+    %226 = nvgpu.ldmatrix %alloc_2[%142, %217, %225] numTiles = 4 transpose = true : memref<3x32x256xf16, #gpu.address_space<workgroup>> -> vector<4x2xf16>
     %227 = affine.apply affine_map<(d0)[s0] -> ((d0 floordiv 16) * 8 + (s0 floordiv 32) * 64 + 32)>(%180)[%0]
     %228 = arith.xori %227, %214 : index
-    %229 = nvgpu.ldmatrix %alloc_2[%142, %212, %228] {numTiles = 4 : i32, transpose = true} : memref<3x32x256xf16, #gpu.address_space<workgroup>> -> vector<4x2xf16>
+    %229 = nvgpu.ldmatrix %alloc_2[%142, %212, %228] numTiles = 4 transpose = true : memref<3x32x256xf16, #gpu.address_space<workgroup>> -> vector<4x2xf16>
     %230 = arith.xori %227, %219 : index
-    %231 = nvgpu.ldmatrix %alloc_2[%142, %217, %230] {numTiles = 4 : i32, transpose = true} : memref<3x32x256xf16, #gpu.address_space<workgroup>> -> vector<4x2xf16>
+    %231 = nvgpu.ldmatrix %alloc_2[%142, %217, %230] numTiles = 4 transpose = true : memref<3x32x256xf16, #gpu.address_space<workgroup>> -> vector<4x2xf16>
     %232 = affine.apply affine_map<(d0)[s0] -> ((d0 floordiv 16) * 8 + (s0 floordiv 32) * 64 + 48)>(%180)[%0]
     %233 = arith.xori %232, %214 : index
-    %234 = nvgpu.ldmatrix %alloc_2[%142, %212, %233] {numTiles = 4 : i32, transpose = true} : memref<3x32x256xf16, #gpu.address_space<workgroup>> -> vector<4x2xf16>
+    %234 = nvgpu.ldmatrix %alloc_2[%142, %212, %233] numTiles = 4 transpose = true : memref<3x32x256xf16, #gpu.address_space<workgroup>> -> vector<4x2xf16>
     %235 = arith.xori %232, %219 : index
-    %236 = nvgpu.ldmatrix %alloc_2[%142, %217, %235] {numTiles = 4 : i32, transpose = true} : memref<3x32x256xf16, #gpu.address_space<workgroup>> -> vector<4x2xf16>
-    %237 = vector.extract_strided_slice %216 {offsets = [0, 0], sizes = [2, 2], strides = [1, 1]} : vector<4x2xf16> to vector<2x2xf16>
-    %238 = nvgpu.mma.sync(%186, %237, %arg1) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %239 = vector.extract_strided_slice %216 {offsets = [2, 0], sizes = [2, 2], strides = [1, 1]} : vector<4x2xf16> to vector<2x2xf16>
-    %240 = nvgpu.mma.sync(%186, %239, %arg2) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %241 = vector.extract_strided_slice %224 {offsets = [0, 0], sizes = [2, 2], strides = [1, 1]} : vector<4x2xf16> to vector<2x2xf16>
-    %242 = nvgpu.mma.sync(%186, %241, %arg3) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %243 = vector.extract_strided_slice %224 {offsets = [2, 0], sizes = [2, 2], strides = [1, 1]} : vector<4x2xf16> to vector<2x2xf16>
-    %244 = nvgpu.mma.sync(%186, %243, %arg4) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %245 = vector.extract_strided_slice %229 {offsets = [0, 0], sizes = [2, 2], strides = [1, 1]} : vector<4x2xf16> to vector<2x2xf16>
-    %246 = nvgpu.mma.sync(%186, %245, %arg5) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %247 = vector.extract_strided_slice %229 {offsets = [2, 0], sizes = [2, 2], strides = [1, 1]} : vector<4x2xf16> to vector<2x2xf16>
-    %248 = nvgpu.mma.sync(%186, %247, %arg6) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %249 = vector.extract_strided_slice %234 {offsets = [0, 0], sizes = [2, 2], strides = [1, 1]} : vector<4x2xf16> to vector<2x2xf16>
-    %250 = nvgpu.mma.sync(%186, %249, %arg7) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %251 = vector.extract_strided_slice %234 {offsets = [2, 0], sizes = [2, 2], strides = [1, 1]} : vector<4x2xf16> to vector<2x2xf16>
-    %252 = nvgpu.mma.sync(%186, %251, %arg8) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %253 = nvgpu.mma.sync(%194, %237, %arg9) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %254 = nvgpu.mma.sync(%194, %239, %arg10) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %255 = nvgpu.mma.sync(%194, %241, %arg11) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %256 = nvgpu.mma.sync(%194, %243, %arg12) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %257 = nvgpu.mma.sync(%194, %245, %arg13) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %258 = nvgpu.mma.sync(%194, %247, %arg14) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %259 = nvgpu.mma.sync(%194, %249, %arg15) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %260 = nvgpu.mma.sync(%194, %251, %arg16) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %261 = nvgpu.mma.sync(%201, %237, %arg17) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %262 = nvgpu.mma.sync(%201, %239, %arg18) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %263 = nvgpu.mma.sync(%201, %241, %arg19) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %264 = nvgpu.mma.sync(%201, %243, %arg20) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %265 = nvgpu.mma.sync(%201, %245, %arg21) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %266 = nvgpu.mma.sync(%201, %247, %arg22) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %267 = nvgpu.mma.sync(%201, %249, %arg23) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %268 = nvgpu.mma.sync(%201, %251, %arg24) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %269 = nvgpu.mma.sync(%208, %237, %arg25) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %270 = nvgpu.mma.sync(%208, %239, %arg26) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %271 = nvgpu.mma.sync(%208, %241, %arg27) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %272 = nvgpu.mma.sync(%208, %243, %arg28) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %273 = nvgpu.mma.sync(%208, %245, %arg29) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %274 = nvgpu.mma.sync(%208, %247, %arg30) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %275 = nvgpu.mma.sync(%208, %249, %arg31) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %276 = nvgpu.mma.sync(%208, %251, %arg32) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %277 = vector.extract_strided_slice %221 {offsets = [0, 0], sizes = [2, 2], strides = [1, 1]} : vector<4x2xf16> to vector<2x2xf16>
-    %278 = nvgpu.mma.sync(%189, %277, %238) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %279 = vector.extract_strided_slice %221 {offsets = [2, 0], sizes = [2, 2], strides = [1, 1]} : vector<4x2xf16> to vector<2x2xf16>
-    %280 = nvgpu.mma.sync(%189, %279, %240) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %281 = vector.extract_strided_slice %226 {offsets = [0, 0], sizes = [2, 2], strides = [1, 1]} : vector<4x2xf16> to vector<2x2xf16>
-    %282 = nvgpu.mma.sync(%189, %281, %242) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %283 = vector.extract_strided_slice %226 {offsets = [2, 0], sizes = [2, 2], strides = [1, 1]} : vector<4x2xf16> to vector<2x2xf16>
-    %284 = nvgpu.mma.sync(%189, %283, %244) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %285 = vector.extract_strided_slice %231 {offsets = [0, 0], sizes = [2, 2], strides = [1, 1]} : vector<4x2xf16> to vector<2x2xf16>
-    %286 = nvgpu.mma.sync(%189, %285, %246) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %287 = vector.extract_strided_slice %231 {offsets = [2, 0], sizes = [2, 2], strides = [1, 1]} : vector<4x2xf16> to vector<2x2xf16>
-    %288 = nvgpu.mma.sync(%189, %287, %248) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %289 = vector.extract_strided_slice %236 {offsets = [0, 0], sizes = [2, 2], strides = [1, 1]} : vector<4x2xf16> to vector<2x2xf16>
-    %290 = nvgpu.mma.sync(%189, %289, %250) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %291 = vector.extract_strided_slice %236 {offsets = [2, 0], sizes = [2, 2], strides = [1, 1]} : vector<4x2xf16> to vector<2x2xf16>
-    %292 = nvgpu.mma.sync(%189, %291, %252) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %293 = nvgpu.mma.sync(%196, %277, %253) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %294 = nvgpu.mma.sync(%196, %279, %254) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %295 = nvgpu.mma.sync(%196, %281, %255) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %296 = nvgpu.mma.sync(%196, %283, %256) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %297 = nvgpu.mma.sync(%196, %285, %257) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %298 = nvgpu.mma.sync(%196, %287, %258) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %299 = nvgpu.mma.sync(%196, %289, %259) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %300 = nvgpu.mma.sync(%196, %291, %260) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %301 = nvgpu.mma.sync(%203, %277, %261) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %302 = nvgpu.mma.sync(%203, %279, %262) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %303 = nvgpu.mma.sync(%203, %281, %263) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %304 = nvgpu.mma.sync(%203, %283, %264) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %305 = nvgpu.mma.sync(%203, %285, %265) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %306 = nvgpu.mma.sync(%203, %287, %266) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %307 = nvgpu.mma.sync(%203, %289, %267) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %308 = nvgpu.mma.sync(%203, %291, %268) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %309 = nvgpu.mma.sync(%210, %277, %269) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %310 = nvgpu.mma.sync(%210, %279, %270) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %311 = nvgpu.mma.sync(%210, %281, %271) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %312 = nvgpu.mma.sync(%210, %283, %272) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %313 = nvgpu.mma.sync(%210, %285, %273) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %314 = nvgpu.mma.sync(%210, %287, %274) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %315 = nvgpu.mma.sync(%210, %289, %275) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
-    %316 = nvgpu.mma.sync(%210, %291, %276) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %236 = nvgpu.ldmatrix %alloc_2[%142, %217, %235] numTiles = 4 transpose = true : memref<3x32x256xf16, #gpu.address_space<workgroup>> -> vector<4x2xf16>
+    %237 = vector.extract_strided_slice %216 offsets = [0, 0], sizes = [2, 2], strides = [1, 1] : vector<4x2xf16> to vector<2x2xf16>
+    %238 = nvgpu.mma.sync(%186, %237, %arg1) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %239 = vector.extract_strided_slice %216 offsets = [2, 0], sizes = [2, 2], strides = [1, 1] : vector<4x2xf16> to vector<2x2xf16>
+    %240 = nvgpu.mma.sync(%186, %239, %arg2) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %241 = vector.extract_strided_slice %224 offsets = [0, 0], sizes = [2, 2], strides = [1, 1] : vector<4x2xf16> to vector<2x2xf16>
+    %242 = nvgpu.mma.sync(%186, %241, %arg3) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %243 = vector.extract_strided_slice %224 offsets = [2, 0], sizes = [2, 2], strides = [1, 1] : vector<4x2xf16> to vector<2x2xf16>
+    %244 = nvgpu.mma.sync(%186, %243, %arg4) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %245 = vector.extract_strided_slice %229 offsets = [0, 0], sizes = [2, 2], strides = [1, 1] : vector<4x2xf16> to vector<2x2xf16>
+    %246 = nvgpu.mma.sync(%186, %245, %arg5) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %247 = vector.extract_strided_slice %229 offsets = [2, 0], sizes = [2, 2], strides = [1, 1] : vector<4x2xf16> to vector<2x2xf16>
+    %248 = nvgpu.mma.sync(%186, %247, %arg6) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %249 = vector.extract_strided_slice %234 offsets = [0, 0], sizes = [2, 2], strides = [1, 1] : vector<4x2xf16> to vector<2x2xf16>
+    %250 = nvgpu.mma.sync(%186, %249, %arg7) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %251 = vector.extract_strided_slice %234 offsets = [2, 0], sizes = [2, 2], strides = [1, 1] : vector<4x2xf16> to vector<2x2xf16>
+    %252 = nvgpu.mma.sync(%186, %251, %arg8) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %253 = nvgpu.mma.sync(%194, %237, %arg9) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %254 = nvgpu.mma.sync(%194, %239, %arg10) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %255 = nvgpu.mma.sync(%194, %241, %arg11) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %256 = nvgpu.mma.sync(%194, %243, %arg12) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %257 = nvgpu.mma.sync(%194, %245, %arg13) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %258 = nvgpu.mma.sync(%194, %247, %arg14) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %259 = nvgpu.mma.sync(%194, %249, %arg15) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %260 = nvgpu.mma.sync(%194, %251, %arg16) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %261 = nvgpu.mma.sync(%201, %237, %arg17) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %262 = nvgpu.mma.sync(%201, %239, %arg18) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %263 = nvgpu.mma.sync(%201, %241, %arg19) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %264 = nvgpu.mma.sync(%201, %243, %arg20) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %265 = nvgpu.mma.sync(%201, %245, %arg21) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %266 = nvgpu.mma.sync(%201, %247, %arg22) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %267 = nvgpu.mma.sync(%201, %249, %arg23) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %268 = nvgpu.mma.sync(%201, %251, %arg24) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %269 = nvgpu.mma.sync(%208, %237, %arg25) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %270 = nvgpu.mma.sync(%208, %239, %arg26) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %271 = nvgpu.mma.sync(%208, %241, %arg27) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %272 = nvgpu.mma.sync(%208, %243, %arg28) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %273 = nvgpu.mma.sync(%208, %245, %arg29) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %274 = nvgpu.mma.sync(%208, %247, %arg30) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %275 = nvgpu.mma.sync(%208, %249, %arg31) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %276 = nvgpu.mma.sync(%208, %251, %arg32) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %277 = vector.extract_strided_slice %221 offsets = [0, 0], sizes = [2, 2], strides = [1, 1] : vector<4x2xf16> to vector<2x2xf16>
+    %278 = nvgpu.mma.sync(%189, %277, %238) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %279 = vector.extract_strided_slice %221 offsets = [2, 0], sizes = [2, 2], strides = [1, 1] : vector<4x2xf16> to vector<2x2xf16>
+    %280 = nvgpu.mma.sync(%189, %279, %240) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %281 = vector.extract_strided_slice %226 offsets = [0, 0], sizes = [2, 2], strides = [1, 1] : vector<4x2xf16> to vector<2x2xf16>
+    %282 = nvgpu.mma.sync(%189, %281, %242) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %283 = vector.extract_strided_slice %226 offsets = [2, 0], sizes = [2, 2], strides = [1, 1] : vector<4x2xf16> to vector<2x2xf16>
+    %284 = nvgpu.mma.sync(%189, %283, %244) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %285 = vector.extract_strided_slice %231 offsets = [0, 0], sizes = [2, 2], strides = [1, 1] : vector<4x2xf16> to vector<2x2xf16>
+    %286 = nvgpu.mma.sync(%189, %285, %246) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %287 = vector.extract_strided_slice %231 offsets = [2, 0], sizes = [2, 2], strides = [1, 1] : vector<4x2xf16> to vector<2x2xf16>
+    %288 = nvgpu.mma.sync(%189, %287, %248) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %289 = vector.extract_strided_slice %236 offsets = [0, 0], sizes = [2, 2], strides = [1, 1] : vector<4x2xf16> to vector<2x2xf16>
+    %290 = nvgpu.mma.sync(%189, %289, %250) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %291 = vector.extract_strided_slice %236 offsets = [2, 0], sizes = [2, 2], strides = [1, 1] : vector<4x2xf16> to vector<2x2xf16>
+    %292 = nvgpu.mma.sync(%189, %291, %252) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %293 = nvgpu.mma.sync(%196, %277, %253) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %294 = nvgpu.mma.sync(%196, %279, %254) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %295 = nvgpu.mma.sync(%196, %281, %255) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %296 = nvgpu.mma.sync(%196, %283, %256) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %297 = nvgpu.mma.sync(%196, %285, %257) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %298 = nvgpu.mma.sync(%196, %287, %258) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %299 = nvgpu.mma.sync(%196, %289, %259) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %300 = nvgpu.mma.sync(%196, %291, %260) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %301 = nvgpu.mma.sync(%203, %277, %261) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %302 = nvgpu.mma.sync(%203, %279, %262) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %303 = nvgpu.mma.sync(%203, %281, %263) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %304 = nvgpu.mma.sync(%203, %283, %264) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %305 = nvgpu.mma.sync(%203, %285, %265) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %306 = nvgpu.mma.sync(%203, %287, %266) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %307 = nvgpu.mma.sync(%203, %289, %267) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %308 = nvgpu.mma.sync(%203, %291, %268) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %309 = nvgpu.mma.sync(%210, %277, %269) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %310 = nvgpu.mma.sync(%210, %279, %270) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %311 = nvgpu.mma.sync(%210, %281, %271) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %312 = nvgpu.mma.sync(%210, %283, %272) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %313 = nvgpu.mma.sync(%210, %285, %273) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %314 = nvgpu.mma.sync(%210, %287, %274) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %315 = nvgpu.mma.sync(%210, %289, %275) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+    %316 = nvgpu.mma.sync(%210, %291, %276) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
     scf.yield %278, %280, %282, %284, %286, %288, %290, %292, %293, %294, %295, %296, %297, %298, %299, %300, %301, %302, %303, %304, %305, %306, %307, %308, %309, %310, %311, %312, %313, %314, %315, %316 : vector<2x2xf16>, vector<2x2xf16>, vector<2x2xf16>, vector<2x2xf16>, vector<2x2xf16>, vector<2x2xf16>, vector<2x2xf16>, vector<2x2xf16>, vector<2x2xf16>, vector<2x2xf16>, vector<2x2xf16>, vector<2x2xf16>, vector<2x2xf16>, vector<2x2xf16>, vector<2x2xf16>, vector<2x2xf16>, vector<2x2xf16>, vector<2x2xf16>, vector<2x2xf16>, vector<2x2xf16>, vector<2x2xf16>, vector<2x2xf16>, vector<2x2xf16>, vector<2x2xf16>, vector<2x2xf16>, vector<2x2xf16>, vector<2x2xf16>, vector<2x2xf16>, vector<2x2xf16>, vector<2x2xf16>, vector<2x2xf16>, vector<2x2xf16>
   }
   %7 = gpu.lane_id
@@ -490,7 +490,7 @@
 //          CHECK-NV:  nvgpu.device_async_create_group
 //  CHECK-NV-COUNT-6:  nvgpu.device_async_copy
 //          CHECK-NV:  nvgpu.device_async_create_group
-//          CHECK-NV:  nvgpu.device_async_wait %{{.*}} {numGroups = 1 : i32}
+//          CHECK-NV:  nvgpu.device_async_wait %{{.*}} numGroups = 1
 //          CHECK-NV:  gpu.barrier memfence [#gpu.address_space<workgroup>]
 //  CHECK-NV-COUNT-8:  nvgpu.ldmatrix
 //          CHECK-NV:  scf.for
@@ -498,7 +498,7 @@
 // CHECK-NV-COUNT-32:    nvgpu.mma.sync
 //  CHECK-NV-COUNT-6:    nvgpu.device_async_copy
 //          CHECK-NV:    nvgpu.device_async_create_group
-//          CHECK-NV:    nvgpu.device_async_wait %{{.*}} {numGroups = 1 : i32}
+//          CHECK-NV:    nvgpu.device_async_wait %{{.*}} numGroups = 1
 //          CHECK-NV:    gpu.barrier memfence [#gpu.address_space<workgroup>]
 //  CHECK-NV-COUNT-8:    nvgpu.ldmatrix
 // CHECK-NV-COUNT-32:    nvgpu.mma.sync
@@ -741,49 +741,49 @@
     gpu.barrier memfence [#gpu.address_space<workgroup>]
     %390 = affine.apply affine_map<()[s0, s1] -> (s0 + s1 * 4 - (s1 floordiv 8) * 32)>()[%arg0, %0]
     %391 = affine.apply affine_map<(d0) -> ((d0 floordiv 32) mod 3)>(%arg0)
-    %392 = nvgpu.device_async_copy %3[%6, %390], %alloc_2[%391, %7, %11], 4 {bypassL1} : memref<256x256xf32> to memref<3x128x32xf32, #gpu.address_space<workgroup>>
-    %393 = nvgpu.device_async_copy %3[%12, %390], %alloc_2[%391, %13, %16], 4 {bypassL1} : memref<256x256xf32> to memref<3x128x32xf32, #gpu.address_space<workgroup>>
-    %394 = nvgpu.device_async_copy %3[%17, %390], %alloc_2[%391, %18, %21], 4 {bypassL1} : memref<256x256xf32> to memref<3x128x32xf32, #gpu.address_space<workgroup>>
-    %395 = nvgpu.device_async_copy %3[%22, %390], %alloc_2[%391, %23, %26], 4 {bypassL1} : memref<256x256xf32> to memref<3x128x32xf32, #gpu.address_space<workgroup>>
-    %396 = nvgpu.device_async_copy %3[%27, %390], %alloc_2[%391, %28, %31], 4 {bypassL1} : memref<256x256xf32> to memref<3x128x32xf32, #gpu.address_space<workgroup>>
-    %397 = nvgpu.device_async_copy %3[%32, %390], %alloc_2[%391, %33, %36], 4 {bypassL1} : memref<256x256xf32> to memref<3x128x32xf32, #gpu.address_space<workgroup>>
-    %398 = nvgpu.device_async_copy %3[%37, %390], %alloc_2[%391, %38, %41], 4 {bypassL1} : memref<256x256xf32> to memref<3x128x32xf32, #gpu.address_space<workgroup>>
-    %399 = nvgpu.device_async_copy %3[%42, %390], %alloc_2[%391, %43, %46], 4 {bypassL1} : memref<256x256xf32> to memref<3x128x32xf32, #gpu.address_space<workgroup>>
+    %392 = nvgpu.device_async_copy %3[%6, %390], %alloc_2[%391, %7, %11], 4 bypassL1 : memref<256x256xf32> to memref<3x128x32xf32, #gpu.address_space<workgroup>>
+    %393 = nvgpu.device_async_copy %3[%12, %390], %alloc_2[%391, %13, %16], 4 bypassL1 : memref<256x256xf32> to memref<3x128x32xf32, #gpu.address_space<workgroup>>
+    %394 = nvgpu.device_async_copy %3[%17, %390], %alloc_2[%391, %18, %21], 4 bypassL1 : memref<256x256xf32> to memref<3x128x32xf32, #gpu.address_space<workgroup>>
+    %395 = nvgpu.device_async_copy %3[%22, %390], %alloc_2[%391, %23, %26], 4 bypassL1 : memref<256x256xf32> to memref<3x128x32xf32, #gpu.address_space<workgroup>>
+    %396 = nvgpu.device_async_copy %3[%27, %390], %alloc_2[%391, %28, %31], 4 bypassL1 : memref<256x256xf32> to memref<3x128x32xf32, #gpu.address_space<workgroup>>
+    %397 = nvgpu.device_async_copy %3[%32, %390], %alloc_2[%391, %33, %36], 4 bypassL1 : memref<256x256xf32> to memref<3x128x32xf32, #gpu.address_space<workgroup>>
+    %398 = nvgpu.device_async_copy %3[%37, %390], %alloc_2[%391, %38, %41], 4 bypassL1 : memref<256x256xf32> to memref<3x128x32xf32, #gpu.address_space<workgroup>>
+    %399 = nvgpu.device_async_copy %3[%42, %390], %alloc_2[%391, %43, %46], 4 bypassL1 : memref<256x256xf32> to memref<3x128x32xf32, #gpu.address_space<workgroup>>
     %400 = affine.apply affine_map<()[s0, s1, s2, s3] -> (s0 + s2 * 2 + s3 * 4 + s1 floordiv 32)>()[%arg0, %0, %1, %2]
-    %401 = nvgpu.device_async_copy %4[%400, %47], %alloc_3[%391, %48, %52], 4 {bypassL1} : memref<256x256xf32> to memref<3x32x128xf32, #gpu.address_space<workgroup>>
+    %401 = nvgpu.device_async_copy %4[%400, %47], %alloc_3[%391, %48, %52], 4 bypassL1 : memref<256x256xf32> to memref<3x32x128xf32, #gpu.address_space<workgroup>>
     %402 = affine.apply affine_map<()[s0, s1, s2, s3] -> (s0 + s2 * 2 + s3 * 4 + s1 floordiv 32 + 4)>()[%arg0, %0, %1, %2]
-    %403 = nvgpu.device_async_copy %4[%402, %47], %alloc_3[%391, %53, %56], 4 {bypassL1} : memref<256x256xf32> to memref<3x32x128xf32, #gpu.address_space<workgroup>>
+    %403 = nvgpu.device_async_copy %4[%402, %47], %alloc_3[%391, %53, %56], 4 bypassL1 : memref<256x256xf32> to memref<3x32x128xf32, #gpu.address_space<workgroup>>
     %404 = affine.apply affine_map<()[s0, s1, s2, s3] -> (s0 + s2 * 2 + s3 * 4 + s1 floordiv 32 + 8)>()[%arg0, %0, %1, %2]
-    %405 = nvgpu.device_async_copy %4[%404, %47], %alloc_3[%391, %57, %60], 4 {bypassL1} : memref<256x256xf32> to memref<3x32x128xf32, #gpu.address_space<workgroup>>
+    %405 = nvgpu.device_async_copy %4[%404, %47], %alloc_3[%391, %57, %60], 4 bypassL1 : memref<256x256xf32> to memref<3x32x128xf32, #gpu.address_space<workgroup>>
     %406 = affine.apply affine_map<()[s0, s1, s2, s3] -> (s0 + s2 * 2 + s3 * 4 + s1 floordiv 32 + 12)>()[%arg0, %0, %1, %2]
-    %407 = nvgpu.device_async_copy %4[%406, %47], %alloc_3[%391, %61, %64], 4 {bypassL1} : memref<256x256xf32> to memref<3x32x128xf32, #gpu.address_space<workgroup>>
+    %407 = nvgpu.device_async_copy %4[%406, %47], %alloc_3[%391, %61, %64], 4 bypassL1 : memref<256x256xf32> to memref<3x32x128xf32, #gpu.address_space<workgroup>>
     %408 = affine.apply affine_map<()[s0, s1, s2, s3] -> (s0 + s2 * 2 + s3 * 4 + s1 floordiv 32 + 16)>()[%arg0, %0, %1, %2]
-    %409 = nvgpu.device_async_copy %4[%408, %47], %alloc_3[%391, %65, %68], 4 {bypassL1} : memref<256x256xf32> to memref<3x32x128xf32, #gpu.address_space<workgroup>>
+    %409 = nvgpu.device_async_copy %4[%408, %47], %alloc_3[%391, %65, %68], 4 bypassL1 : memref<256x256xf32> to memref<3x32x128xf32, #gpu.address_space<workgroup>>
     %410 = affine.apply affine_map<()[s0, s1, s2, s3] -> (s0 + s2 * 2 + s3 * 4 + s1 floordiv 32 + 20)>()[%arg0, %0, %1, %2]
-    %411 = nvgpu.device_async_copy %4[%410, %47], %alloc_3[%391, %69, %72], 4 {bypassL1} : memref<256x256xf32> to memref<3x32x128xf32, #gpu.address_space<workgroup>>
+    %411 = nvgpu.device_async_copy %4[%410, %47], %alloc_3[%391, %69, %72], 4 bypassL1 : memref<256x256xf32> to memref<3x32x128xf32, #gpu.address_space<workgroup>>
     %412 = affine.apply affine_map<()[s0, s1, s2, s3] -> (s0 + s2 * 2 + s3 * 4 + s1 floordiv 32 + 24)>()[%arg0, %0, %1, %2]
-    %413 = nvgpu.device_async_copy %4[%412, %47], %alloc_3[%391, %73, %76], 4 {bypassL1} : memref<256x256xf32> to memref<3x32x128xf32, #gpu.address_space<workgroup>>
+    %413 = nvgpu.device_async_copy %4[%412, %47], %alloc_3[%391, %73, %76], 4 bypassL1 : memref<256x256xf32> to memref<3x32x128xf32, #gpu.address_space<workgroup>>
     %414 = affine.apply affine_map<()[s0, s1, s2, s3] -> (s0 + s2 * 2 + s3 * 4 + s1 floordiv 32 + 28)>()[%arg0, %0, %1, %2]
-    %415 = nvgpu.device_async_copy %4[%414, %47], %alloc_3[%391, %77, %80], 4 {bypassL1} : memref<256x256xf32> to memref<3x32x128xf32, #gpu.address_space<workgroup>>
+    %415 = nvgpu.device_async_copy %4[%414, %47], %alloc_3[%391, %77, %80], 4 bypassL1 : memref<256x256xf32> to memref<3x32x128xf32, #gpu.address_space<workgroup>>
     %416 = nvgpu.device_async_create_group %392, %393, %394, %395, %396, %397, %398, %399, %401, %403, %405, %407, %409, %411, %413, %415
     nvgpu.device_async_wait %416
     gpu.barrier memfence [#gpu.address_space<workgroup>]
-    %417 = nvgpu.ldmatrix %alloc_2[%391, %82, %86] {numTiles = 4 : i32, transpose = false} : memref<3x128x32xf32, #gpu.address_space<workgroup>> -> vector<4x1xf32>
-    %418 = nvgpu.ldmatrix %alloc_2[%391, %82, %88] {numTiles = 4 : i32, transpose = false} : memref<3x128x32xf32, #gpu.address_space<workgroup>> -> vector<4x1xf32>
-    %419 = nvgpu.ldmatrix %alloc_2[%391, %82, %90] {numTiles = 4 : i32, transpose = false} : memref<3x128x32xf32, #gpu.address_space<workgroup>> -> vector<4x1xf32>
-    %420 = nvgpu.ldmatrix %alloc_2[%391, %82, %92] {numTiles = 4 : i32, transpose = false} : memref<3x128x32xf32, #gpu.address_space<workgroup>> -> vector<4x1xf32>
-    %421 = nvgpu.ldmatrix %alloc_2[%391, %93, %96] {numTiles = 4 : i32, transpose = false} : memref<3x128x32xf32, #gpu.address_space<workgroup>> -> vector<4x1xf32>
-    %422 = nvgpu.ldmatrix %alloc_2[%391, %93, %97] {numTiles = 4 : i32, transpose = false} : memref<3x128x32xf32, #gpu.address_space<workgroup>> -> vector<4x1xf32>
-    %423 = nvgpu.ldmatrix %alloc_2[%391, %93, %98] {numTiles = 4 : i32, transpose = false} : memref<3x128x32xf32, #gpu.address_space<workgroup>> -> vector<4x1xf32>
-    %424 = nvgpu.ldmatrix %alloc_2[%391, %93, %99] {numTiles = 4 : i32, transpose = false} : memref<3x128x32xf32, #gpu.address_space<workgroup>> -> vector<4x1xf32>
-    %425 = nvgpu.ldmatrix %alloc_2[%391, %100, %103] {numTiles = 4 : i32, transpose = false} : memref<3x128x32xf32, #gpu.address_space<workgroup>> -> vector<4x1xf32>
-    %426 = nvgpu.ldmatrix %alloc_2[%391, %100, %104] {numTiles = 4 : i32, transpose = false} : memref<3x128x32xf32, #gpu.address_space<workgroup>> -> vector<4x1xf32>
-    %427 = nvgpu.ldmatrix %alloc_2[%391, %100, %105] {numTiles = 4 : i32, transpose = false} : memref<3x128x32xf32, #gpu.address_space<workgroup>> -> vector<4x1xf32>
-    %428 = nvgpu.ldmatrix %alloc_2[%391, %100, %106] {numTiles = 4 : i32, transpose = false} : memref<3x128x32xf32, #gpu.address_space<workgroup>> -> vector<4x1xf32>
-    %429 = nvgpu.ldmatrix %alloc_2[%391, %107, %110] {numTiles = 4 : i32, transpose = false} : memref<3x128x32xf32, #gpu.address_space<workgroup>> -> vector<4x1xf32>
-    %430 = nvgpu.ldmatrix %alloc_2[%391, %107, %111] {numTiles = 4 : i32, transpose = false} : memref<3x128x32xf32, #gpu.address_space<workgroup>> -> vector<4x1xf32>
-    %431 = nvgpu.ldmatrix %alloc_2[%391, %107, %112] {numTiles = 4 : i32, transpose = false} : memref<3x128x32xf32, #gpu.address_space<workgroup>> -> vector<4x1xf32>
-    %432 = nvgpu.ldmatrix %alloc_2[%391, %107, %113] {numTiles = 4 : i32, transpose = false} : memref<3x128x32xf32, #gpu.address_space<workgroup>> -> vector<4x1xf32>
+    %417 = nvgpu.ldmatrix %alloc_2[%391, %82, %86] numTiles = 4 transpose = false : memref<3x128x32xf32, #gpu.address_space<workgroup>> -> vector<4x1xf32>
+    %418 = nvgpu.ldmatrix %alloc_2[%391, %82, %88] numTiles = 4 transpose = false : memref<3x128x32xf32, #gpu.address_space<workgroup>> -> vector<4x1xf32>
+    %419 = nvgpu.ldmatrix %alloc_2[%391, %82, %90] numTiles = 4 transpose = false : memref<3x128x32xf32, #gpu.address_space<workgroup>> -> vector<4x1xf32>
+    %420 = nvgpu.ldmatrix %alloc_2[%391, %82, %92] numTiles = 4 transpose = false : memref<3x128x32xf32, #gpu.address_space<workgroup>> -> vector<4x1xf32>
+    %421 = nvgpu.ldmatrix %alloc_2[%391, %93, %96] numTiles = 4 transpose = false : memref<3x128x32xf32, #gpu.address_space<workgroup>> -> vector<4x1xf32>
+    %422 = nvgpu.ldmatrix %alloc_2[%391, %93, %97] numTiles = 4 transpose = false : memref<3x128x32xf32, #gpu.address_space<workgroup>> -> vector<4x1xf32>
+    %423 = nvgpu.ldmatrix %alloc_2[%391, %93, %98] numTiles = 4 transpose = false : memref<3x128x32xf32, #gpu.address_space<workgroup>> -> vector<4x1xf32>
+    %424 = nvgpu.ldmatrix %alloc_2[%391, %93, %99] numTiles = 4 transpose = false : memref<3x128x32xf32, #gpu.address_space<workgroup>> -> vector<4x1xf32>
+    %425 = nvgpu.ldmatrix %alloc_2[%391, %100, %103] numTiles = 4 transpose = false : memref<3x128x32xf32, #gpu.address_space<workgroup>> -> vector<4x1xf32>
+    %426 = nvgpu.ldmatrix %alloc_2[%391, %100, %104] numTiles = 4 transpose = false : memref<3x128x32xf32, #gpu.address_space<workgroup>> -> vector<4x1xf32>
+    %427 = nvgpu.ldmatrix %alloc_2[%391, %100, %105] numTiles = 4 transpose = false : memref<3x128x32xf32, #gpu.address_space<workgroup>> -> vector<4x1xf32>
+    %428 = nvgpu.ldmatrix %alloc_2[%391, %100, %106] numTiles = 4 transpose = false : memref<3x128x32xf32, #gpu.address_space<workgroup>> -> vector<4x1xf32>
+    %429 = nvgpu.ldmatrix %alloc_2[%391, %107, %110] numTiles = 4 transpose = false : memref<3x128x32xf32, #gpu.address_space<workgroup>> -> vector<4x1xf32>
+    %430 = nvgpu.ldmatrix %alloc_2[%391, %107, %111] numTiles = 4 transpose = false : memref<3x128x32xf32, #gpu.address_space<workgroup>> -> vector<4x1xf32>
+    %431 = nvgpu.ldmatrix %alloc_2[%391, %107, %112] numTiles = 4 transpose = false : memref<3x128x32xf32, #gpu.address_space<workgroup>> -> vector<4x1xf32>
+    %432 = nvgpu.ldmatrix %alloc_2[%391, %107, %113] numTiles = 4 transpose = false : memref<3x128x32xf32, #gpu.address_space<workgroup>> -> vector<4x1xf32>
     %433 = memref.load %alloc_3[%391, %115, %118] : memref<3x32x128xf32, #gpu.address_space<workgroup>>
     %434 = vector.insert %433, %cst [0, 0] : f32 into vector<2x1xf32>
     %435 = memref.load %alloc_3[%391, %119, %122] : memref<3x32x128xf32, #gpu.address_space<workgroup>>
@@ -912,134 +912,134 @@
     %558 = vector.insert %557, %cst [0, 0] : f32 into vector<2x1xf32>
     %559 = memref.load %alloc_3[%391, %143, %209] : memref<3x32x128xf32, #gpu.address_space<workgroup>>
     %560 = vector.insert %559, %558 [1, 0] : f32 into vector<2x1xf32>
-    %561 = nvgpu.mma.sync(%417, %436, %arg1) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %562 = nvgpu.mma.sync(%417, %452, %arg2) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %563 = nvgpu.mma.sync(%417, %468, %arg3) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %564 = nvgpu.mma.sync(%417, %484, %arg4) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %565 = nvgpu.mma.sync(%417, %500, %arg5) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %566 = nvgpu.mma.sync(%417, %516, %arg6) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %567 = nvgpu.mma.sync(%417, %532, %arg7) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %568 = nvgpu.mma.sync(%417, %548, %arg8) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %569 = nvgpu.mma.sync(%421, %436, %arg9) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %570 = nvgpu.mma.sync(%421, %452, %arg10) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %571 = nvgpu.mma.sync(%421, %468, %arg11) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %572 = nvgpu.mma.sync(%421, %484, %arg12) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %573 = nvgpu.mma.sync(%421, %500, %arg13) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %574 = nvgpu.mma.sync(%421, %516, %arg14) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %575 = nvgpu.mma.sync(%421, %532, %arg15) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %576 = nvgpu.mma.sync(%421, %548, %arg16) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %577 = nvgpu.mma.sync(%425, %436, %arg17) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %578 = nvgpu.mma.sync(%425, %452, %arg18) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %579 = nvgpu.mma.sync(%425, %468, %arg19) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %580 = nvgpu.mma.sync(%425, %484, %arg20) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %581 = nvgpu.mma.sync(%425, %500, %arg21) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %582 = nvgpu.mma.sync(%425, %516, %arg22) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %583 = nvgpu.mma.sync(%425, %532, %arg23) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %584 = nvgpu.mma.sync(%425, %548, %arg24) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %585 = nvgpu.mma.sync(%429, %436, %arg25) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %586 = nvgpu.mma.sync(%429, %452, %arg26) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %587 = nvgpu.mma.sync(%429, %468, %arg27) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %588 = nvgpu.mma.sync(%429, %484, %arg28) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %589 = nvgpu.mma.sync(%429, %500, %arg29) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %590 = nvgpu.mma.sync(%429, %516, %arg30) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %591 = nvgpu.mma.sync(%429, %532, %arg31) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %592 = nvgpu.mma.sync(%429, %548, %arg32) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %593 = nvgpu.mma.sync(%418, %440, %561) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %594 = nvgpu.mma.sync(%418, %456, %562) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %595 = nvgpu.mma.sync(%418, %472, %563) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %596 = nvgpu.mma.sync(%418, %488, %564) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %597 = nvgpu.mma.sync(%418, %504, %565) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %598 = nvgpu.mma.sync(%418, %520, %566) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %599 = nvgpu.mma.sync(%418, %536, %567) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %600 = nvgpu.mma.sync(%418, %552, %568) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %601 = nvgpu.mma.sync(%422, %440, %569) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %602 = nvgpu.mma.sync(%422, %456, %570) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %603 = nvgpu.mma.sync(%422, %472, %571) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %604 = nvgpu.mma.sync(%422, %488, %572) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %605 = nvgpu.mma.sync(%422, %504, %573) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %606 = nvgpu.mma.sync(%422, %520, %574) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %607 = nvgpu.mma.sync(%422, %536, %575) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %608 = nvgpu.mma.sync(%422, %552, %576) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %609 = nvgpu.mma.sync(%426, %440, %577) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %610 = nvgpu.mma.sync(%426, %456, %578) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %611 = nvgpu.mma.sync(%426, %472, %579) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %612 = nvgpu.mma.sync(%426, %488, %580) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %613 = nvgpu.mma.sync(%426, %504, %581) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %614 = nvgpu.mma.sync(%426, %520, %582) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %615 = nvgpu.mma.sync(%426, %536, %583) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %616 = nvgpu.mma.sync(%426, %552, %584) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %617 = nvgpu.mma.sync(%430, %440, %585) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %618 = nvgpu.mma.sync(%430, %456, %586) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %619 = nvgpu.mma.sync(%430, %472, %587) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %620 = nvgpu.mma.sync(%430, %488, %588) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %621 = nvgpu.mma.sync(%430, %504, %589) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %622 = nvgpu.mma.sync(%430, %520, %590) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %623 = nvgpu.mma.sync(%430, %536, %591) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %624 = nvgpu.mma.sync(%430, %552, %592) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %625 = nvgpu.mma.sync(%419, %444, %593) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %626 = nvgpu.mma.sync(%419, %460, %594) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %627 = nvgpu.mma.sync(%419, %476, %595) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %628 = nvgpu.mma.sync(%419, %492, %596) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %629 = nvgpu.mma.sync(%419, %508, %597) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %630 = nvgpu.mma.sync(%419, %524, %598) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %631 = nvgpu.mma.sync(%419, %540, %599) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %632 = nvgpu.mma.sync(%419, %556, %600) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %633 = nvgpu.mma.sync(%423, %444, %601) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %634 = nvgpu.mma.sync(%423, %460, %602) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %635 = nvgpu.mma.sync(%423, %476, %603) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %636 = nvgpu.mma.sync(%423, %492, %604) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %637 = nvgpu.mma.sync(%423, %508, %605) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %638 = nvgpu.mma.sync(%423, %524, %606) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %639 = nvgpu.mma.sync(%423, %540, %607) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %640 = nvgpu.mma.sync(%423, %556, %608) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %641 = nvgpu.mma.sync(%427, %444, %609) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %642 = nvgpu.mma.sync(%427, %460, %610) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %643 = nvgpu.mma.sync(%427, %476, %611) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %644 = nvgpu.mma.sync(%427, %492, %612) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %645 = nvgpu.mma.sync(%427, %508, %613) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %646 = nvgpu.mma.sync(%427, %524, %614) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %647 = nvgpu.mma.sync(%427, %540, %615) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %648 = nvgpu.mma.sync(%427, %556, %616) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %649 = nvgpu.mma.sync(%431, %444, %617) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %650 = nvgpu.mma.sync(%431, %460, %618) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %651 = nvgpu.mma.sync(%431, %476, %619) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %652 = nvgpu.mma.sync(%431, %492, %620) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %653 = nvgpu.mma.sync(%431, %508, %621) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %654 = nvgpu.mma.sync(%431, %524, %622) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %655 = nvgpu.mma.sync(%431, %540, %623) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %656 = nvgpu.mma.sync(%431, %556, %624) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %657 = nvgpu.mma.sync(%420, %448, %625) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %658 = nvgpu.mma.sync(%420, %464, %626) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %659 = nvgpu.mma.sync(%420, %480, %627) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %660 = nvgpu.mma.sync(%420, %496, %628) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %661 = nvgpu.mma.sync(%420, %512, %629) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %662 = nvgpu.mma.sync(%420, %528, %630) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %663 = nvgpu.mma.sync(%420, %544, %631) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %664 = nvgpu.mma.sync(%420, %560, %632) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %665 = nvgpu.mma.sync(%424, %448, %633) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %666 = nvgpu.mma.sync(%424, %464, %634) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %667 = nvgpu.mma.sync(%424, %480, %635) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %668 = nvgpu.mma.sync(%424, %496, %636) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %669 = nvgpu.mma.sync(%424, %512, %637) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %670 = nvgpu.mma.sync(%424, %528, %638) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %671 = nvgpu.mma.sync(%424, %544, %639) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %672 = nvgpu.mma.sync(%424, %560, %640) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %673 = nvgpu.mma.sync(%428, %448, %641) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %674 = nvgpu.mma.sync(%428, %464, %642) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %675 = nvgpu.mma.sync(%428, %480, %643) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %676 = nvgpu.mma.sync(%428, %496, %644) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %677 = nvgpu.mma.sync(%428, %512, %645) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %678 = nvgpu.mma.sync(%428, %528, %646) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %679 = nvgpu.mma.sync(%428, %544, %647) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %680 = nvgpu.mma.sync(%428, %560, %648) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %681 = nvgpu.mma.sync(%432, %448, %649) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %682 = nvgpu.mma.sync(%432, %464, %650) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %683 = nvgpu.mma.sync(%432, %480, %651) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %684 = nvgpu.mma.sync(%432, %496, %652) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %685 = nvgpu.mma.sync(%432, %512, %653) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %686 = nvgpu.mma.sync(%432, %528, %654) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %687 = nvgpu.mma.sync(%432, %544, %655) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
-    %688 = nvgpu.mma.sync(%432, %560, %656) {mmaShape = [16, 8, 8], tf32Enabled} : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %561 = nvgpu.mma.sync(%417, %436, %arg1) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %562 = nvgpu.mma.sync(%417, %452, %arg2) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %563 = nvgpu.mma.sync(%417, %468, %arg3) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %564 = nvgpu.mma.sync(%417, %484, %arg4) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %565 = nvgpu.mma.sync(%417, %500, %arg5) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %566 = nvgpu.mma.sync(%417, %516, %arg6) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %567 = nvgpu.mma.sync(%417, %532, %arg7) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %568 = nvgpu.mma.sync(%417, %548, %arg8) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %569 = nvgpu.mma.sync(%421, %436, %arg9) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %570 = nvgpu.mma.sync(%421, %452, %arg10) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %571 = nvgpu.mma.sync(%421, %468, %arg11) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %572 = nvgpu.mma.sync(%421, %484, %arg12) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %573 = nvgpu.mma.sync(%421, %500, %arg13) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %574 = nvgpu.mma.sync(%421, %516, %arg14) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %575 = nvgpu.mma.sync(%421, %532, %arg15) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %576 = nvgpu.mma.sync(%421, %548, %arg16) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %577 = nvgpu.mma.sync(%425, %436, %arg17) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %578 = nvgpu.mma.sync(%425, %452, %arg18) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %579 = nvgpu.mma.sync(%425, %468, %arg19) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %580 = nvgpu.mma.sync(%425, %484, %arg20) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %581 = nvgpu.mma.sync(%425, %500, %arg21) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %582 = nvgpu.mma.sync(%425, %516, %arg22) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %583 = nvgpu.mma.sync(%425, %532, %arg23) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %584 = nvgpu.mma.sync(%425, %548, %arg24) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %585 = nvgpu.mma.sync(%429, %436, %arg25) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %586 = nvgpu.mma.sync(%429, %452, %arg26) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %587 = nvgpu.mma.sync(%429, %468, %arg27) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %588 = nvgpu.mma.sync(%429, %484, %arg28) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %589 = nvgpu.mma.sync(%429, %500, %arg29) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %590 = nvgpu.mma.sync(%429, %516, %arg30) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %591 = nvgpu.mma.sync(%429, %532, %arg31) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %592 = nvgpu.mma.sync(%429, %548, %arg32) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %593 = nvgpu.mma.sync(%418, %440, %561) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %594 = nvgpu.mma.sync(%418, %456, %562) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %595 = nvgpu.mma.sync(%418, %472, %563) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %596 = nvgpu.mma.sync(%418, %488, %564) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %597 = nvgpu.mma.sync(%418, %504, %565) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %598 = nvgpu.mma.sync(%418, %520, %566) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %599 = nvgpu.mma.sync(%418, %536, %567) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %600 = nvgpu.mma.sync(%418, %552, %568) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %601 = nvgpu.mma.sync(%422, %440, %569) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %602 = nvgpu.mma.sync(%422, %456, %570) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %603 = nvgpu.mma.sync(%422, %472, %571) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %604 = nvgpu.mma.sync(%422, %488, %572) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %605 = nvgpu.mma.sync(%422, %504, %573) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %606 = nvgpu.mma.sync(%422, %520, %574) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %607 = nvgpu.mma.sync(%422, %536, %575) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %608 = nvgpu.mma.sync(%422, %552, %576) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %609 = nvgpu.mma.sync(%426, %440, %577) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %610 = nvgpu.mma.sync(%426, %456, %578) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %611 = nvgpu.mma.sync(%426, %472, %579) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %612 = nvgpu.mma.sync(%426, %488, %580) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %613 = nvgpu.mma.sync(%426, %504, %581) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %614 = nvgpu.mma.sync(%426, %520, %582) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %615 = nvgpu.mma.sync(%426, %536, %583) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %616 = nvgpu.mma.sync(%426, %552, %584) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %617 = nvgpu.mma.sync(%430, %440, %585) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %618 = nvgpu.mma.sync(%430, %456, %586) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %619 = nvgpu.mma.sync(%430, %472, %587) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %620 = nvgpu.mma.sync(%430, %488, %588) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %621 = nvgpu.mma.sync(%430, %504, %589) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %622 = nvgpu.mma.sync(%430, %520, %590) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %623 = nvgpu.mma.sync(%430, %536, %591) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %624 = nvgpu.mma.sync(%430, %552, %592) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %625 = nvgpu.mma.sync(%419, %444, %593) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %626 = nvgpu.mma.sync(%419, %460, %594) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %627 = nvgpu.mma.sync(%419, %476, %595) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %628 = nvgpu.mma.sync(%419, %492, %596) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %629 = nvgpu.mma.sync(%419, %508, %597) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %630 = nvgpu.mma.sync(%419, %524, %598) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %631 = nvgpu.mma.sync(%419, %540, %599) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %632 = nvgpu.mma.sync(%419, %556, %600) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %633 = nvgpu.mma.sync(%423, %444, %601) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %634 = nvgpu.mma.sync(%423, %460, %602) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %635 = nvgpu.mma.sync(%423, %476, %603) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %636 = nvgpu.mma.sync(%423, %492, %604) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %637 = nvgpu.mma.sync(%423, %508, %605) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %638 = nvgpu.mma.sync(%423, %524, %606) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %639 = nvgpu.mma.sync(%423, %540, %607) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %640 = nvgpu.mma.sync(%423, %556, %608) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %641 = nvgpu.mma.sync(%427, %444, %609) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %642 = nvgpu.mma.sync(%427, %460, %610) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %643 = nvgpu.mma.sync(%427, %476, %611) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %644 = nvgpu.mma.sync(%427, %492, %612) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %645 = nvgpu.mma.sync(%427, %508, %613) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %646 = nvgpu.mma.sync(%427, %524, %614) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %647 = nvgpu.mma.sync(%427, %540, %615) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %648 = nvgpu.mma.sync(%427, %556, %616) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %649 = nvgpu.mma.sync(%431, %444, %617) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %650 = nvgpu.mma.sync(%431, %460, %618) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %651 = nvgpu.mma.sync(%431, %476, %619) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %652 = nvgpu.mma.sync(%431, %492, %620) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %653 = nvgpu.mma.sync(%431, %508, %621) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %654 = nvgpu.mma.sync(%431, %524, %622) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %655 = nvgpu.mma.sync(%431, %540, %623) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %656 = nvgpu.mma.sync(%431, %556, %624) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %657 = nvgpu.mma.sync(%420, %448, %625) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %658 = nvgpu.mma.sync(%420, %464, %626) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %659 = nvgpu.mma.sync(%420, %480, %627) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %660 = nvgpu.mma.sync(%420, %496, %628) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %661 = nvgpu.mma.sync(%420, %512, %629) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %662 = nvgpu.mma.sync(%420, %528, %630) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %663 = nvgpu.mma.sync(%420, %544, %631) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %664 = nvgpu.mma.sync(%420, %560, %632) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %665 = nvgpu.mma.sync(%424, %448, %633) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %666 = nvgpu.mma.sync(%424, %464, %634) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %667 = nvgpu.mma.sync(%424, %480, %635) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %668 = nvgpu.mma.sync(%424, %496, %636) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %669 = nvgpu.mma.sync(%424, %512, %637) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %670 = nvgpu.mma.sync(%424, %528, %638) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %671 = nvgpu.mma.sync(%424, %544, %639) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %672 = nvgpu.mma.sync(%424, %560, %640) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %673 = nvgpu.mma.sync(%428, %448, %641) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %674 = nvgpu.mma.sync(%428, %464, %642) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %675 = nvgpu.mma.sync(%428, %480, %643) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %676 = nvgpu.mma.sync(%428, %496, %644) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %677 = nvgpu.mma.sync(%428, %512, %645) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %678 = nvgpu.mma.sync(%428, %528, %646) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %679 = nvgpu.mma.sync(%428, %544, %647) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %680 = nvgpu.mma.sync(%428, %560, %648) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %681 = nvgpu.mma.sync(%432, %448, %649) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %682 = nvgpu.mma.sync(%432, %464, %650) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %683 = nvgpu.mma.sync(%432, %480, %651) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %684 = nvgpu.mma.sync(%432, %496, %652) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %685 = nvgpu.mma.sync(%432, %512, %653) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %686 = nvgpu.mma.sync(%432, %528, %654) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %687 = nvgpu.mma.sync(%432, %544, %655) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
+    %688 = nvgpu.mma.sync(%432, %560, %656) mmaShape = [16, 8, 8] tf32Enabled : (vector<4x1xf32>, vector<2x1xf32>, vector<2x2xf32>) -> vector<2x2xf32>
     scf.yield %657, %658, %659, %660, %661, %662, %663, %664, %665, %666, %667, %668, %669, %670, %671, %672, %673, %674, %675, %676, %677, %678, %679, %680, %681, %682, %683, %684, %685, %686, %687, %688 : vector<2x2xf32>, vector<2x2xf32>, vector<2x2xf32>, vector<2x2xf32>, vector<2x2xf32>, vector<2x2xf32>, vector<2x2xf32>, vector<2x2xf32>, vector<2x2xf32>, vector<2x2xf32>, vector<2x2xf32>, vector<2x2xf32>, vector<2x2xf32>, vector<2x2xf32>, vector<2x2xf32>, vector<2x2xf32>, vector<2x2xf32>, vector<2x2xf32>, vector<2x2xf32>, vector<2x2xf32>, vector<2x2xf32>, vector<2x2xf32>, vector<2x2xf32>, vector<2x2xf32>, vector<2x2xf32>, vector<2x2xf32>, vector<2x2xf32>, vector<2x2xf32>, vector<2x2xf32>, vector<2x2xf32>, vector<2x2xf32>, vector<2x2xf32>
   }
   %211 = gpu.lane_id
@@ -1328,7 +1328,7 @@
 //          CHECK-NV:  nvgpu.device_async_create_group
 //  CHECK-NV-COUNT-6:  nvgpu.device_async_copy
 //          CHECK-NV:  nvgpu.device_async_create_group
-//          CHECK-NV:  nvgpu.device_async_wait %{{.*}} {numGroups = 1 : i32}
+//          CHECK-NV:  nvgpu.device_async_wait %{{.*}} numGroups = 1
 //          CHECK-NV:  gpu.barrier memfence [#gpu.address_space<workgroup>]
 //  CHECK-NV-COUNT-4:  nvgpu.ldmatrix
 //  CHECK-NV-COUNT-16:  memref.load
@@ -1344,7 +1344,7 @@
 // CHECK-NV-COUNT-32:    nvgpu.mma.sync
 //  CHECK-NV-COUNT-6:    nvgpu.device_async_copy
 //          CHECK-NV:    nvgpu.device_async_create_group
-//          CHECK-NV:    nvgpu.device_async_wait %{{.*}} {numGroups = 1 : i32}
+//          CHECK-NV:    nvgpu.device_async_wait %{{.*}} numGroups = 1
 //          CHECK-NV:    gpu.barrier memfence [#gpu.address_space<workgroup>]
 //  CHECK-NV-COUNT-4:    nvgpu.ldmatrix
 //  CHECK-NV-COUNT-16:   memref.load
diff --git a/compiler/src/iree/compiler/Codegen/Common/GPU/test/vector_reduction_to_gpu.mlir b/compiler/src/iree/compiler/Codegen/Common/GPU/test/vector_reduction_to_gpu.mlir
index d99a2cd..c13445e 100644
--- a/compiler/src/iree/compiler/Codegen/Common/GPU/test/vector_reduction_to_gpu.mlir
+++ b/compiler/src/iree/compiler/Codegen/Common/GPU/test/vector_reduction_to_gpu.mlir
@@ -254,7 +254,7 @@
     %0 = hal.interface.binding.subspan layout(#pipeline_layout) binding(0) alignment(64) offset(%c0) : memref<128x32xf32>
     %1 = hal.interface.binding.subspan layout(#pipeline_layout) binding(1) alignment(64) offset(%c0) : memref<128x32xf32>
     %workgroup_id_x = hal.interface.workgroup.id[0] : index
-    %alloc = memref.alloc() {alignment = 64 : i64} : memref<32xf32, #gpu.address_space<workgroup>>
+    %alloc = memref.alloc() alignment = 64 : memref<32xf32, #gpu.address_space<workgroup>>
     %2 = vector.transfer_read %0[%workgroup_id_x, %c0], %cst_0 {in_bounds = [true]} : memref<128x32xf32>, vector<32xf32>
     vector.transfer_write %2, %alloc[%c0] {in_bounds = [true]} : vector<32xf32>, memref<32xf32, #gpu.address_space<workgroup>>
     gpu.barrier memfence [#gpu.address_space<workgroup>]
@@ -265,7 +265,7 @@
 }
 
 // CHECK-LABEL: func.func @shared_memory_copy()
-//       CHECK:   %[[ALLOC:.*]] = memref.alloc() {alignment = 64 : i64} : memref<32xf32, #gpu.address_space<workgroup>>
+//       CHECK:   %[[ALLOC:.*]] = memref.alloc() alignment = 64 : memref<32xf32, #gpu.address_space<workgroup>>
 //       CHECK:   vector.transfer_read {{.*}} : memref<128x32xf32>, vector<1xf32>
 //       CHECK:   vector.transfer_write {{.*}} %[[ALLOC]]{{.*}} : vector<1xf32>, memref<32xf32, #gpu.address_space<workgroup>>
 //       CHECK:   gpu.barrier memfence [#gpu.address_space<workgroup>]
diff --git a/compiler/src/iree/compiler/Codegen/Common/test/flatten_memref_subspan.mlir b/compiler/src/iree/compiler/Codegen/Common/test/flatten_memref_subspan.mlir
index 9211486..ef34ab4 100644
--- a/compiler/src/iree/compiler/Codegen/Common/test/flatten_memref_subspan.mlir
+++ b/compiler/src/iree/compiler/Codegen/Common/test/flatten_memref_subspan.mlir
@@ -503,7 +503,7 @@
 
 func.func @subgroup_mma_load(%i0: index, %i1: index) -> !gpu.mma_matrix<16x16xf16, "AOp"> {
   %alloc = memref.alloc() : memref<32x32xf16, 3>
-  %0 = gpu.subgroup_mma_load_matrix %alloc[%i0, %i1] {leadDimension = 32 : index} : memref<32x32xf16, 3> -> !gpu.mma_matrix<16x16xf16, "AOp">
+  %0 = gpu.subgroup_mma_load_matrix %alloc[%i0, %i1] leadDimension 32 : memref<32x32xf16, 3> -> !gpu.mma_matrix<16x16xf16, "AOp">
   return %0 : !gpu.mma_matrix<16x16xf16, "AOp">
 }
 
@@ -512,14 +512,14 @@
 //  CHECK-SAME: (%[[I0:.+]]: index, %[[I1:.+]]: index)
 //       CHECK:  %[[ALLOC:.+]] = memref.alloc() : memref<1024xf16, 3>
 //       CHECK:  %[[IDX:.+]] = affine.apply #[[$MAP]]()[%[[I0]], %[[I1]]]
-//       CHECK:  %[[LD:.+]] = gpu.subgroup_mma_load_matrix %[[ALLOC]][%[[IDX]]] {leadDimension = 32 : index} : memref<1024xf16, 3> -> !gpu.mma_matrix<16x16xf16, "AOp">
+//       CHECK:  %[[LD:.+]] = gpu.subgroup_mma_load_matrix %[[ALLOC]][%[[IDX]]] leadDimension 32 : memref<1024xf16, 3> -> !gpu.mma_matrix<16x16xf16, "AOp">
 //       CHECK:  return %[[LD]]
 
 // -----
 
 func.func @subgroup_mma_store(%i0: index, %i1: index, %val: !gpu.mma_matrix<16x16xf16, "COp">) {
   %alloc = memref.alloc() : memref<32x32xf16, 3>
-  gpu.subgroup_mma_store_matrix %val, %alloc[%i0, %i1] {leadDimension = 128 : index} : !gpu.mma_matrix<16x16xf16, "COp">, memref<32x32xf16, 3>
+  gpu.subgroup_mma_store_matrix %val, %alloc[%i0, %i1] leadDimension 128 : !gpu.mma_matrix<16x16xf16, "COp">, memref<32x32xf16, 3>
   return
 }
 
@@ -528,7 +528,7 @@
 //  CHECK-SAME: (%[[I0:.+]]: index, %[[I1:.+]]: index, %[[VAL:.+]]: !gpu.mma_matrix<16x16xf16, "COp">) {
 //       CHECK:   %[[ALLOC:.+]] = memref.alloc() : memref<1024xf16, 3>
 //       CHECK:   %[[IDX:.+]] = affine.apply #[[$MAP]]()[%[[I0]], %[[I1]]]
-//       CHECK:   gpu.subgroup_mma_store_matrix %[[VAL]], %[[ALLOC]][%[[IDX]]] {leadDimension = 128 : index} : !gpu.mma_matrix<16x16xf16, "COp">, memref<1024xf16, 3>
+//       CHECK:   gpu.subgroup_mma_store_matrix %[[VAL]], %[[ALLOC]][%[[IDX]]] leadDimension 128 : !gpu.mma_matrix<16x16xf16, "COp">, memref<1024xf16, 3>
 
 // -----
 
@@ -537,7 +537,7 @@
 ]>
 func.func @subgroup_mma_load_with_offset(%offset : index, %i0: index, %i1: index) -> !gpu.mma_matrix<16x16xf16, "AOp"> {
   %subspan = hal.interface.binding.subspan layout(#pipeline_layout) binding(0) offset(%offset) : memref<32x32xf16, strided<[32, 1], offset: ?>, 3>
-  %0 = gpu.subgroup_mma_load_matrix %subspan[%i0, %i1] {leadDimension = 32 : index} : memref<32x32xf16, strided<[32, 1], offset: ?>, 3> -> !gpu.mma_matrix<16x16xf16, "AOp">
+  %0 = gpu.subgroup_mma_load_matrix %subspan[%i0, %i1] leadDimension 32 : memref<32x32xf16, strided<[32, 1], offset: ?>, 3> -> !gpu.mma_matrix<16x16xf16, "AOp">
   return %0 : !gpu.mma_matrix<16x16xf16, "AOp">
 }
 
@@ -549,7 +549,7 @@
 //   CHECK-DAG:   %[[SIZE:.+]] = affine.apply #[[$MAP1]]()[%[[OFFSET]]]
 //       CHECK:   %[[SUBSPAN:.+]] = hal.interface.binding.subspan layout({{.+}}) binding(0) offset(%[[ZERO]]) : memref<?xf16, 3>{%[[SIZE]]}
 //       CHECK:   %[[INDEX:.+]] = affine.apply #[[$MAP2]]()[%[[OFFSET]], %[[I0]], %[[I1]]]
-//       CHECK:   %[[LD:.+]] = gpu.subgroup_mma_load_matrix %[[SUBSPAN]][%[[INDEX]]] {leadDimension = 32 : index}
+//       CHECK:   %[[LD:.+]] = gpu.subgroup_mma_load_matrix %[[SUBSPAN]][%[[INDEX]]] leadDimension 32
 //       CHECK:   return %[[LD]]
 
 // -----
@@ -559,7 +559,7 @@
 ]>
 func.func @subgroup_mma_store_with_offset(%offset : index, %i0: index, %i1: index, %val: !gpu.mma_matrix<16x16xf16, "COp">) {
   %subspan = hal.interface.binding.subspan layout(#pipeline_layout) binding(0) offset(%offset) : memref<32x32xf16, strided<[32, 1], offset: ?>, 3>
-  gpu.subgroup_mma_store_matrix %val, %subspan[%i0, %i1] {leadDimension = 128 : index} : !gpu.mma_matrix<16x16xf16, "COp">, memref<32x32xf16, strided<[32, 1], offset: ?>, 3>
+  gpu.subgroup_mma_store_matrix %val, %subspan[%i0, %i1] leadDimension 128 : !gpu.mma_matrix<16x16xf16, "COp">, memref<32x32xf16, strided<[32, 1], offset: ?>, 3>
   return
 }
 
@@ -571,7 +571,7 @@
 //   CHECK-DAG:   %[[SIZE:.+]] = affine.apply #[[$MAP1]]()[%[[OFFSET]]]
 //       CHECK:   %[[SUBSPAN:.+]] = hal.interface.binding.subspan layout({{.+}}) binding(0) offset(%[[ZERO]]) : memref<?xf16, 3>{%[[SIZE]]}
 //       CHECK:   %[[INDEX:.+]] = affine.apply #[[$MAP2]]()[%[[OFFSET]], %[[I0]], %[[I1]]]
-//       CHECK:   gpu.subgroup_mma_store_matrix %[[VAL]], %[[SUBSPAN]][%[[INDEX]]] {leadDimension = 128 : index}
+//       CHECK:   gpu.subgroup_mma_store_matrix %[[VAL]], %[[SUBSPAN]][%[[INDEX]]] leadDimension 128
 
 // -----
 
diff --git a/compiler/src/iree/compiler/Codegen/Common/test/generic_vectorization_masked_configured.mlir b/compiler/src/iree/compiler/Codegen/Common/test/generic_vectorization_masked_configured.mlir
index 6db182d..b49b287 100644
--- a/compiler/src/iree/compiler/Codegen/Common/test/generic_vectorization_masked_configured.mlir
+++ b/compiler/src/iree/compiler/Codegen/Common/test/generic_vectorization_masked_configured.mlir
@@ -199,6 +199,6 @@
 // CHECK:         vector.create_mask {{.*}} : vector<8xi1>
 // CHECK:         vector.transfer_read {{.*}} : tensor<?xf32>, vector<8xf32>
 // CHECK:         arith.select {{.*}} : vector<8xi1>, vector<8xf32>
-// CHECK:         vector.scan <add>, {{.*}} {inclusive = true, reduction_dim = 1 : i64}
+// CHECK:         vector.scan <add>, {{.*}} reduction_dim = 1, inclusive = true
 // CHECK:         vector.transfer_write {{.*}} : vector<8x16xf32>, tensor<?x?xf32>
 // CHECK:         vector.transfer_write {{.*}} : vector<8xf32>, tensor<?xf32>
diff --git a/compiler/src/iree/compiler/Codegen/Common/test/hoist_unrolled_vector_extract_insert_slice.mlir b/compiler/src/iree/compiler/Codegen/Common/test/hoist_unrolled_vector_extract_insert_slice.mlir
index 5d4f2b2..931fc76 100644
--- a/compiler/src/iree/compiler/Codegen/Common/test/hoist_unrolled_vector_extract_insert_slice.mlir
+++ b/compiler/src/iree/compiler/Codegen/Common/test/hoist_unrolled_vector_extract_insert_slice.mlir
@@ -56,111 +56,111 @@
     %59 = affine.apply affine_map<(d0) -> (d0 + 16)>(%6)
     %60 = affine.apply affine_map<(d0) -> (d0 + 48)>(%arg0)
     %61 = vector.transfer_read %1[%60, %59], %cst {in_bounds = [true, true], permutation_map = affine_map<(d0, d1) -> (d1, d0)>} : memref<2048x1024xf16>, vector<16x16xf16>
-    %62 = vector.extract_strided_slice %44 {offsets = [0, 0], sizes = [8, 16], strides = [1, 1]} : vector<16x16xf16> to vector<8x16xf16>
-    %63 = vector.extract_strided_slice %arg1 {offsets = [0, 0], sizes = [16, 8], strides = [1, 1]} : vector<32x32xf32> to vector<16x8xf32>
+    %62 = vector.extract_strided_slice %44 offsets = [0, 0], sizes = [8, 16], strides = [1, 1] : vector<16x16xf16> to vector<8x16xf16>
+    %63 = vector.extract_strided_slice %arg1 offsets = [0, 0], sizes = [16, 8], strides = [1, 1] : vector<32x32xf32> to vector<16x8xf32>
     %64 = vector.contract {indexing_maps = [affine_map<(d0, d1, d2) -> (d0, d2)>, affine_map<(d0, d1, d2) -> (d1, d2)>, affine_map<(d0, d1, d2) -> (d0, d1)>], iterator_types = ["parallel", "parallel", "reduction"], kind = #vector.kind<add>} %26, %62, %63 : vector<16x16xf16>, vector<8x16xf16> into vector<16x8xf32>
-    %65 = vector.extract_strided_slice %44 {offsets = [8, 0], sizes = [8, 16], strides = [1, 1]} : vector<16x16xf16> to vector<8x16xf16>
-    %66 = vector.extract_strided_slice %arg1 {offsets = [0, 8], sizes = [16, 8], strides = [1, 1]} : vector<32x32xf32> to vector<16x8xf32>
+    %65 = vector.extract_strided_slice %44 offsets = [8, 0], sizes = [8, 16], strides = [1, 1] : vector<16x16xf16> to vector<8x16xf16>
+    %66 = vector.extract_strided_slice %arg1 offsets = [0, 8], sizes = [16, 8], strides = [1, 1] : vector<32x32xf32> to vector<16x8xf32>
     %67 = vector.contract {indexing_maps = [affine_map<(d0, d1, d2) -> (d0, d2)>, affine_map<(d0, d1, d2) -> (d1, d2)>, affine_map<(d0, d1, d2) -> (d0, d1)>], iterator_types = ["parallel", "parallel", "reduction"], kind = #vector.kind<add>} %26, %65, %66 : vector<16x16xf16>, vector<8x16xf16> into vector<16x8xf32>
-    %68 = vector.extract_strided_slice %52 {offsets = [0, 0], sizes = [8, 16], strides = [1, 1]} : vector<16x16xf16> to vector<8x16xf16>
-    %69 = vector.extract_strided_slice %arg1 {offsets = [0, 16], sizes = [16, 8], strides = [1, 1]} : vector<32x32xf32> to vector<16x8xf32>
+    %68 = vector.extract_strided_slice %52 offsets = [0, 0], sizes = [8, 16], strides = [1, 1] : vector<16x16xf16> to vector<8x16xf16>
+    %69 = vector.extract_strided_slice %arg1 offsets = [0, 16], sizes = [16, 8], strides = [1, 1] : vector<32x32xf32> to vector<16x8xf32>
     %70 = vector.contract {indexing_maps = [affine_map<(d0, d1, d2) -> (d0, d2)>, affine_map<(d0, d1, d2) -> (d1, d2)>, affine_map<(d0, d1, d2) -> (d0, d1)>], iterator_types = ["parallel", "parallel", "reduction"], kind = #vector.kind<add>} %26, %68, %69 : vector<16x16xf16>, vector<8x16xf16> into vector<16x8xf32>
-    %71 = vector.extract_strided_slice %52 {offsets = [8, 0], sizes = [8, 16], strides = [1, 1]} : vector<16x16xf16> to vector<8x16xf16>
-    %72 = vector.extract_strided_slice %arg1 {offsets = [0, 24], sizes = [16, 8], strides = [1, 1]} : vector<32x32xf32> to vector<16x8xf32>
+    %71 = vector.extract_strided_slice %52 offsets = [8, 0], sizes = [8, 16], strides = [1, 1] : vector<16x16xf16> to vector<8x16xf16>
+    %72 = vector.extract_strided_slice %arg1 offsets = [0, 24], sizes = [16, 8], strides = [1, 1] : vector<32x32xf32> to vector<16x8xf32>
     %73 = vector.contract {indexing_maps = [affine_map<(d0, d1, d2) -> (d0, d2)>, affine_map<(d0, d1, d2) -> (d1, d2)>, affine_map<(d0, d1, d2) -> (d0, d1)>], iterator_types = ["parallel", "parallel", "reduction"], kind = #vector.kind<add>} %26, %71, %72 : vector<16x16xf16>, vector<8x16xf16> into vector<16x8xf32>
-    %74 = vector.extract_strided_slice %44 {offsets = [0, 0], sizes = [8, 16], strides = [1, 1]} : vector<16x16xf16> to vector<8x16xf16>
-    %75 = vector.extract_strided_slice %arg1 {offsets = [16, 0], sizes = [16, 8], strides = [1, 1]} : vector<32x32xf32> to vector<16x8xf32>
+    %74 = vector.extract_strided_slice %44 offsets = [0, 0], sizes = [8, 16], strides = [1, 1] : vector<16x16xf16> to vector<8x16xf16>
+    %75 = vector.extract_strided_slice %arg1 offsets = [16, 0], sizes = [16, 8], strides = [1, 1] : vector<32x32xf32> to vector<16x8xf32>
     %76 = vector.contract {indexing_maps = [affine_map<(d0, d1, d2) -> (d0, d2)>, affine_map<(d0, d1, d2) -> (d1, d2)>, affine_map<(d0, d1, d2) -> (d0, d1)>], iterator_types = ["parallel", "parallel", "reduction"], kind = #vector.kind<add>} %34, %74, %75 : vector<16x16xf16>, vector<8x16xf16> into vector<16x8xf32>
-    %77 = vector.extract_strided_slice %44 {offsets = [8, 0], sizes = [8, 16], strides = [1, 1]} : vector<16x16xf16> to vector<8x16xf16>
-    %78 = vector.extract_strided_slice %arg1 {offsets = [16, 8], sizes = [16, 8], strides = [1, 1]} : vector<32x32xf32> to vector<16x8xf32>
+    %77 = vector.extract_strided_slice %44 offsets = [8, 0], sizes = [8, 16], strides = [1, 1] : vector<16x16xf16> to vector<8x16xf16>
+    %78 = vector.extract_strided_slice %arg1 offsets = [16, 8], sizes = [16, 8], strides = [1, 1] : vector<32x32xf32> to vector<16x8xf32>
     %79 = vector.contract {indexing_maps = [affine_map<(d0, d1, d2) -> (d0, d2)>, affine_map<(d0, d1, d2) -> (d1, d2)>, affine_map<(d0, d1, d2) -> (d0, d1)>], iterator_types = ["parallel", "parallel", "reduction"], kind = #vector.kind<add>} %34, %77, %78 : vector<16x16xf16>, vector<8x16xf16> into vector<16x8xf32>
-    %80 = vector.extract_strided_slice %52 {offsets = [0, 0], sizes = [8, 16], strides = [1, 1]} : vector<16x16xf16> to vector<8x16xf16>
-    %81 = vector.extract_strided_slice %arg1 {offsets = [16, 16], sizes = [16, 8], strides = [1, 1]} : vector<32x32xf32> to vector<16x8xf32>
+    %80 = vector.extract_strided_slice %52 offsets = [0, 0], sizes = [8, 16], strides = [1, 1] : vector<16x16xf16> to vector<8x16xf16>
+    %81 = vector.extract_strided_slice %arg1 offsets = [16, 16], sizes = [16, 8], strides = [1, 1] : vector<32x32xf32> to vector<16x8xf32>
     %82 = vector.contract {indexing_maps = [affine_map<(d0, d1, d2) -> (d0, d2)>, affine_map<(d0, d1, d2) -> (d1, d2)>, affine_map<(d0, d1, d2) -> (d0, d1)>], iterator_types = ["parallel", "parallel", "reduction"], kind = #vector.kind<add>} %34, %80, %81 : vector<16x16xf16>, vector<8x16xf16> into vector<16x8xf32>
-    %83 = vector.extract_strided_slice %52 {offsets = [8, 0], sizes = [8, 16], strides = [1, 1]} : vector<16x16xf16> to vector<8x16xf16>
-    %84 = vector.extract_strided_slice %arg1 {offsets = [16, 24], sizes = [16, 8], strides = [1, 1]} : vector<32x32xf32> to vector<16x8xf32>
+    %83 = vector.extract_strided_slice %52 offsets = [8, 0], sizes = [8, 16], strides = [1, 1] : vector<16x16xf16> to vector<8x16xf16>
+    %84 = vector.extract_strided_slice %arg1 offsets = [16, 24], sizes = [16, 8], strides = [1, 1] : vector<32x32xf32> to vector<16x8xf32>
     %85 = vector.contract {indexing_maps = [affine_map<(d0, d1, d2) -> (d0, d2)>, affine_map<(d0, d1, d2) -> (d1, d2)>, affine_map<(d0, d1, d2) -> (d0, d1)>], iterator_types = ["parallel", "parallel", "reduction"], kind = #vector.kind<add>} %34, %83, %84 : vector<16x16xf16>, vector<8x16xf16> into vector<16x8xf32>
-    %86 = vector.extract_strided_slice %46 {offsets = [0, 0], sizes = [8, 16], strides = [1, 1]} : vector<16x16xf16> to vector<8x16xf16>
+    %86 = vector.extract_strided_slice %46 offsets = [0, 0], sizes = [8, 16], strides = [1, 1] : vector<16x16xf16> to vector<8x16xf16>
     %87 = vector.contract {indexing_maps = [affine_map<(d0, d1, d2) -> (d0, d2)>, affine_map<(d0, d1, d2) -> (d1, d2)>, affine_map<(d0, d1, d2) -> (d0, d1)>], iterator_types = ["parallel", "parallel", "reduction"], kind = #vector.kind<add>} %28, %86, %64 : vector<16x16xf16>, vector<8x16xf16> into vector<16x8xf32>
-    %88 = vector.extract_strided_slice %46 {offsets = [8, 0], sizes = [8, 16], strides = [1, 1]} : vector<16x16xf16> to vector<8x16xf16>
+    %88 = vector.extract_strided_slice %46 offsets = [8, 0], sizes = [8, 16], strides = [1, 1] : vector<16x16xf16> to vector<8x16xf16>
     %89 = vector.contract {indexing_maps = [affine_map<(d0, d1, d2) -> (d0, d2)>, affine_map<(d0, d1, d2) -> (d1, d2)>, affine_map<(d0, d1, d2) -> (d0, d1)>], iterator_types = ["parallel", "parallel", "reduction"], kind = #vector.kind<add>} %28, %88, %67 : vector<16x16xf16>, vector<8x16xf16> into vector<16x8xf32>
-    %90 = vector.extract_strided_slice %55 {offsets = [0, 0], sizes = [8, 16], strides = [1, 1]} : vector<16x16xf16> to vector<8x16xf16>
+    %90 = vector.extract_strided_slice %55 offsets = [0, 0], sizes = [8, 16], strides = [1, 1] : vector<16x16xf16> to vector<8x16xf16>
     %91 = vector.contract {indexing_maps = [affine_map<(d0, d1, d2) -> (d0, d2)>, affine_map<(d0, d1, d2) -> (d1, d2)>, affine_map<(d0, d1, d2) -> (d0, d1)>], iterator_types = ["parallel", "parallel", "reduction"], kind = #vector.kind<add>} %28, %90, %70 : vector<16x16xf16>, vector<8x16xf16> into vector<16x8xf32>
-    %92 = vector.extract_strided_slice %55 {offsets = [8, 0], sizes = [8, 16], strides = [1, 1]} : vector<16x16xf16> to vector<8x16xf16>
+    %92 = vector.extract_strided_slice %55 offsets = [8, 0], sizes = [8, 16], strides = [1, 1] : vector<16x16xf16> to vector<8x16xf16>
     %93 = vector.contract {indexing_maps = [affine_map<(d0, d1, d2) -> (d0, d2)>, affine_map<(d0, d1, d2) -> (d1, d2)>, affine_map<(d0, d1, d2) -> (d0, d1)>], iterator_types = ["parallel", "parallel", "reduction"], kind = #vector.kind<add>} %28, %92, %73 : vector<16x16xf16>, vector<8x16xf16> into vector<16x8xf32>
-    %94 = vector.extract_strided_slice %46 {offsets = [0, 0], sizes = [8, 16], strides = [1, 1]} : vector<16x16xf16> to vector<8x16xf16>
+    %94 = vector.extract_strided_slice %46 offsets = [0, 0], sizes = [8, 16], strides = [1, 1] : vector<16x16xf16> to vector<8x16xf16>
     %95 = vector.contract {indexing_maps = [affine_map<(d0, d1, d2) -> (d0, d2)>, affine_map<(d0, d1, d2) -> (d1, d2)>, affine_map<(d0, d1, d2) -> (d0, d1)>], iterator_types = ["parallel", "parallel", "reduction"], kind = #vector.kind<add>} %37, %94, %76 : vector<16x16xf16>, vector<8x16xf16> into vector<16x8xf32>
-    %96 = vector.extract_strided_slice %46 {offsets = [8, 0], sizes = [8, 16], strides = [1, 1]} : vector<16x16xf16> to vector<8x16xf16>
+    %96 = vector.extract_strided_slice %46 offsets = [8, 0], sizes = [8, 16], strides = [1, 1] : vector<16x16xf16> to vector<8x16xf16>
     %97 = vector.contract {indexing_maps = [affine_map<(d0, d1, d2) -> (d0, d2)>, affine_map<(d0, d1, d2) -> (d1, d2)>, affine_map<(d0, d1, d2) -> (d0, d1)>], iterator_types = ["parallel", "parallel", "reduction"], kind = #vector.kind<add>} %37, %96, %79 : vector<16x16xf16>, vector<8x16xf16> into vector<16x8xf32>
-    %98 = vector.extract_strided_slice %55 {offsets = [0, 0], sizes = [8, 16], strides = [1, 1]} : vector<16x16xf16> to vector<8x16xf16>
+    %98 = vector.extract_strided_slice %55 offsets = [0, 0], sizes = [8, 16], strides = [1, 1] : vector<16x16xf16> to vector<8x16xf16>
     %99 = vector.contract {indexing_maps = [affine_map<(d0, d1, d2) -> (d0, d2)>, affine_map<(d0, d1, d2) -> (d1, d2)>, affine_map<(d0, d1, d2) -> (d0, d1)>], iterator_types = ["parallel", "parallel", "reduction"], kind = #vector.kind<add>} %37, %98, %82 : vector<16x16xf16>, vector<8x16xf16> into vector<16x8xf32>
-    %100 = vector.extract_strided_slice %55 {offsets = [8, 0], sizes = [8, 16], strides = [1, 1]} : vector<16x16xf16> to vector<8x16xf16>
+    %100 = vector.extract_strided_slice %55 offsets = [8, 0], sizes = [8, 16], strides = [1, 1] : vector<16x16xf16> to vector<8x16xf16>
     %101 = vector.contract {indexing_maps = [affine_map<(d0, d1, d2) -> (d0, d2)>, affine_map<(d0, d1, d2) -> (d1, d2)>, affine_map<(d0, d1, d2) -> (d0, d1)>], iterator_types = ["parallel", "parallel", "reduction"], kind = #vector.kind<add>} %37, %100, %85 : vector<16x16xf16>, vector<8x16xf16> into vector<16x8xf32>
-    %102 = vector.extract_strided_slice %48 {offsets = [0, 0], sizes = [8, 16], strides = [1, 1]} : vector<16x16xf16> to vector<8x16xf16>
+    %102 = vector.extract_strided_slice %48 offsets = [0, 0], sizes = [8, 16], strides = [1, 1] : vector<16x16xf16> to vector<8x16xf16>
     %103 = vector.contract {indexing_maps = [affine_map<(d0, d1, d2) -> (d0, d2)>, affine_map<(d0, d1, d2) -> (d1, d2)>, affine_map<(d0, d1, d2) -> (d0, d1)>], iterator_types = ["parallel", "parallel", "reduction"], kind = #vector.kind<add>} %30, %102, %87 : vector<16x16xf16>, vector<8x16xf16> into vector<16x8xf32>
-    %104 = vector.extract_strided_slice %48 {offsets = [8, 0], sizes = [8, 16], strides = [1, 1]} : vector<16x16xf16> to vector<8x16xf16>
+    %104 = vector.extract_strided_slice %48 offsets = [8, 0], sizes = [8, 16], strides = [1, 1] : vector<16x16xf16> to vector<8x16xf16>
     %105 = vector.contract {indexing_maps = [affine_map<(d0, d1, d2) -> (d0, d2)>, affine_map<(d0, d1, d2) -> (d1, d2)>, affine_map<(d0, d1, d2) -> (d0, d1)>], iterator_types = ["parallel", "parallel", "reduction"], kind = #vector.kind<add>} %30, %104, %89 : vector<16x16xf16>, vector<8x16xf16> into vector<16x8xf32>
-    %106 = vector.extract_strided_slice %58 {offsets = [0, 0], sizes = [8, 16], strides = [1, 1]} : vector<16x16xf16> to vector<8x16xf16>
+    %106 = vector.extract_strided_slice %58 offsets = [0, 0], sizes = [8, 16], strides = [1, 1] : vector<16x16xf16> to vector<8x16xf16>
     %107 = vector.contract {indexing_maps = [affine_map<(d0, d1, d2) -> (d0, d2)>, affine_map<(d0, d1, d2) -> (d1, d2)>, affine_map<(d0, d1, d2) -> (d0, d1)>], iterator_types = ["parallel", "parallel", "reduction"], kind = #vector.kind<add>} %30, %106, %91 : vector<16x16xf16>, vector<8x16xf16> into vector<16x8xf32>
-    %108 = vector.extract_strided_slice %58 {offsets = [8, 0], sizes = [8, 16], strides = [1, 1]} : vector<16x16xf16> to vector<8x16xf16>
+    %108 = vector.extract_strided_slice %58 offsets = [8, 0], sizes = [8, 16], strides = [1, 1] : vector<16x16xf16> to vector<8x16xf16>
     %109 = vector.contract {indexing_maps = [affine_map<(d0, d1, d2) -> (d0, d2)>, affine_map<(d0, d1, d2) -> (d1, d2)>, affine_map<(d0, d1, d2) -> (d0, d1)>], iterator_types = ["parallel", "parallel", "reduction"], kind = #vector.kind<add>} %30, %108, %93 : vector<16x16xf16>, vector<8x16xf16> into vector<16x8xf32>
-    %110 = vector.extract_strided_slice %48 {offsets = [0, 0], sizes = [8, 16], strides = [1, 1]} : vector<16x16xf16> to vector<8x16xf16>
+    %110 = vector.extract_strided_slice %48 offsets = [0, 0], sizes = [8, 16], strides = [1, 1] : vector<16x16xf16> to vector<8x16xf16>
     %111 = vector.contract {indexing_maps = [affine_map<(d0, d1, d2) -> (d0, d2)>, affine_map<(d0, d1, d2) -> (d1, d2)>, affine_map<(d0, d1, d2) -> (d0, d1)>], iterator_types = ["parallel", "parallel", "reduction"], kind = #vector.kind<add>} %40, %110, %95 : vector<16x16xf16>, vector<8x16xf16> into vector<16x8xf32>
-    %112 = vector.extract_strided_slice %48 {offsets = [8, 0], sizes = [8, 16], strides = [1, 1]} : vector<16x16xf16> to vector<8x16xf16>
+    %112 = vector.extract_strided_slice %48 offsets = [8, 0], sizes = [8, 16], strides = [1, 1] : vector<16x16xf16> to vector<8x16xf16>
     %113 = vector.contract {indexing_maps = [affine_map<(d0, d1, d2) -> (d0, d2)>, affine_map<(d0, d1, d2) -> (d1, d2)>, affine_map<(d0, d1, d2) -> (d0, d1)>], iterator_types = ["parallel", "parallel", "reduction"], kind = #vector.kind<add>} %40, %112, %97 : vector<16x16xf16>, vector<8x16xf16> into vector<16x8xf32>
-    %114 = vector.extract_strided_slice %58 {offsets = [0, 0], sizes = [8, 16], strides = [1, 1]} : vector<16x16xf16> to vector<8x16xf16>
+    %114 = vector.extract_strided_slice %58 offsets = [0, 0], sizes = [8, 16], strides = [1, 1] : vector<16x16xf16> to vector<8x16xf16>
     %115 = vector.contract {indexing_maps = [affine_map<(d0, d1, d2) -> (d0, d2)>, affine_map<(d0, d1, d2) -> (d1, d2)>, affine_map<(d0, d1, d2) -> (d0, d1)>], iterator_types = ["parallel", "parallel", "reduction"], kind = #vector.kind<add>} %40, %114, %99 : vector<16x16xf16>, vector<8x16xf16> into vector<16x8xf32>
-    %116 = vector.extract_strided_slice %58 {offsets = [8, 0], sizes = [8, 16], strides = [1, 1]} : vector<16x16xf16> to vector<8x16xf16>
+    %116 = vector.extract_strided_slice %58 offsets = [8, 0], sizes = [8, 16], strides = [1, 1] : vector<16x16xf16> to vector<8x16xf16>
     %117 = vector.contract {indexing_maps = [affine_map<(d0, d1, d2) -> (d0, d2)>, affine_map<(d0, d1, d2) -> (d1, d2)>, affine_map<(d0, d1, d2) -> (d0, d1)>], iterator_types = ["parallel", "parallel", "reduction"], kind = #vector.kind<add>} %40, %116, %101 : vector<16x16xf16>, vector<8x16xf16> into vector<16x8xf32>
-    %118 = vector.extract_strided_slice %50 {offsets = [0, 0], sizes = [8, 16], strides = [1, 1]} : vector<16x16xf16> to vector<8x16xf16>
+    %118 = vector.extract_strided_slice %50 offsets = [0, 0], sizes = [8, 16], strides = [1, 1] : vector<16x16xf16> to vector<8x16xf16>
     %119 = vector.contract {indexing_maps = [affine_map<(d0, d1, d2) -> (d0, d2)>, affine_map<(d0, d1, d2) -> (d1, d2)>, affine_map<(d0, d1, d2) -> (d0, d1)>], iterator_types = ["parallel", "parallel", "reduction"], kind = #vector.kind<add>} %32, %118, %103 : vector<16x16xf16>, vector<8x16xf16> into vector<16x8xf32>
-    %120 = vector.extract_strided_slice %50 {offsets = [8, 0], sizes = [8, 16], strides = [1, 1]} : vector<16x16xf16> to vector<8x16xf16>
+    %120 = vector.extract_strided_slice %50 offsets = [8, 0], sizes = [8, 16], strides = [1, 1] : vector<16x16xf16> to vector<8x16xf16>
     %121 = vector.contract {indexing_maps = [affine_map<(d0, d1, d2) -> (d0, d2)>, affine_map<(d0, d1, d2) -> (d1, d2)>, affine_map<(d0, d1, d2) -> (d0, d1)>], iterator_types = ["parallel", "parallel", "reduction"], kind = #vector.kind<add>} %32, %120, %105 : vector<16x16xf16>, vector<8x16xf16> into vector<16x8xf32>
-    %122 = vector.extract_strided_slice %61 {offsets = [0, 0], sizes = [8, 16], strides = [1, 1]} : vector<16x16xf16> to vector<8x16xf16>
+    %122 = vector.extract_strided_slice %61 offsets = [0, 0], sizes = [8, 16], strides = [1, 1] : vector<16x16xf16> to vector<8x16xf16>
     %123 = vector.contract {indexing_maps = [affine_map<(d0, d1, d2) -> (d0, d2)>, affine_map<(d0, d1, d2) -> (d1, d2)>, affine_map<(d0, d1, d2) -> (d0, d1)>], iterator_types = ["parallel", "parallel", "reduction"], kind = #vector.kind<add>} %32, %122, %107 : vector<16x16xf16>, vector<8x16xf16> into vector<16x8xf32>
-    %124 = vector.extract_strided_slice %61 {offsets = [8, 0], sizes = [8, 16], strides = [1, 1]} : vector<16x16xf16> to vector<8x16xf16>
+    %124 = vector.extract_strided_slice %61 offsets = [8, 0], sizes = [8, 16], strides = [1, 1] : vector<16x16xf16> to vector<8x16xf16>
     %125 = vector.contract {indexing_maps = [affine_map<(d0, d1, d2) -> (d0, d2)>, affine_map<(d0, d1, d2) -> (d1, d2)>, affine_map<(d0, d1, d2) -> (d0, d1)>], iterator_types = ["parallel", "parallel", "reduction"], kind = #vector.kind<add>} %32, %124, %109 : vector<16x16xf16>, vector<8x16xf16> into vector<16x8xf32>
-    %126 = vector.extract_strided_slice %50 {offsets = [0, 0], sizes = [8, 16], strides = [1, 1]} : vector<16x16xf16> to vector<8x16xf16>
+    %126 = vector.extract_strided_slice %50 offsets = [0, 0], sizes = [8, 16], strides = [1, 1] : vector<16x16xf16> to vector<8x16xf16>
     %127 = vector.contract {indexing_maps = [affine_map<(d0, d1, d2) -> (d0, d2)>, affine_map<(d0, d1, d2) -> (d1, d2)>, affine_map<(d0, d1, d2) -> (d0, d1)>], iterator_types = ["parallel", "parallel", "reduction"], kind = #vector.kind<add>} %43, %126, %111 : vector<16x16xf16>, vector<8x16xf16> into vector<16x8xf32>
-    %128 = vector.extract_strided_slice %50 {offsets = [8, 0], sizes = [8, 16], strides = [1, 1]} : vector<16x16xf16> to vector<8x16xf16>
+    %128 = vector.extract_strided_slice %50 offsets = [8, 0], sizes = [8, 16], strides = [1, 1] : vector<16x16xf16> to vector<8x16xf16>
     %129 = vector.contract {indexing_maps = [affine_map<(d0, d1, d2) -> (d0, d2)>, affine_map<(d0, d1, d2) -> (d1, d2)>, affine_map<(d0, d1, d2) -> (d0, d1)>], iterator_types = ["parallel", "parallel", "reduction"], kind = #vector.kind<add>} %43, %128, %113 : vector<16x16xf16>, vector<8x16xf16> into vector<16x8xf32>
-    %130 = vector.extract_strided_slice %61 {offsets = [0, 0], sizes = [8, 16], strides = [1, 1]} : vector<16x16xf16> to vector<8x16xf16>
+    %130 = vector.extract_strided_slice %61 offsets = [0, 0], sizes = [8, 16], strides = [1, 1] : vector<16x16xf16> to vector<8x16xf16>
     %131 = vector.contract {indexing_maps = [affine_map<(d0, d1, d2) -> (d0, d2)>, affine_map<(d0, d1, d2) -> (d1, d2)>, affine_map<(d0, d1, d2) -> (d0, d1)>], iterator_types = ["parallel", "parallel", "reduction"], kind = #vector.kind<add>} %43, %130, %115 : vector<16x16xf16>, vector<8x16xf16> into vector<16x8xf32>
-    %132 = vector.extract_strided_slice %61 {offsets = [8, 0], sizes = [8, 16], strides = [1, 1]} : vector<16x16xf16> to vector<8x16xf16>
+    %132 = vector.extract_strided_slice %61 offsets = [8, 0], sizes = [8, 16], strides = [1, 1] : vector<16x16xf16> to vector<8x16xf16>
     %133 = vector.contract {indexing_maps = [affine_map<(d0, d1, d2) -> (d0, d2)>, affine_map<(d0, d1, d2) -> (d1, d2)>, affine_map<(d0, d1, d2) -> (d0, d1)>], iterator_types = ["parallel", "parallel", "reduction"], kind = #vector.kind<add>} %43, %132, %117 : vector<16x16xf16>, vector<8x16xf16> into vector<16x8xf32>
-    %134 = vector.insert_strided_slice %119, %cst_0 {offsets = [0, 0], strides = [1, 1]} : vector<16x8xf32> into vector<32x32xf32>
-    %135 = vector.insert_strided_slice %121, %134 {offsets = [0, 8], strides = [1, 1]} : vector<16x8xf32> into vector<32x32xf32>
-    %136 = vector.insert_strided_slice %123, %135 {offsets = [0, 16], strides = [1, 1]} : vector<16x8xf32> into vector<32x32xf32>
-    %137 = vector.insert_strided_slice %125, %136 {offsets = [0, 24], strides = [1, 1]} : vector<16x8xf32> into vector<32x32xf32>
-    %138 = vector.insert_strided_slice %127, %137 {offsets = [16, 0], strides = [1, 1]} : vector<16x8xf32> into vector<32x32xf32>
-    %139 = vector.insert_strided_slice %129, %138 {offsets = [16, 8], strides = [1, 1]} : vector<16x8xf32> into vector<32x32xf32>
-    %140 = vector.insert_strided_slice %131, %139 {offsets = [16, 16], strides = [1, 1]} : vector<16x8xf32> into vector<32x32xf32>
-    %141 = vector.insert_strided_slice %133, %140 {offsets = [16, 24], strides = [1, 1]} : vector<16x8xf32> into vector<32x32xf32>
+    %134 = vector.insert_strided_slice %119, %cst_0 offsets = [0, 0], strides = [1, 1] : vector<16x8xf32> into vector<32x32xf32>
+    %135 = vector.insert_strided_slice %121, %134 offsets = [0, 8], strides = [1, 1] : vector<16x8xf32> into vector<32x32xf32>
+    %136 = vector.insert_strided_slice %123, %135 offsets = [0, 16], strides = [1, 1] : vector<16x8xf32> into vector<32x32xf32>
+    %137 = vector.insert_strided_slice %125, %136 offsets = [0, 24], strides = [1, 1] : vector<16x8xf32> into vector<32x32xf32>
+    %138 = vector.insert_strided_slice %127, %137 offsets = [16, 0], strides = [1, 1] : vector<16x8xf32> into vector<32x32xf32>
+    %139 = vector.insert_strided_slice %129, %138 offsets = [16, 8], strides = [1, 1] : vector<16x8xf32> into vector<32x32xf32>
+    %140 = vector.insert_strided_slice %131, %139 offsets = [16, 16], strides = [1, 1] : vector<16x8xf32> into vector<32x32xf32>
+    %141 = vector.insert_strided_slice %133, %140 offsets = [16, 24], strides = [1, 1] : vector<16x8xf32> into vector<32x32xf32>
     scf.yield %141 : vector<32x32xf32>
   }
-  %8 = vector.extract_strided_slice %7 {offsets = [0, 0], sizes = [16, 8], strides = [1, 1]} : vector<32x32xf32> to vector<16x8xf32>
+  %8 = vector.extract_strided_slice %7 offsets = [0, 0], sizes = [16, 8], strides = [1, 1] : vector<32x32xf32> to vector<16x8xf32>
   vector.transfer_write %8, %2[%5, %6] {in_bounds = [true, true]} : vector<16x8xf32>, memref<3456x1024xf32>
-  %9 = vector.extract_strided_slice %7 {offsets = [0, 8], sizes = [16, 8], strides = [1, 1]} : vector<32x32xf32> to vector<16x8xf32>
+  %9 = vector.extract_strided_slice %7 offsets = [0, 8], sizes = [16, 8], strides = [1, 1] : vector<32x32xf32> to vector<16x8xf32>
   %10 = affine.apply affine_map<(d0) -> (d0 + 8)>(%6)
   vector.transfer_write %9, %2[%5, %10] {in_bounds = [true, true]} : vector<16x8xf32>, memref<3456x1024xf32>
-  %11 = vector.extract_strided_slice %7 {offsets = [0, 16], sizes = [16, 8], strides = [1, 1]} : vector<32x32xf32> to vector<16x8xf32>
+  %11 = vector.extract_strided_slice %7 offsets = [0, 16], sizes = [16, 8], strides = [1, 1] : vector<32x32xf32> to vector<16x8xf32>
   %12 = affine.apply affine_map<(d0) -> (d0 + 16)>(%6)
   vector.transfer_write %11, %2[%5, %12] {in_bounds = [true, true]} : vector<16x8xf32>, memref<3456x1024xf32>
-  %13 = vector.extract_strided_slice %7 {offsets = [0, 24], sizes = [16, 8], strides = [1, 1]} : vector<32x32xf32> to vector<16x8xf32>
+  %13 = vector.extract_strided_slice %7 offsets = [0, 24], sizes = [16, 8], strides = [1, 1] : vector<32x32xf32> to vector<16x8xf32>
   %14 = affine.apply affine_map<(d0) -> (d0 + 24)>(%6)
   vector.transfer_write %13, %2[%5, %14] {in_bounds = [true, true]} : vector<16x8xf32>, memref<3456x1024xf32>
-  %15 = vector.extract_strided_slice %7 {offsets = [16, 0], sizes = [16, 8], strides = [1, 1]} : vector<32x32xf32> to vector<16x8xf32>
+  %15 = vector.extract_strided_slice %7 offsets = [16, 0], sizes = [16, 8], strides = [1, 1] : vector<32x32xf32> to vector<16x8xf32>
   %16 = affine.apply affine_map<(d0) -> (d0 + 16)>(%5)
   vector.transfer_write %15, %2[%16, %6] {in_bounds = [true, true]} : vector<16x8xf32>, memref<3456x1024xf32>
-  %17 = vector.extract_strided_slice %7 {offsets = [16, 8], sizes = [16, 8], strides = [1, 1]} : vector<32x32xf32> to vector<16x8xf32>
+  %17 = vector.extract_strided_slice %7 offsets = [16, 8], sizes = [16, 8], strides = [1, 1] : vector<32x32xf32> to vector<16x8xf32>
   %18 = affine.apply affine_map<(d0) -> (d0 + 16)>(%5)
   %19 = affine.apply affine_map<(d0) -> (d0 + 8)>(%6)
   vector.transfer_write %17, %2[%18, %19] {in_bounds = [true, true]} : vector<16x8xf32>, memref<3456x1024xf32>
-  %20 = vector.extract_strided_slice %7 {offsets = [16, 16], sizes = [16, 8], strides = [1, 1]} : vector<32x32xf32> to vector<16x8xf32>
+  %20 = vector.extract_strided_slice %7 offsets = [16, 16], sizes = [16, 8], strides = [1, 1] : vector<32x32xf32> to vector<16x8xf32>
   %21 = affine.apply affine_map<(d0) -> (d0 + 16)>(%5)
   %22 = affine.apply affine_map<(d0) -> (d0 + 16)>(%6)
   vector.transfer_write %20, %2[%21, %22] {in_bounds = [true, true]} : vector<16x8xf32>, memref<3456x1024xf32>
-  %23 = vector.extract_strided_slice %7 {offsets = [16, 24], sizes = [16, 8], strides = [1, 1]} : vector<32x32xf32> to vector<16x8xf32>
+  %23 = vector.extract_strided_slice %7 offsets = [16, 24], sizes = [16, 8], strides = [1, 1] : vector<32x32xf32> to vector<16x8xf32>
   %24 = affine.apply affine_map<(d0) -> (d0 + 16)>(%5)
   %25 = affine.apply affine_map<(d0) -> (d0 + 24)>(%6)
   vector.transfer_write %23, %2[%24, %25] {in_bounds = [true, true]} : vector<16x8xf32>, memref<3456x1024xf32>
diff --git a/compiler/src/iree/compiler/Codegen/Common/test/resolve_swizzle_hints.mlir b/compiler/src/iree/compiler/Codegen/Common/test/resolve_swizzle_hints.mlir
index 000802b..d833f6b 100644
--- a/compiler/src/iree/compiler/Codegen/Common/test/resolve_swizzle_hints.mlir
+++ b/compiler/src/iree/compiler/Codegen/Common/test/resolve_swizzle_hints.mlir
@@ -91,8 +91,8 @@
   %0 = iree_codegen.swizzle_hint %src[#iree_codegen.rotate_rows<64, 4>] : memref<?xf32>
   %offset = arith.constant 60 : index
   %1 = vector.load %0[%offset] : memref<?xf32>, vector<8xf32>
-  %2 = vector.extract_strided_slice %1 {offsets = [0], sizes = [4], strides = [1]} : vector<8xf32> to vector<4xf32>
-  %3 = vector.extract_strided_slice %1 {offsets = [4], sizes = [4], strides = [1]} : vector<8xf32> to vector<4xf32>
+  %2 = vector.extract_strided_slice %1 offsets = [0], sizes = [4], strides = [1] : vector<8xf32> to vector<4xf32>
+  %3 = vector.extract_strided_slice %1 offsets = [4], sizes = [4], strides = [1] : vector<8xf32> to vector<4xf32>
   return %2, %3 : vector<4xf32>, vector<4xf32>
 }
 
@@ -110,8 +110,8 @@
   %0 = iree_codegen.swizzle_hint %dst[#iree_codegen.rotate_rows<64, 4>] : memref<?xf32>
   %offset = arith.constant 60 : index
   %cst = arith.constant dense<0.0> : vector<8xf32>
-  %1 = vector.insert_strided_slice %src0, %cst {offsets = [0], strides = [1]} : vector<4xf32> into vector<8xf32>
-  %2 = vector.insert_strided_slice %src1, %1 {offsets = [4], strides = [1]} : vector<4xf32> into vector<8xf32>
+  %1 = vector.insert_strided_slice %src0, %cst offsets = [0], strides = [1] : vector<4xf32> into vector<8xf32>
+  %2 = vector.insert_strided_slice %src1, %1 offsets = [4], strides = [1] : vector<4xf32> into vector<8xf32>
   vector.store %2, %0[%offset] : memref<?xf32>, vector<8xf32>
   return
 }
diff --git a/compiler/src/iree/compiler/Codegen/Common/test/transform_buffer_opt.mlir b/compiler/src/iree/compiler/Codegen/Common/test/transform_buffer_opt.mlir
index 003a5f2..69d5b06 100644
--- a/compiler/src/iree/compiler/Codegen/Common/test/transform_buffer_opt.mlir
+++ b/compiler/src/iree/compiler/Codegen/Common/test/transform_buffer_opt.mlir
@@ -9,7 +9,7 @@
 func.func @store_to_load(%arg: vector<4xf32>) -> vector<4xf32> {
   %c0 = arith.constant 0 : index
   %cst_1 = arith.constant 0.000000e+00 : f32
-  %alloc = memref.alloc() {alignment = 64 : i64} : memref<64xf32>
+  %alloc = memref.alloc() alignment = 64 : memref<64xf32>
   vector.transfer_write %arg, %alloc[%c0] {in_bounds = [true]} : vector<4xf32>, memref<64xf32>
   %r = vector.transfer_read %alloc[%c0], %cst_1 {in_bounds = [true]} : memref<64xf32>, vector<4xf32>
   return %r : vector<4xf32>
diff --git a/compiler/src/iree/compiler/Codegen/Common/test/vector_layout_analysis.mlir b/compiler/src/iree/compiler/Codegen/Common/test/vector_layout_analysis.mlir
index 1a94f5c..be038f1 100644
--- a/compiler/src/iree/compiler/Codegen/Common/test/vector_layout_analysis.mlir
+++ b/compiler/src/iree/compiler/Codegen/Common/test/vector_layout_analysis.mlir
@@ -1080,7 +1080,7 @@
   %srcl = iree_vector_ext.to_layout %src to layout(#layout_scan_fwd_src) : vector<16x16xf16>
   // expected-remark @below {{layout of result #0 is #iree_vector_ext.nested_layout<subgroup_tile = [1, 1], batch_tile = [2, 1], outer_tile = [1, 1], thread_tile = [1, 1], element_tile = [8, 16], subgroup_strides = [0, 0], thread_strides = [0, 0]>}}
   // expected-remark @below {{layout of result #1 is #iree_vector_ext.nested_layout<subgroup_tile = [1], batch_tile = [1], outer_tile = [1], thread_tile = [1], element_tile = [16], subgroup_strides = [0], thread_strides = [0]>}}
-  %out:2 = vector.scan <add>, %srcl, %init {inclusive = true, reduction_dim = 0 : i64}
+  %out:2 = vector.scan <add>, %srcl, %init reduction_dim = 0, inclusive = true
     : vector<16x16xf16>, vector<16xf16>
   func.return %out#0, %out#1 : vector<16x16xf16>, vector<16xf16>
 }
@@ -1112,7 +1112,7 @@
   %init = vector.transfer_read %arr_init[%c0], %cst_0 {in_bounds = [true]} : memref<16xf16>, vector<16xf16>
   // expected-remark @above {{layout of result #0 is #iree_vector_ext.nested_layout<subgroup_tile = [1], batch_tile = [1], outer_tile = [1], thread_tile = [1], element_tile = [16], subgroup_strides = [0], thread_strides = [0]>}}
   // expected-remark @below {{layout of result #0 is #iree_vector_ext.nested_layout<subgroup_tile = [1, 1], batch_tile = [2, 1], outer_tile = [1, 1], thread_tile = [1, 1], element_tile = [8, 16], subgroup_strides = [0, 0], thread_strides = [0, 0]>}}
-  %out:2 = vector.scan <add>, %src, %init {inclusive = false, reduction_dim = 0 : i64}
+  %out:2 = vector.scan <add>, %src, %init reduction_dim = 0, inclusive = false
     : vector<16x16xf16>, vector<16xf16>
   %destl = iree_vector_ext.to_layout %out#0 to layout(#layout_scan_bwd) : vector<16x16xf16>
   func.return %destl, %out#1 : vector<16x16xf16>, vector<16xf16>
diff --git a/compiler/src/iree/compiler/Codegen/Common/test/vectorize_tensor_pad.mlir b/compiler/src/iree/compiler/Codegen/Common/test/vectorize_tensor_pad.mlir
index 5e87400..db32e9d 100644
--- a/compiler/src/iree/compiler/Codegen/Common/test/vectorize_tensor_pad.mlir
+++ b/compiler/src/iree/compiler/Codegen/Common/test/vectorize_tensor_pad.mlir
@@ -43,7 +43,7 @@
 // CHECK:   } else {
 // CHECK:     scf.yield %[[V3F0]] : vector<3xf32>
 // CHECK:   }
-// CHECK:   %[[INSERT0:.+]] = vector.insert_strided_slice %[[IF0]], %[[FULL]] {offsets = [0, 0, 0], strides = [1]} : vector<3xf32> into vector<2x2x3xf32>
+// CHECK:   %[[INSERT0:.+]] = vector.insert_strided_slice %[[IF0]], %[[FULL]] offsets = [0, 0, 0], strides = [1] : vector<3xf32> into vector<2x2x3xf32>
 
 // CHECK:   %[[LE:.+]] = arith.cmpi sle, %[[LOW2]], %[[I1]]
 // CHECK:   %[[GT:.+]] = arith.cmpi sgt, %[[UB2]], %[[I1]]
@@ -56,7 +56,7 @@
 // CHECK:   } else {
 // CHECK:     scf.yield %[[V3F0]] : vector<3xf32>
 // CHECK:   }
-// CHECK:   %[[INSERT1:.+]] = vector.insert_strided_slice %[[IF1]], %[[INSERT0]] {offsets = [0, 1, 0], strides = [1]} : vector<3xf32> into vector<2x2x3xf32>
+// CHECK:   %[[INSERT1:.+]] = vector.insert_strided_slice %[[IF1]], %[[INSERT0]] offsets = [0, 1, 0], strides = [1] : vector<3xf32> into vector<2x2x3xf32>
 
 // CHECK:   %[[LE:.+]] = arith.cmpi sle, %[[LOW1]], %[[I1]]
 // CHECK:   %[[GT:.+]] = arith.cmpi sgt, %[[UB1]], %[[I1]]
@@ -69,7 +69,7 @@
 // CHECK:   } else {
 // CHECK:     scf.yield %[[V3F0]] : vector<3xf32>
 // CHECK:   }
-// CHECK:   %[[INSERT2:.+]] = vector.insert_strided_slice %[[IF2]], %[[INSERT1]] {offsets = [1, 0, 0], strides = [1]} : vector<3xf32> into vector<2x2x3xf32>
+// CHECK:   %[[INSERT2:.+]] = vector.insert_strided_slice %[[IF2]], %[[INSERT1]] offsets = [1, 0, 0], strides = [1] : vector<3xf32> into vector<2x2x3xf32>
 
 // CHECK:   %[[AND3:.+]] = arith.andi %[[DIM1INDEX1INBOUND]], %[[DIM2INDEX1INBOUND]]
 // CHECK:   %[[IF3:.+]] = scf.if %[[AND3]] -> (vector<3xf32>) {
@@ -78,7 +78,7 @@
 // CHECK:   } else {
 // CHECK:     scf.yield %[[V3F0]] : vector<3xf32>
 // CHECK:   }
-// CHECK:   %[[INSERT3:.+]] = vector.insert_strided_slice %[[IF3]], %[[INSERT2]] {offsets = [1, 1, 0], strides = [1]} : vector<3xf32> into vector<2x2x3xf32>
+// CHECK:   %[[INSERT3:.+]] = vector.insert_strided_slice %[[IF3]], %[[INSERT2]] offsets = [1, 1, 0], strides = [1] : vector<3xf32> into vector<2x2x3xf32>
 
 // CHECK:   %[[INIT:.+]] = tensor.empty() : tensor<1x2x2x3xf32>
 // CHECK:   %[[WRITE:.+]] = vector.transfer_write %[[INSERT3]], %[[INIT]][%[[I0]], %[[I0]], %[[I0]], %[[I0]]] {in_bounds = [true, true, true]} : vector<2x2x3xf32>, tensor<1x2x2x3xf32>
diff --git a/compiler/src/iree/compiler/Codegen/Dialect/GPU/ExternalInterfaces/test/gpu_scope_alloc.mlir b/compiler/src/iree/compiler/Codegen/Dialect/GPU/ExternalInterfaces/test/gpu_scope_alloc.mlir
index c72c77a..a2c6ac7 100644
--- a/compiler/src/iree/compiler/Codegen/Dialect/GPU/ExternalInterfaces/test/gpu_scope_alloc.mlir
+++ b/compiler/src/iree/compiler/Codegen/Dialect/GPU/ExternalInterfaces/test/gpu_scope_alloc.mlir
@@ -18,7 +18,7 @@
 //  CHECK-SAME:   %[[D0:[A-Za-z0-9_]+]]: index
 //       CHECK:   pcf.generic scope(#iree_gpu.subgroup_scope)
 //  CHECK-NEXT:     execute[{{.*}}] {
-//  CHECK-NEXT:     %[[ALLOC:.+]] = memref.alloc(%[[D0]]) {alignment = 16 : i64} : memref<?x8xi32, #gpu.address_space<workgroup>>
+//  CHECK-NEXT:     %[[ALLOC:.+]] = memref.alloc(%[[D0]]) alignment = 16 : memref<?x8xi32, #gpu.address_space<workgroup>>
 //  CHECK-NEXT:     util.optimization_barrier %[[ALLOC]]
 //  CHECK-NEXT:     pcf.return
 
diff --git a/compiler/src/iree/compiler/Codegen/Dialect/GPU/TransformExtensions/test/lower_inner_tiled.mlir b/compiler/src/iree/compiler/Codegen/Dialect/GPU/TransformExtensions/test/lower_inner_tiled.mlir
index a80c5de..07a8ae5 100644
--- a/compiler/src/iree/compiler/Codegen/Dialect/GPU/TransformExtensions/test/lower_inner_tiled.mlir
+++ b/compiler/src/iree/compiler/Codegen/Dialect/GPU/TransformExtensions/test/lower_inner_tiled.mlir
@@ -132,11 +132,11 @@
 //  CHECK-SAME:   %[[LHS:[A-Za-z0-9]+]]: vector<8xf16>
 //  CHECK-SAME:   %[[RHS:[A-Za-z0-9]+]]: vector<8xf16>
 //  CHECK-SAME:   %[[ACC:[A-Za-z0-9]+]]: vector<4xf32>
-//  CHECK: %[[LHS0:.*]] = vector.extract_strided_slice %[[LHS]] {offsets = [0], sizes = [4], strides = [1]} : vector<8xf16> to vector<4xf16>
-//  CHECK: %[[RHS0:.*]] = vector.extract_strided_slice %[[RHS]] {offsets = [0], sizes = [4], strides = [1]} : vector<8xf16> to vector<4xf16>
+//  CHECK: %[[LHS0:.*]] = vector.extract_strided_slice %[[LHS]] offsets = [0], sizes = [4], strides = [1] : vector<8xf16> to vector<4xf16>
+//  CHECK: %[[RHS0:.*]] = vector.extract_strided_slice %[[RHS]] offsets = [0], sizes = [4], strides = [1] : vector<8xf16> to vector<4xf16>
 //  CHECK: %[[ACC0:.*]] = amdgpu.mfma 16x16x16 %[[RHS0]] * %[[LHS0]] + %[[ACC]]
-//  CHECK: %[[LHS1:.*]] = vector.extract_strided_slice %[[LHS]] {offsets = [4], sizes = [4], strides = [1]} : vector<8xf16> to vector<4xf16>
-//  CHECK: %[[RHS1:.*]] = vector.extract_strided_slice %[[RHS]] {offsets = [4], sizes = [4], strides = [1]} : vector<8xf16> to vector<4xf16>
+//  CHECK: %[[LHS1:.*]] = vector.extract_strided_slice %[[LHS]] offsets = [4], sizes = [4], strides = [1] : vector<8xf16> to vector<4xf16>
+//  CHECK: %[[RHS1:.*]] = vector.extract_strided_slice %[[RHS]] offsets = [4], sizes = [4], strides = [1] : vector<8xf16> to vector<4xf16>
 //  CHECK: %[[ACC1:.*]] = amdgpu.mfma 16x16x16 %[[RHS1]] * %[[LHS1]] + %[[ACC0]]
 //  CHECK: return %[[ACC1]] : vector<4xf32>
 
@@ -671,10 +671,10 @@
 //       CHECK:   %[[LOW_BIT:.+]] = arith.andi %[[LANE_ID]]
 //       CHECK:   %[[IS_ODD:.+]] = arith.cmpi ne, %[[LOW_BIT]]
 //       CHECK:   %[[SPARSE_IDX:.+]] = arith.select %[[IS_ODD]]
-//       CHECK:   %[[A_LO:.+]] = vector.extract_strided_slice %[[A]] {offsets = [0], sizes = [4], strides = [1]} : vector<8xf16> to vector<4xf16>
+//       CHECK:   %[[A_LO:.+]] = vector.extract_strided_slice %[[A]] offsets = [0], sizes = [4], strides = [1] : vector<8xf16> to vector<4xf16>
 //       CHECK:   %[[B_INTLV_0:.+]] = vector.shuffle %[[B]], %[[B]] [0, 1, 8, 9, 2, 3, 10, 11] : vector<16xf16>, vector<16xf16>
 //       CHECK:   %[[SMFMAC_0:.+]] = amdgpu.sparse_mfma 16x16x32 %[[A_LO]] * %[[B_INTLV_0]] + %[[ACC_EXPAND]] sparse(%[[SPARSE_IDX]]
-//       CHECK:   %[[A_HI:.+]] = vector.extract_strided_slice %[[A]] {offsets = [4], sizes = [4], strides = [1]} : vector<8xf16> to vector<4xf16>
+//       CHECK:   %[[A_HI:.+]] = vector.extract_strided_slice %[[A]] offsets = [4], sizes = [4], strides = [1] : vector<8xf16> to vector<4xf16>
 //       CHECK:   %[[B_INTLV_1:.+]] = vector.shuffle %[[B]], %[[B]] [4, 5, 12, 13, 6, 7, 14, 15] : vector<16xf16>, vector<16xf16>
 //       CHECK:   %[[SMFMAC_1:.+]] = amdgpu.sparse_mfma 16x16x32 %[[A_HI]] * %[[B_INTLV_1]] + %[[SMFMAC_0]] sparse(%[[SPARSE_IDX]]
 //       CHECK:   %[[ACC_COLLAPSE:.+]] = util.hoistable_conversion "vdmfma_deinterleave_acc" inverts("vdmfma_interleave_acc")
@@ -695,10 +695,10 @@
 //       CHECK:   %[[LOW_BIT:.+]] = arith.andi %[[LANE_ID]]
 //       CHECK:   %[[IS_ODD:.+]] = arith.cmpi ne, %[[LOW_BIT]]
 //       CHECK:   %[[SPARSE_IDX:.+]] = arith.select %[[IS_ODD]]
-//       CHECK:   %[[A_LO:.+]] = vector.extract_strided_slice %[[A]] {offsets = [0], sizes = [4], strides = [1]} : vector<8xbf16> to vector<4xbf16>
+//       CHECK:   %[[A_LO:.+]] = vector.extract_strided_slice %[[A]] offsets = [0], sizes = [4], strides = [1] : vector<8xbf16> to vector<4xbf16>
 //       CHECK:   %[[B_INTLV_0:.+]] = vector.shuffle %[[B]], %[[B]] [0, 1, 8, 9, 2, 3, 10, 11] : vector<16xbf16>, vector<16xbf16>
 //       CHECK:   %[[SMFMAC_0:.+]] = amdgpu.sparse_mfma 16x16x32 %[[A_LO]] * %[[B_INTLV_0]] + %[[ACC_EXPAND]] sparse(%[[SPARSE_IDX]]
-//       CHECK:   %[[A_HI:.+]] = vector.extract_strided_slice %[[A]] {offsets = [4], sizes = [4], strides = [1]} : vector<8xbf16> to vector<4xbf16>
+//       CHECK:   %[[A_HI:.+]] = vector.extract_strided_slice %[[A]] offsets = [4], sizes = [4], strides = [1] : vector<8xbf16> to vector<4xbf16>
 //       CHECK:   %[[B_INTLV_1:.+]] = vector.shuffle %[[B]], %[[B]] [4, 5, 12, 13, 6, 7, 14, 15] : vector<16xbf16>, vector<16xbf16>
 //       CHECK:   %[[SMFMAC_1:.+]] = amdgpu.sparse_mfma 16x16x32 %[[A_HI]] * %[[B_INTLV_1]] + %[[SMFMAC_0]] sparse(%[[SPARSE_IDX]]
 //       CHECK:   %[[ACC_COLLAPSE:.+]] = util.hoistable_conversion "vdmfma_deinterleave_acc" inverts("vdmfma_interleave_acc")
@@ -787,10 +787,10 @@
 //       CHECK:   %[[LOW_BIT:.+]] = arith.andi %[[LANE_ID]]
 //       CHECK:   %[[IS_ODD:.+]] = arith.cmpi ne, %[[LOW_BIT]]
 //       CHECK:   %[[SPARSE_IDX:.+]] = arith.select %[[IS_ODD]]
-//       CHECK:   %[[A_LO:.+]] = vector.extract_strided_slice %[[A]] {offsets = [0], sizes = [8], strides = [1]} : vector<16xi8> to vector<8xi8>
+//       CHECK:   %[[A_LO:.+]] = vector.extract_strided_slice %[[A]] offsets = [0], sizes = [8], strides = [1] : vector<16xi8> to vector<8xi8>
 //       CHECK:   %[[B_INTLV_0:.+]] = vector.shuffle %[[B]], %[[B]] [0, 1, 16, 17, 2, 3, 18, 19, 4, 5, 20, 21, 6, 7, 22, 23] : vector<32xi8>, vector<32xi8>
 //       CHECK:   %[[SMFMAC_0:.+]] = amdgpu.sparse_mfma 16x16x64 %[[A_LO]] * %[[B_INTLV_0]] + %[[ACC_EXPAND]] sparse(%[[SPARSE_IDX]]
-//       CHECK:   %[[A_HI:.+]] = vector.extract_strided_slice %[[A]] {offsets = [8], sizes = [8], strides = [1]} : vector<16xi8> to vector<8xi8>
+//       CHECK:   %[[A_HI:.+]] = vector.extract_strided_slice %[[A]] offsets = [8], sizes = [8], strides = [1] : vector<16xi8> to vector<8xi8>
 //       CHECK:   %[[B_INTLV_1:.+]] = vector.shuffle %[[B]], %[[B]] [8, 9, 24, 25, 10, 11, 26, 27, 12, 13, 28, 29, 14, 15, 30, 31] : vector<32xi8>, vector<32xi8>
 //       CHECK:   %[[SMFMAC_1:.+]] = amdgpu.sparse_mfma 16x16x64 %[[A_HI]] * %[[B_INTLV_1]] + %[[SMFMAC_0]] sparse(%[[SPARSE_IDX]]
 //       CHECK:   %[[ACC_COLLAPSE:.+]] = util.hoistable_conversion "vdmfma_deinterleave_acc" inverts("vdmfma_interleave_acc")
@@ -811,10 +811,10 @@
 //       CHECK:   %[[LOW_BIT:.+]] = arith.andi %[[LANE_ID]]
 //       CHECK:   %[[IS_ODD:.+]] = arith.cmpi ne, %[[LOW_BIT]]
 //       CHECK:   %[[SPARSE_IDX:.+]] = arith.select %[[IS_ODD]]
-//       CHECK:   %[[A_LO:.+]] = vector.extract_strided_slice %[[A]] {offsets = [0], sizes = [8], strides = [1]} : vector<16xf8E5M2FNUZ> to vector<8xf8E5M2FNUZ>
+//       CHECK:   %[[A_LO:.+]] = vector.extract_strided_slice %[[A]] offsets = [0], sizes = [8], strides = [1] : vector<16xf8E5M2FNUZ> to vector<8xf8E5M2FNUZ>
 //       CHECK:   %[[B_INTLV_0:.+]] = vector.shuffle %[[B]], %[[B]] [0, 1, 16, 17, 2, 3, 18, 19, 4, 5, 20, 21, 6, 7, 22, 23] : vector<32xf8E5M2FNUZ>, vector<32xf8E5M2FNUZ>
 //       CHECK:   %[[SMFMAC_0:.+]] = amdgpu.sparse_mfma 16x16x64 %[[A_LO]] * %[[B_INTLV_0]] + %[[ACC_EXPAND]] sparse(%[[SPARSE_IDX]]
-//       CHECK:   %[[A_HI:.+]] = vector.extract_strided_slice %[[A]] {offsets = [8], sizes = [8], strides = [1]} : vector<16xf8E5M2FNUZ> to vector<8xf8E5M2FNUZ>
+//       CHECK:   %[[A_HI:.+]] = vector.extract_strided_slice %[[A]] offsets = [8], sizes = [8], strides = [1] : vector<16xf8E5M2FNUZ> to vector<8xf8E5M2FNUZ>
 //       CHECK:   %[[B_INTLV_1:.+]] = vector.shuffle %[[B]], %[[B]] [8, 9, 24, 25, 10, 11, 26, 27, 12, 13, 28, 29, 14, 15, 30, 31] : vector<32xf8E5M2FNUZ>, vector<32xf8E5M2FNUZ>
 //       CHECK:   %[[SMFMAC_1:.+]] = amdgpu.sparse_mfma 16x16x64 %[[A_HI]] * %[[B_INTLV_1]] + %[[SMFMAC_0]] sparse(%[[SPARSE_IDX]]
 //       CHECK:   %[[ACC_COLLAPSE:.+]] = util.hoistable_conversion "vdmfma_deinterleave_acc" inverts("vdmfma_interleave_acc")
@@ -835,10 +835,10 @@
 //       CHECK:   %[[LOW_BIT:.+]] = arith.andi %[[LANE_ID]]
 //       CHECK:   %[[IS_ODD:.+]] = arith.cmpi ne, %[[LOW_BIT]]
 //       CHECK:   %[[SPARSE_IDX:.+]] = arith.select %[[IS_ODD]]
-//       CHECK:   %[[A_LO:.+]] = vector.extract_strided_slice %[[A]] {offsets = [0], sizes = [8], strides = [1]} : vector<16xf8E5M2FNUZ> to vector<8xf8E5M2FNUZ>
+//       CHECK:   %[[A_LO:.+]] = vector.extract_strided_slice %[[A]] offsets = [0], sizes = [8], strides = [1] : vector<16xf8E5M2FNUZ> to vector<8xf8E5M2FNUZ>
 //       CHECK:   %[[B_INTLV_0:.+]] = vector.shuffle %[[B]], %[[B]] [0, 1, 16, 17, 2, 3, 18, 19, 4, 5, 20, 21, 6, 7, 22, 23] : vector<32xf8E4M3FNUZ>, vector<32xf8E4M3FNUZ>
 //       CHECK:   %[[SMFMAC_0:.+]] = amdgpu.sparse_mfma 16x16x64 %[[A_LO]] * %[[B_INTLV_0]] + %[[ACC_EXPAND]] sparse(%[[SPARSE_IDX]]
-//       CHECK:   %[[A_HI:.+]] = vector.extract_strided_slice %[[A]] {offsets = [8], sizes = [8], strides = [1]} : vector<16xf8E5M2FNUZ> to vector<8xf8E5M2FNUZ>
+//       CHECK:   %[[A_HI:.+]] = vector.extract_strided_slice %[[A]] offsets = [8], sizes = [8], strides = [1] : vector<16xf8E5M2FNUZ> to vector<8xf8E5M2FNUZ>
 //       CHECK:   %[[B_INTLV_1:.+]] = vector.shuffle %[[B]], %[[B]] [8, 9, 24, 25, 10, 11, 26, 27, 12, 13, 28, 29, 14, 15, 30, 31] : vector<32xf8E4M3FNUZ>, vector<32xf8E4M3FNUZ>
 //       CHECK:   %[[SMFMAC_1:.+]] = amdgpu.sparse_mfma 16x16x64 %[[A_HI]] * %[[B_INTLV_1]] + %[[SMFMAC_0]] sparse(%[[SPARSE_IDX]]
 //       CHECK:   %[[ACC_COLLAPSE:.+]] = util.hoistable_conversion "vdmfma_deinterleave_acc" inverts("vdmfma_interleave_acc")
@@ -859,10 +859,10 @@
 //       CHECK:   %[[LOW_BIT:.+]] = arith.andi %[[LANE_ID]]
 //       CHECK:   %[[IS_ODD:.+]] = arith.cmpi ne, %[[LOW_BIT]]
 //       CHECK:   %[[SPARSE_IDX:.+]] = arith.select %[[IS_ODD]]
-//       CHECK:   %[[A_LO:.+]] = vector.extract_strided_slice %[[A]] {offsets = [0], sizes = [8], strides = [1]} : vector<16xf8E4M3FNUZ> to vector<8xf8E4M3FNUZ>
+//       CHECK:   %[[A_LO:.+]] = vector.extract_strided_slice %[[A]] offsets = [0], sizes = [8], strides = [1] : vector<16xf8E4M3FNUZ> to vector<8xf8E4M3FNUZ>
 //       CHECK:   %[[B_INTLV_0:.+]] = vector.shuffle %[[B]], %[[B]] [0, 1, 16, 17, 2, 3, 18, 19, 4, 5, 20, 21, 6, 7, 22, 23] : vector<32xf8E5M2FNUZ>, vector<32xf8E5M2FNUZ>
 //       CHECK:   %[[SMFMAC_0:.+]] = amdgpu.sparse_mfma 16x16x64 %[[A_LO]] * %[[B_INTLV_0]] + %[[ACC_EXPAND]] sparse(%[[SPARSE_IDX]]
-//       CHECK:   %[[A_HI:.+]] = vector.extract_strided_slice %[[A]] {offsets = [8], sizes = [8], strides = [1]} : vector<16xf8E4M3FNUZ> to vector<8xf8E4M3FNUZ>
+//       CHECK:   %[[A_HI:.+]] = vector.extract_strided_slice %[[A]] offsets = [8], sizes = [8], strides = [1] : vector<16xf8E4M3FNUZ> to vector<8xf8E4M3FNUZ>
 //       CHECK:   %[[B_INTLV_1:.+]] = vector.shuffle %[[B]], %[[B]] [8, 9, 24, 25, 10, 11, 26, 27, 12, 13, 28, 29, 14, 15, 30, 31] : vector<32xf8E5M2FNUZ>, vector<32xf8E5M2FNUZ>
 //       CHECK:   %[[SMFMAC_1:.+]] = amdgpu.sparse_mfma 16x16x64 %[[A_HI]] * %[[B_INTLV_1]] + %[[SMFMAC_0]] sparse(%[[SPARSE_IDX]]
 //       CHECK:   %[[ACC_COLLAPSE:.+]] = util.hoistable_conversion "vdmfma_deinterleave_acc" inverts("vdmfma_interleave_acc")
@@ -883,10 +883,10 @@
 //       CHECK:   %[[LOW_BIT:.+]] = arith.andi %[[LANE_ID]]
 //       CHECK:   %[[IS_ODD:.+]] = arith.cmpi ne, %[[LOW_BIT]]
 //       CHECK:   %[[SPARSE_IDX:.+]] = arith.select %[[IS_ODD]]
-//       CHECK:   %[[A_LO:.+]] = vector.extract_strided_slice %[[A]] {offsets = [0], sizes = [8], strides = [1]} : vector<16xf8E4M3FNUZ> to vector<8xf8E4M3FNUZ>
+//       CHECK:   %[[A_LO:.+]] = vector.extract_strided_slice %[[A]] offsets = [0], sizes = [8], strides = [1] : vector<16xf8E4M3FNUZ> to vector<8xf8E4M3FNUZ>
 //       CHECK:   %[[B_INTLV_0:.+]] = vector.shuffle %[[B]], %[[B]] [0, 1, 16, 17, 2, 3, 18, 19, 4, 5, 20, 21, 6, 7, 22, 23] : vector<32xf8E4M3FNUZ>, vector<32xf8E4M3FNUZ>
 //       CHECK:   %[[SMFMAC_0:.+]] = amdgpu.sparse_mfma 16x16x64 %[[A_LO]] * %[[B_INTLV_0]] + %[[ACC_EXPAND]] sparse(%[[SPARSE_IDX]]
-//       CHECK:   %[[A_HI:.+]] = vector.extract_strided_slice %[[A]] {offsets = [8], sizes = [8], strides = [1]} : vector<16xf8E4M3FNUZ> to vector<8xf8E4M3FNUZ>
+//       CHECK:   %[[A_HI:.+]] = vector.extract_strided_slice %[[A]] offsets = [8], sizes = [8], strides = [1] : vector<16xf8E4M3FNUZ> to vector<8xf8E4M3FNUZ>
 //       CHECK:   %[[B_INTLV_1:.+]] = vector.shuffle %[[B]], %[[B]] [8, 9, 24, 25, 10, 11, 26, 27, 12, 13, 28, 29, 14, 15, 30, 31] : vector<32xf8E4M3FNUZ>, vector<32xf8E4M3FNUZ>
 //       CHECK:   %[[SMFMAC_1:.+]] = amdgpu.sparse_mfma 16x16x64 %[[A_HI]] * %[[B_INTLV_1]] + %[[SMFMAC_0]] sparse(%[[SPARSE_IDX]]
 //       CHECK:   %[[ACC_COLLAPSE:.+]] = util.hoistable_conversion "vdmfma_deinterleave_acc" inverts("vdmfma_interleave_acc")
diff --git a/compiler/src/iree/compiler/Codegen/Dialect/GPU/TransformExtensions/test/unroll_multi_mma.mlir b/compiler/src/iree/compiler/Codegen/Dialect/GPU/TransformExtensions/test/unroll_multi_mma.mlir
index f8ca1d1..c104cba 100644
--- a/compiler/src/iree/compiler/Codegen/Dialect/GPU/TransformExtensions/test/unroll_multi_mma.mlir
+++ b/compiler/src/iree/compiler/Codegen/Dialect/GPU/TransformExtensions/test/unroll_multi_mma.mlir
@@ -32,39 +32,39 @@
 
 //       CHECK:   %[[ACC_DIST:.+]]:4 = util.hoistable_conversion "unroll_acc_distribute" inverts("unroll_acc_reassemble")
 //  CHECK-SAME:     (%[[ACC_B:.+]] = %[[ACC]])
-//       CHECK:     vector.extract_strided_slice %[[ACC_B]] {offsets = [0, 0]
-//       CHECK:     vector.extract_strided_slice %[[ACC_B]] {offsets = [0, 1]
-//       CHECK:     vector.extract_strided_slice %[[ACC_B]] {offsets = [1, 0]
-//       CHECK:     vector.extract_strided_slice %[[ACC_B]] {offsets = [1, 1]
-//       CHECK:   vector.extract_strided_slice %[[LHS]] {offsets = [0, 0]
-//       CHECK:   vector.extract_strided_slice %[[RHS]] {offsets = [0, 0]
+//       CHECK:     vector.extract_strided_slice %[[ACC_B]] offsets = [0, 0]
+//       CHECK:     vector.extract_strided_slice %[[ACC_B]] offsets = [0, 1]
+//       CHECK:     vector.extract_strided_slice %[[ACC_B]] offsets = [1, 0]
+//       CHECK:     vector.extract_strided_slice %[[ACC_B]] offsets = [1, 1]
+//       CHECK:   vector.extract_strided_slice %[[LHS]] offsets = [0, 0]
+//       CHECK:   vector.extract_strided_slice %[[RHS]] offsets = [0, 0]
 //       CHECK:   %[[MMA0_K0:.+]] = iree_codegen.inner_tiled ins(%{{.*}}, %{{.*}}) outs(%[[ACC_DIST]]#0)
-//       CHECK:   vector.extract_strided_slice %[[LHS]] {offsets = [0, 0]
-//       CHECK:   vector.extract_strided_slice %[[RHS]] {offsets = [0, 1]
+//       CHECK:   vector.extract_strided_slice %[[LHS]] offsets = [0, 0]
+//       CHECK:   vector.extract_strided_slice %[[RHS]] offsets = [0, 1]
 //       CHECK:   %[[MMA1_K0:.+]] = iree_codegen.inner_tiled ins(%{{.*}}, %{{.*}}) outs(%[[ACC_DIST]]#1)
-//       CHECK:   vector.extract_strided_slice %[[LHS]] {offsets = [1, 0]
-//       CHECK:   vector.extract_strided_slice %[[RHS]] {offsets = [0, 0]
+//       CHECK:   vector.extract_strided_slice %[[LHS]] offsets = [1, 0]
+//       CHECK:   vector.extract_strided_slice %[[RHS]] offsets = [0, 0]
 //       CHECK:   %[[MMA2_K0:.+]] = iree_codegen.inner_tiled ins(%{{.*}}, %{{.*}}) outs(%[[ACC_DIST]]#2)
-//       CHECK:   vector.extract_strided_slice %[[LHS]] {offsets = [1, 0]
-//       CHECK:   vector.extract_strided_slice %[[RHS]] {offsets = [0, 1]
+//       CHECK:   vector.extract_strided_slice %[[LHS]] offsets = [1, 0]
+//       CHECK:   vector.extract_strided_slice %[[RHS]] offsets = [0, 1]
 //       CHECK:   %[[MMA3_K0:.+]] = iree_codegen.inner_tiled ins(%{{.*}}, %{{.*}}) outs(%[[ACC_DIST]]#3)
-//       CHECK:   vector.extract_strided_slice %[[LHS]] {offsets = [0, 1]
-//       CHECK:   vector.extract_strided_slice %[[RHS]] {offsets = [1, 0]
+//       CHECK:   vector.extract_strided_slice %[[LHS]] offsets = [0, 1]
+//       CHECK:   vector.extract_strided_slice %[[RHS]] offsets = [1, 0]
 //       CHECK:   %[[MMA0:.+]] = iree_codegen.inner_tiled ins(%{{.*}}, %{{.*}}) outs(%[[MMA0_K0]])
-//       CHECK:   vector.extract_strided_slice %[[LHS]] {offsets = [0, 1]
-//       CHECK:   vector.extract_strided_slice %[[RHS]] {offsets = [1, 1]
+//       CHECK:   vector.extract_strided_slice %[[LHS]] offsets = [0, 1]
+//       CHECK:   vector.extract_strided_slice %[[RHS]] offsets = [1, 1]
 //       CHECK:   %[[MMA1:.+]] = iree_codegen.inner_tiled ins(%{{.*}}, %{{.*}}) outs(%[[MMA1_K0]])
-//       CHECK:   vector.extract_strided_slice %[[LHS]] {offsets = [1, 1]
-//       CHECK:   vector.extract_strided_slice %[[RHS]] {offsets = [1, 0]
+//       CHECK:   vector.extract_strided_slice %[[LHS]] offsets = [1, 1]
+//       CHECK:   vector.extract_strided_slice %[[RHS]] offsets = [1, 0]
 //       CHECK:   %[[MMA2:.+]] = iree_codegen.inner_tiled ins(%{{.*}}, %{{.*}}) outs(%[[MMA2_K0]])
-//       CHECK:   vector.extract_strided_slice %[[LHS]] {offsets = [1, 1]
-//       CHECK:   vector.extract_strided_slice %[[RHS]] {offsets = [1, 1]
+//       CHECK:   vector.extract_strided_slice %[[LHS]] offsets = [1, 1]
+//       CHECK:   vector.extract_strided_slice %[[RHS]] offsets = [1, 1]
 //       CHECK:   %[[MMA3:.+]] = iree_codegen.inner_tiled ins(%{{.*}}, %{{.*}}) outs(%[[MMA3_K0]])
 //       CHECK:   %[[RES:.+]] = util.hoistable_conversion "unroll_acc_reassemble" inverts("unroll_acc_distribute")
-//       CHECK:     vector.insert_strided_slice %{{.+}}, %{{.+}} {offsets = [0, 0, 0]
-//       CHECK:     vector.insert_strided_slice %{{.+}}, %{{.+}} {offsets = [0, 1, 0]
-//       CHECK:     vector.insert_strided_slice %{{.+}}, %{{.+}} {offsets = [1, 0, 0]
-//       CHECK:     vector.insert_strided_slice %{{.+}}, %{{.+}} {offsets = [1, 1, 0]
+//       CHECK:     vector.insert_strided_slice %{{.+}}, %{{.+}} offsets = [0, 0, 0]
+//       CHECK:     vector.insert_strided_slice %{{.+}}, %{{.+}} offsets = [0, 1, 0]
+//       CHECK:     vector.insert_strided_slice %{{.+}}, %{{.+}} offsets = [1, 0, 0]
+//       CHECK:     vector.insert_strided_slice %{{.+}}, %{{.+}} offsets = [1, 1, 0]
 //       CHECK:   return %[[RES]]
 
 // -----
@@ -133,7 +133,7 @@
 
 // CHECK-LABEL: func @unroll_scaled_multi_mma
 //  CHECK-SAME:   %[[LHS_SCALE:[A-Za-z0-9]+]]: vector<1x2x1xf8E8M0FNU>
-// CHECK-COUNT-2: vector.extract_strided_slice %[[LHS_SCALE]] {offsets = [0, 0]
-// CHECK-NOT: vector.extract_strided_slice %[[LHS_SCALE]] {offsets = [0, 0]
-// CHECK-COUNT-2: vector.extract_strided_slice %[[LHS_SCALE]] {offsets = [0, 1]
+// CHECK-COUNT-2: vector.extract_strided_slice %[[LHS_SCALE]] offsets = [0, 0]
+// CHECK-NOT: vector.extract_strided_slice %[[LHS_SCALE]] offsets = [0, 0]
+// CHECK-COUNT-2: vector.extract_strided_slice %[[LHS_SCALE]] offsets = [0, 1]
 // CHECK-NOT: vector.extract_strided_slice %[[LHS_SCALE]]
diff --git a/compiler/src/iree/compiler/Codegen/Dialect/PCF/ExternalInterfaces/test/bufferize.mlir b/compiler/src/iree/compiler/Codegen/Dialect/PCF/ExternalInterfaces/test/bufferize.mlir
index 708d962..1ba7b65 100644
--- a/compiler/src/iree/compiler/Codegen/Dialect/PCF/ExternalInterfaces/test/bufferize.mlir
+++ b/compiler/src/iree/compiler/Codegen/Dialect/PCF/ExternalInterfaces/test/bufferize.mlir
@@ -19,8 +19,8 @@
 //  CHECK-SAME:   %[[D2:[A-Za-z0-9]+]]: index
 //  CHECK-SAME:   %[[D3:[A-Za-z0-9]+]]: index
 
-//   CHECK-DAG:   %[[ALLOC:.+]] = memref.alloc(%[[D0]]) {alignment = 64 : i64} : memref<?xi32>
-//   CHECK-DAG:   %[[ALLOC1:.+]] = memref.alloc(%[[D3]]) {alignment = 64 : i64} : memref<?xi32, "foo">
+//   CHECK-DAG:   %[[ALLOC:.+]] = memref.alloc(%[[D0]]) alignment = 64 : memref<?xi32>
+//   CHECK-DAG:   %[[ALLOC1:.+]] = memref.alloc(%[[D3]]) alignment = 64 : memref<?xi32, "foo">
 //       CHECK:   pcf.generic scope(#pcf.test_scope)
 //  CHECK-NEXT:     execute(%[[REF:[A-Za-z0-9_]+]] = %[[ALLOC]],
 //  CHECK-SAME:             %[[REF1:[A-Za-z0-9_]+]],
@@ -74,7 +74,7 @@
 //  CHECK-SAME:   %[[D2:[A-Za-z0-9]+]]: index
 //  CHECK-SAME:   %[[INIT1:[A-Za-z0-9]+]]: memref<?xi32, "foo">
 
-//       CHECK:   %[[ALLOC:.+]] = memref.alloc(%[[D0]]) {alignment = 64 : i64} : memref<?xi32>
+//       CHECK:   %[[ALLOC:.+]] = memref.alloc(%[[D0]]) alignment = 64 : memref<?xi32>
 //       CHECK:   pcf.generic scope(#pcf.test_scope)
 //  CHECK-NEXT:     execute(%[[REF:[A-Za-z0-9_]+]] = %[[ALLOC]],
 //  CHECK-SAME:             %[[REF1:[A-Za-z0-9_]+]],
@@ -110,8 +110,8 @@
 //  CHECK-SAME:   %[[D2:[A-Za-z0-9]+]]: index
 //  CHECK-SAME:   %[[D3:[A-Za-z0-9]+]]: index
 
-//   CHECK-DAG:   %[[ALLOC:.+]] = memref.alloc(%[[D0]]) {alignment = 64 : i64} : memref<?xi32>
-//   CHECK-DAG:   %[[ALLOC1:.+]] = memref.alloc(%[[D3]]) {alignment = 64 : i64} : memref<?xi32, "foo">
+//   CHECK-DAG:   %[[ALLOC:.+]] = memref.alloc(%[[D0]]) alignment = 64 : memref<?xi32>
+//   CHECK-DAG:   %[[ALLOC1:.+]] = memref.alloc(%[[D3]]) alignment = 64 : memref<?xi32, "foo">
 //       CHECK:   pcf.loop scope(#pcf.test_scope) count
 //  CHECK-NEXT:     execute(%[[REF:[A-Za-z0-9_]+]] = %[[ALLOC]],
 //  CHECK-SAME:             %[[REF1:[A-Za-z0-9_]+]],
@@ -146,7 +146,7 @@
 //  CHECK-SAME:   %[[D2:[A-Za-z0-9]+]]: index
 //  CHECK-SAME:   %[[INIT1:[A-Za-z0-9]+]]: memref<?xi32, "foo">
 
-//       CHECK:   %[[ALLOC:.+]] = memref.alloc(%[[D0]]) {alignment = 64 : i64} : memref<?xi32>
+//       CHECK:   %[[ALLOC:.+]] = memref.alloc(%[[D0]]) alignment = 64 : memref<?xi32>
 //       CHECK:   pcf.loop sync true scope(#pcf.test_scope) count
 //  CHECK-NEXT:     execute(%[[REF:[A-Za-z0-9_]+]] = %[[ALLOC]],
 //  CHECK-SAME:             %[[REF1:[A-Za-z0-9_]+]],
@@ -171,7 +171,7 @@
 
 // CHECK-LABEL: @write_tensor
 //  CHECK-SAME:   %[[DST:[A-Za-z0-9]+]]: !pcf.sref<?xi32, #pcf.test_scope>
-//       CHECK:   %[[SRC:.+]] = memref.alloc() {alignment = 64 : i64} : memref<2xi32>
+//       CHECK:   %[[SRC:.+]] = memref.alloc() alignment = 64 : memref<2xi32>
 //  CHECK-NEXT:   pcf.write_slice %[[SRC]] into %[[DST]][1] [2] [1] : memref<2xi32> into !pcf.sref<?xi32, #pcf.test_scope>
 
 // -----
@@ -237,7 +237,7 @@
 // CHECK-LABEL: @bufferize_generic_with_initializer(
 //  CHECK-SAME:   %[[D0:[A-Za-z0-9]+]]: index
 //  CHECK-SAME:   %[[D1:[A-Za-z0-9]+]]: index
-//       CHECK:   %[[ALLOC:.+]] = memref.alloc(%[[D0]], %[[D1]]) {alignment = 64 : i64} : memref<?x?xf32>
+//       CHECK:   %[[ALLOC:.+]] = memref.alloc(%[[D0]], %[[D1]]) alignment = 64 : memref<?x?xf32>
 //       CHECK:   pcf.generic scope(#pcf.test_scope) initialize {
 //  CHECK-NEXT:       %[[C42:.+]] = arith.constant 42
 //  CHECK-NEXT:       pcf.yield %[[C42]]
@@ -268,7 +268,7 @@
 // CHECK-LABEL: @bufferize_loop_tied_result_users(
 //  CHECK-SAME:   %[[D0:[A-Za-z0-9]+]]: index
 //  CHECK-SAME:   %[[N:[A-Za-z0-9]+]]: index
-//       CHECK:   %[[INIT:.+]] = memref.alloc() {alignment = 64 : i64} : memref<4xi32>
+//       CHECK:   %[[INIT:.+]] = memref.alloc() alignment = 64 : memref<4xi32>
 //       CHECK:   %[[LOOP:.+]]:2 = pcf.loop scope(#pcf.test_scope) count(%[[N]])
 //  CHECK-NEXT:     execute(%{{.*}} = %[[INIT]], %{{.*}})[%{{.*}}: index]
 //  CHECK-NEXT:          : (!pcf.sref<4xi32, #pcf.test_scope>,
diff --git a/compiler/src/iree/compiler/Codegen/Dialect/PCF/Transforms/test/convert_sref_to_memref.mlir b/compiler/src/iree/compiler/Codegen/Dialect/PCF/Transforms/test/convert_sref_to_memref.mlir
index d1a9bdd..d6366b2 100644
--- a/compiler/src/iree/compiler/Codegen/Dialect/PCF/Transforms/test/convert_sref_to_memref.mlir
+++ b/compiler/src/iree/compiler/Codegen/Dialect/PCF/Transforms/test/convert_sref_to_memref.mlir
@@ -38,8 +38,8 @@
 //  CHECK-SAME:     %[[ARG0:[A-Za-z0-9_]+]]: index
 //  CHECK-SAME:     %[[ARG1:[A-Za-z0-9_]+]]: index
 //  CHECK-SAME:     %[[ARG2:[A-Za-z0-9_]+]]: index
-//  CHECK-DAG:    %[[ALLOC:.+]] = memref.alloc(%[[ARG0]]) {alignment = 16 : i64} : memref<?xi32>
-//  CHECK-DAG:    %[[ALLOC1:.+]] = memref.alloc(%[[ARG1]], %[[ARG2]]) {alignment = 16 : i64} : memref<?x?xi32>
+//  CHECK-DAG:    %[[ALLOC:.+]] = memref.alloc(%[[ARG0]]) alignment = 16 : memref<?xi32>
+//  CHECK-DAG:    %[[ALLOC1:.+]] = memref.alloc(%[[ARG1]], %[[ARG2]]) alignment = 16 : memref<?x?xi32>
 //       CHECK:   pcf.generic scope(#pcf.test_scope)
 //  CHECK-NEXT:     execute[{{.*}}] {
 //  CHECK-NEXT:     util.optimization_barrier %[[ALLOC]], %[[ALLOC1]]
@@ -91,7 +91,7 @@
 //       CHECK:   pcf.generic scope(#pcf.sequential)
 //  CHECK-NEXT:     execute[{{.*}}] {
 //  CHECK-NEXT:     %[[I:.+]] = arith.constant 42 : index
-//  CHECK-NEXT:     %[[ALLOC:.+]] = memref.alloc(%[[I]]) {alignment = 16 : i64} : memref<?x5xi32>
+//  CHECK-NEXT:     %[[ALLOC:.+]] = memref.alloc(%[[I]]) alignment = 16 : memref<?x5xi32>
 //  CHECK-NEXT:     util.optimization_barrier %[[I]], %[[ALLOC]]
 //  CHECK-NEXT:     pcf.return
 
@@ -135,8 +135,8 @@
 //  CHECK-SAME:     %[[ARG0:[A-Za-z0-9_]+]]: index
 //  CHECK-SAME:     %[[ARG1:[A-Za-z0-9_]+]]: index
 //  CHECK-SAME:     %[[ARG2:[A-Za-z0-9_]+]]: index
-//  CHECK-DAG:    %[[ALLOC:.+]] = memref.alloc(%[[ARG0]]) {alignment = 16 : i64} : memref<?xi32>
-//  CHECK-DAG:    %[[ALLOC1:.+]] = memref.alloc(%[[ARG1]], %[[ARG2]]) {alignment = 16 : i64} : memref<?x?xi32>
+//  CHECK-DAG:    %[[ALLOC:.+]] = memref.alloc(%[[ARG0]]) alignment = 16 : memref<?xi32>
+//  CHECK-DAG:    %[[ALLOC1:.+]] = memref.alloc(%[[ARG1]], %[[ARG2]]) alignment = 16 : memref<?x?xi32>
 //       CHECK:   pcf.loop scope(#pcf.test_scope)
 //  CHECK-NEXT:     execute[{{.*}}] {
 //  CHECK-NEXT:     util.optimization_barrier %[[ALLOC]], %[[ALLOC1]]
@@ -286,7 +286,7 @@
 
 // CHECK-LABEL: @convert_alloc
 //  CHECK-SAME:   %[[D0:[A-Za-z0-9]+]]: index
-//       CHECK:   %[[ALLOC:.+]] = memref.alloc(%[[D0]]) {alignment = 16 : i64} : memref<?x5xi32>
+//       CHECK:   %[[ALLOC:.+]] = memref.alloc(%[[D0]]) alignment = 16 : memref<?x5xi32>
 //       CHECK:   return %[[ALLOC]] : memref<?x5xi32>
 
 // -----
@@ -413,7 +413,7 @@
 // CHECK-LABEL: @convert_tensor_read_slice_no_tied_init
 //  CHECK-SAME:     %[[DIM0:[A-Za-z0-9_]+]]: index
 //  CHECK-SAME:     %[[DIM1:[A-Za-z0-9_]+]]: index
-//   CHECK-DAG:     %[[ALLOC:.+]] = memref.alloc(%[[DIM0]], %[[DIM1]]) {alignment = 16 : i64} : memref<?x?xi32>
+//   CHECK-DAG:     %[[ALLOC:.+]] = memref.alloc(%[[DIM0]], %[[DIM1]]) alignment = 16 : memref<?x?xi32>
 //       CHECK:   pcf.generic
 //  CHECK-NEXT:     execute[{{.*}}] {
 //   CHECK-DAG:     %[[SV:.+]] = memref.subview %[[ALLOC]][1, 2] [3, 4] [1, 1] : memref<?x?xi32> to memref<3x4xi32, strided<[?, 1], offset: ?>>
diff --git a/compiler/src/iree/compiler/Codegen/Dialect/VectorExt/Transforms/test/lower_transfer_gather_scatter_to_vector.mlir b/compiler/src/iree/compiler/Codegen/Dialect/VectorExt/Transforms/test/lower_transfer_gather_scatter_to_vector.mlir
index ae80017..1d62fa0 100644
--- a/compiler/src/iree/compiler/Codegen/Dialect/VectorExt/Transforms/test/lower_transfer_gather_scatter_to_vector.mlir
+++ b/compiler/src/iree/compiler/Codegen/Dialect/VectorExt/Transforms/test/lower_transfer_gather_scatter_to_vector.mlir
@@ -14,10 +14,10 @@
     %4 = vector.step : vector<16xindex>
     %5 = arith.muli %4, %cst : vector<16xindex>
     %6 = iree_vector_ext.transfer_gather %arg0[%c0, %c0, %c0] [%5 : vector<16xindex>], %cst_0 {indexing_maps = [#map, #map1]} : tensor<1x1x31xf32>, vector<16xf32>
-    %7 = vector.insert_strided_slice %6, %0 {offsets = [0, 0], strides = [1]} : vector<16xf32> into vector<1x16xf32>
-    %8 = vector.insert_strided_slice %7, %1 {offsets = [0, 0, 0], strides = [1, 1]} : vector<1x16xf32> into vector<1x1x16xf32>
-    %9 = vector.insert_strided_slice %8, %2 {offsets = [0, 0, 0, 0], strides = [1, 1, 1]} : vector<1x1x16xf32> into vector<1x1x1x16xf32>
-    %10 = vector.insert_strided_slice %9, %3 {offsets = [0, 0, 0, 0, 0], strides = [1, 1, 1, 1]} : vector<1x1x1x16xf32> into vector<1x1x1x1x16xf32>
+    %7 = vector.insert_strided_slice %6, %0 offsets = [0, 0], strides = [1] : vector<16xf32> into vector<1x16xf32>
+    %8 = vector.insert_strided_slice %7, %1 offsets = [0, 0, 0], strides = [1, 1] : vector<1x16xf32> into vector<1x1x16xf32>
+    %9 = vector.insert_strided_slice %8, %2 offsets = [0, 0, 0, 0], strides = [1, 1, 1] : vector<1x1x16xf32> into vector<1x1x1x16xf32>
+    %10 = vector.insert_strided_slice %9, %3 offsets = [0, 0, 0, 0, 0], strides = [1, 1, 1, 1] : vector<1x1x1x16xf32> into vector<1x1x1x1x16xf32>
     %11 = vector.transfer_write %10, %arg1[%c0, %c0, %c0, %c0, %c0] {in_bounds = [true, true, true, true, true]} : vector<1x1x1x1x16xf32>, tensor<1x1x1x1x16xf32>
     return %11 : tensor<1x1x1x1x16xf32>
   }
diff --git a/compiler/src/iree/compiler/Codegen/LLVMCPU/test/aarch64_dotprod_vector_lowering.mlir b/compiler/src/iree/compiler/Codegen/LLVMCPU/test/aarch64_dotprod_vector_lowering.mlir
index 732b2e6..c1dea25 100644
--- a/compiler/src/iree/compiler/Codegen/LLVMCPU/test/aarch64_dotprod_vector_lowering.mlir
+++ b/compiler/src/iree/compiler/Codegen/LLVMCPU/test/aarch64_dotprod_vector_lowering.mlir
@@ -24,10 +24,10 @@
 // CHECK-LABEL:  @mmt4d_kernel_dispatch(
 // CHECK:        %[[LHS_FLAT32:.+]] = vector.transfer_read {{.*}} : memref<1x2x32xi8>, vector<32xi8>
 // CHECK:        %[[RHS_FLAT32:.+]] = vector.transfer_read {{.*}} : memref<1x2x32xi8>, vector<32xi8>
-// CHECK:        %[[LHS_FLAT16_0:.+]] = vector.extract_strided_slice %[[LHS_FLAT32]] {offsets = [0], sizes = [16], strides = [1]} : vector<32xi8> to vector<16xi8>
-// CHECK:        %[[LHS_FLAT16_1:.+]] = vector.extract_strided_slice %[[LHS_FLAT32]] {offsets = [16], sizes = [16], strides = [1]} : vector<32xi8> to vector<16xi8>
-// CHECK:        %[[RHS_FLAT16_0:.+]] = vector.extract_strided_slice %[[RHS_FLAT32]] {offsets = [0], sizes = [16], strides = [1]} : vector<32xi8> to vector<16xi8>
-// CHECK:        %[[RHS_FLAT16_1:.+]] = vector.extract_strided_slice %[[RHS_FLAT32]] {offsets = [16], sizes = [16], strides = [1]} : vector<32xi8> to vector<16xi8>
+// CHECK:        %[[LHS_FLAT16_0:.+]] = vector.extract_strided_slice %[[LHS_FLAT32]] offsets = [0], sizes = [16], strides = [1] : vector<32xi8> to vector<16xi8>
+// CHECK:        %[[LHS_FLAT16_1:.+]] = vector.extract_strided_slice %[[LHS_FLAT32]] offsets = [16], sizes = [16], strides = [1] : vector<32xi8> to vector<16xi8>
+// CHECK:        %[[RHS_FLAT16_0:.+]] = vector.extract_strided_slice %[[RHS_FLAT32]] offsets = [0], sizes = [16], strides = [1] : vector<32xi8> to vector<16xi8>
+// CHECK:        %[[RHS_FLAT16_1:.+]] = vector.extract_strided_slice %[[RHS_FLAT32]] offsets = [16], sizes = [16], strides = [1] : vector<32xi8> to vector<16xi8>
 // CHECK:        llvm.inline_asm
 // CHECK-SAME:      {{((.*sdot){16})}}
 // CHECK-SAME:      %[[LHS_FLAT16_0]], %[[LHS_FLAT16_1]], %[[RHS_FLAT16_0]], %[[RHS_FLAT16_1]],
diff --git a/compiler/src/iree/compiler/Codegen/LLVMCPU/test/assign_workgroup_local_memory.mlir b/compiler/src/iree/compiler/Codegen/LLVMCPU/test/assign_workgroup_local_memory.mlir
index b4693ac..9f563c5 100644
--- a/compiler/src/iree/compiler/Codegen/LLVMCPU/test/assign_workgroup_local_memory.mlir
+++ b/compiler/src/iree/compiler/Codegen/LLVMCPU/test/assign_workgroup_local_memory.mlir
@@ -61,7 +61,7 @@
         %1 = memref.alloc() : memref<4xf32, #iree_codegen.workgroup_local>
         // CHECK: %[[C64:.+]] = arith.constant 64 : index
         // CHECK: memref.view %[[PACKED]][%[[C64]]][] : memref<80xi8, #iree_codegen.workgroup_local> to memref<4xf32, #iree_codegen.workgroup_local>
-        %2 = memref.alloc() {alignment = 64 : i64} : memref<4xf32, #iree_codegen.workgroup_local>
+        %2 = memref.alloc() alignment = 64 : memref<4xf32, #iree_codegen.workgroup_local>
         return
       }
       // CHECK: iree_codegen.dispatch_config @dispatch workgroup_local_memory = 80
diff --git a/compiler/src/iree/compiler/Codegen/LLVMCPU/test/pipeline_pad_conv_tests.mlir b/compiler/src/iree/compiler/Codegen/LLVMCPU/test/pipeline_pad_conv_tests.mlir
index 09e9ff9..6e10efc 100644
--- a/compiler/src/iree/compiler/Codegen/LLVMCPU/test/pipeline_pad_conv_tests.mlir
+++ b/compiler/src/iree/compiler/Codegen/LLVMCPU/test/pipeline_pad_conv_tests.mlir
@@ -29,5 +29,5 @@
 //
 // Check that the stack buffer is bounded by tiling sizes.
 //
-// CHECK:          memref.alloca() {alignment = 64 : i64} : memref<1x8x1x8xf32>
+// CHECK:          memref.alloca() alignment = 64 : memref<1x8x1x8xf32>
 // CHECK:          vector.fma
diff --git a/compiler/src/iree/compiler/Codegen/LLVMCPU/test/vector_contract_to_arm_asm.mlir b/compiler/src/iree/compiler/Codegen/LLVMCPU/test/vector_contract_to_arm_asm.mlir
index 26c1765..e6ef975 100644
--- a/compiler/src/iree/compiler/Codegen/LLVMCPU/test/vector_contract_to_arm_asm.mlir
+++ b/compiler/src/iree/compiler/Codegen/LLVMCPU/test/vector_contract_to_arm_asm.mlir
@@ -33,26 +33,26 @@
 // CHECK-DAG:     %[[LHS1D:.+]] = vector.shape_cast %[[LHS]] : vector<8x4xi8> to vector<32xi8>
 // CHECK-DAG:     %[[RHS1D:.+]] = vector.shape_cast %[[RHS]] : vector<8x4xi8> to vector<32xi8>
 // CHECK-DAG:     %[[ACC1D:.+]] = vector.shape_cast %[[ACC]] : vector<8x8xi32> to vector<64xi32>
-// CHECK-DAG:     %[[LHS1D_0:.+]] = vector.extract_strided_slice %[[LHS1D]] {offsets = [0], sizes = [16], strides = [1]} : vector<32xi8> to vector<16xi8>
-// CHECK-DAG:     %[[RHS1D_0:.+]] = vector.extract_strided_slice %[[RHS1D]] {offsets = [0], sizes = [16], strides = [1]} : vector<32xi8> to vector<16xi8>
-// CHECK-DAG:     %[[LHS1D_1:.+]] = vector.extract_strided_slice %[[LHS1D]] {offsets = [16], sizes = [16], strides = [1]} : vector<32xi8> to vector<16xi8>
-// CHECK-DAG:     %[[RHS1D_1:.+]] = vector.extract_strided_slice %[[RHS1D]] {offsets = [16], sizes = [16], strides = [1]} : vector<32xi8> to vector<16xi8>
-// CHECK-DAG:     {{.+}} = vector.extract_strided_slice %[[ACC1D]] {offsets = [0], sizes = [4], strides = [1]} : vector<64xi32> to vector<4xi32>
-// CHECK-DAG:     {{.+}} = vector.extract_strided_slice %[[ACC1D]] {offsets = [4], sizes = [4], strides = [1]} : vector<64xi32> to vector<4xi32>
-// CHECK-DAG:     {{.+}} = vector.extract_strided_slice %[[ACC1D]] {offsets = [8], sizes = [4], strides = [1]} : vector<64xi32> to vector<4xi32>
-// CHECK-DAG:     {{.+}} = vector.extract_strided_slice %[[ACC1D]] {offsets = [12], sizes = [4], strides = [1]} : vector<64xi32> to vector<4xi32>
-// CHECK-DAG:     {{.+}} = vector.extract_strided_slice %[[ACC1D]] {offsets = [16], sizes = [4], strides = [1]} : vector<64xi32> to vector<4xi32>
-// CHECK-DAG:     {{.+}} = vector.extract_strided_slice %[[ACC1D]] {offsets = [20], sizes = [4], strides = [1]} : vector<64xi32> to vector<4xi32>
-// CHECK-DAG:     {{.+}} = vector.extract_strided_slice %[[ACC1D]] {offsets = [24], sizes = [4], strides = [1]} : vector<64xi32> to vector<4xi32>
-// CHECK-DAG:     {{.+}} = vector.extract_strided_slice %[[ACC1D]] {offsets = [28], sizes = [4], strides = [1]} : vector<64xi32> to vector<4xi32>
-// CHECK-DAG:     {{.+}} = vector.extract_strided_slice %[[ACC1D]] {offsets = [32], sizes = [4], strides = [1]} : vector<64xi32> to vector<4xi32>
-// CHECK-DAG:     {{.+}} = vector.extract_strided_slice %[[ACC1D]] {offsets = [36], sizes = [4], strides = [1]} : vector<64xi32> to vector<4xi32>
-// CHECK-DAG:     {{.+}} = vector.extract_strided_slice %[[ACC1D]] {offsets = [40], sizes = [4], strides = [1]} : vector<64xi32> to vector<4xi32>
-// CHECK-DAG:     {{.+}} = vector.extract_strided_slice %[[ACC1D]] {offsets = [44], sizes = [4], strides = [1]} : vector<64xi32> to vector<4xi32>
-// CHECK-DAG:     {{.+}} = vector.extract_strided_slice %[[ACC1D]] {offsets = [48], sizes = [4], strides = [1]} : vector<64xi32> to vector<4xi32>
-// CHECK-DAG:     {{.+}} = vector.extract_strided_slice %[[ACC1D]] {offsets = [52], sizes = [4], strides = [1]} : vector<64xi32> to vector<4xi32>
-// CHECK-DAG:     {{.+}} = vector.extract_strided_slice %[[ACC1D]] {offsets = [56], sizes = [4], strides = [1]} : vector<64xi32> to vector<4xi32>
-// CHECK-DAG:     {{.+}} = vector.extract_strided_slice %[[ACC1D]] {offsets = [60], sizes = [4], strides = [1]} : vector<64xi32> to vector<4xi32>
+// CHECK-DAG:     %[[LHS1D_0:.+]] = vector.extract_strided_slice %[[LHS1D]] offsets = [0], sizes = [16], strides = [1] : vector<32xi8> to vector<16xi8>
+// CHECK-DAG:     %[[RHS1D_0:.+]] = vector.extract_strided_slice %[[RHS1D]] offsets = [0], sizes = [16], strides = [1] : vector<32xi8> to vector<16xi8>
+// CHECK-DAG:     %[[LHS1D_1:.+]] = vector.extract_strided_slice %[[LHS1D]] offsets = [16], sizes = [16], strides = [1] : vector<32xi8> to vector<16xi8>
+// CHECK-DAG:     %[[RHS1D_1:.+]] = vector.extract_strided_slice %[[RHS1D]] offsets = [16], sizes = [16], strides = [1] : vector<32xi8> to vector<16xi8>
+// CHECK-DAG:     {{.+}} = vector.extract_strided_slice %[[ACC1D]] offsets = [0], sizes = [4], strides = [1] : vector<64xi32> to vector<4xi32>
+// CHECK-DAG:     {{.+}} = vector.extract_strided_slice %[[ACC1D]] offsets = [4], sizes = [4], strides = [1] : vector<64xi32> to vector<4xi32>
+// CHECK-DAG:     {{.+}} = vector.extract_strided_slice %[[ACC1D]] offsets = [8], sizes = [4], strides = [1] : vector<64xi32> to vector<4xi32>
+// CHECK-DAG:     {{.+}} = vector.extract_strided_slice %[[ACC1D]] offsets = [12], sizes = [4], strides = [1] : vector<64xi32> to vector<4xi32>
+// CHECK-DAG:     {{.+}} = vector.extract_strided_slice %[[ACC1D]] offsets = [16], sizes = [4], strides = [1] : vector<64xi32> to vector<4xi32>
+// CHECK-DAG:     {{.+}} = vector.extract_strided_slice %[[ACC1D]] offsets = [20], sizes = [4], strides = [1] : vector<64xi32> to vector<4xi32>
+// CHECK-DAG:     {{.+}} = vector.extract_strided_slice %[[ACC1D]] offsets = [24], sizes = [4], strides = [1] : vector<64xi32> to vector<4xi32>
+// CHECK-DAG:     {{.+}} = vector.extract_strided_slice %[[ACC1D]] offsets = [28], sizes = [4], strides = [1] : vector<64xi32> to vector<4xi32>
+// CHECK-DAG:     {{.+}} = vector.extract_strided_slice %[[ACC1D]] offsets = [32], sizes = [4], strides = [1] : vector<64xi32> to vector<4xi32>
+// CHECK-DAG:     {{.+}} = vector.extract_strided_slice %[[ACC1D]] offsets = [36], sizes = [4], strides = [1] : vector<64xi32> to vector<4xi32>
+// CHECK-DAG:     {{.+}} = vector.extract_strided_slice %[[ACC1D]] offsets = [40], sizes = [4], strides = [1] : vector<64xi32> to vector<4xi32>
+// CHECK-DAG:     {{.+}} = vector.extract_strided_slice %[[ACC1D]] offsets = [44], sizes = [4], strides = [1] : vector<64xi32> to vector<4xi32>
+// CHECK-DAG:     {{.+}} = vector.extract_strided_slice %[[ACC1D]] offsets = [48], sizes = [4], strides = [1] : vector<64xi32> to vector<4xi32>
+// CHECK-DAG:     {{.+}} = vector.extract_strided_slice %[[ACC1D]] offsets = [52], sizes = [4], strides = [1] : vector<64xi32> to vector<4xi32>
+// CHECK-DAG:     {{.+}} = vector.extract_strided_slice %[[ACC1D]] offsets = [56], sizes = [4], strides = [1] : vector<64xi32> to vector<4xi32>
+// CHECK-DAG:     {{.+}} = vector.extract_strided_slice %[[ACC1D]] offsets = [60], sizes = [4], strides = [1] : vector<64xi32> to vector<4xi32>
 // CHECK-DAG:     %[[ASM:.+]] = llvm.inline_asm asm_dialect = att
 // CHECK-SAME:      {{((.*sdot){16})}}
 // CHECK-SAME:      "{{(\=w,){16}(w,){4}0,1,.*,15}}"
@@ -74,22 +74,22 @@
 // CHECK-DAG:         %[[RES13:.+]] = llvm.extractvalue %[[ASM]][13]
 // CHECK-DAG:         %[[RES14:.+]] = llvm.extractvalue %[[ASM]][14]
 // CHECK-DAG:         %[[RES15:.+]] = llvm.extractvalue %[[ASM]][15]
-// CHECK:         %[[INS0:.+]] = vector.insert_strided_slice %[[RES0]], %[[INITRES]] {offsets = [0], strides = [1]} : vector<4xi32> into vector<64xi32>
-// CHECK:         %[[INS1:.+]] = vector.insert_strided_slice %[[RES1]], %[[INS0]] {offsets = [4], strides = [1]} : vector<4xi32> into vector<64xi32>
-// CHECK:         %[[INS2:.+]] = vector.insert_strided_slice %[[RES2]], %[[INS1]] {offsets = [8], strides = [1]} : vector<4xi32> into vector<64xi32>
-// CHECK:         %[[INS3:.+]] = vector.insert_strided_slice %[[RES3]], %[[INS2]] {offsets = [12], strides = [1]} : vector<4xi32> into vector<64xi32>
-// CHECK:         %[[INS4:.+]] = vector.insert_strided_slice %[[RES4]], %[[INS3]] {offsets = [16], strides = [1]} : vector<4xi32> into vector<64xi32>
-// CHECK:         %[[INS5:.+]] = vector.insert_strided_slice %[[RES5]], %[[INS4]] {offsets = [20], strides = [1]} : vector<4xi32> into vector<64xi32>
-// CHECK:         %[[INS6:.+]] = vector.insert_strided_slice %[[RES6]], %[[INS5]] {offsets = [24], strides = [1]} : vector<4xi32> into vector<64xi32>
-// CHECK:         %[[INS7:.+]] = vector.insert_strided_slice %[[RES7]], %[[INS6]] {offsets = [28], strides = [1]} : vector<4xi32> into vector<64xi32>
-// CHECK:         %[[INS8:.+]] = vector.insert_strided_slice %[[RES8]], %[[INS7]] {offsets = [32], strides = [1]} : vector<4xi32> into vector<64xi32>
-// CHECK:         %[[INS9:.+]] = vector.insert_strided_slice %[[RES9]], %[[INS8]] {offsets = [36], strides = [1]} : vector<4xi32> into vector<64xi32>
-// CHECK:         %[[INS10:.+]] = vector.insert_strided_slice %[[RES10]], %[[INS9]] {offsets = [40], strides = [1]} : vector<4xi32> into vector<64xi32>
-// CHECK:         %[[INS11:.+]] = vector.insert_strided_slice %[[RES11]], %[[INS10]] {offsets = [44], strides = [1]} : vector<4xi32> into vector<64xi32>
-// CHECK:         %[[INS12:.+]] = vector.insert_strided_slice %[[RES12]], %[[INS11]] {offsets = [48], strides = [1]} : vector<4xi32> into vector<64xi32>
-// CHECK:         %[[INS13:.+]] = vector.insert_strided_slice %[[RES13]], %[[INS12]] {offsets = [52], strides = [1]} : vector<4xi32> into vector<64xi32>
-// CHECK:         %[[INS14:.+]] = vector.insert_strided_slice %[[RES14]], %[[INS13]] {offsets = [56], strides = [1]} : vector<4xi32> into vector<64xi32>
-// CHECK:         %[[INS15:.+]] = vector.insert_strided_slice %[[RES15]], %{{.+}} {offsets = [60], strides = [1]} : vector<4xi32> into vector<64xi32>
+// CHECK:         %[[INS0:.+]] = vector.insert_strided_slice %[[RES0]], %[[INITRES]] offsets = [0], strides = [1] : vector<4xi32> into vector<64xi32>
+// CHECK:         %[[INS1:.+]] = vector.insert_strided_slice %[[RES1]], %[[INS0]] offsets = [4], strides = [1] : vector<4xi32> into vector<64xi32>
+// CHECK:         %[[INS2:.+]] = vector.insert_strided_slice %[[RES2]], %[[INS1]] offsets = [8], strides = [1] : vector<4xi32> into vector<64xi32>
+// CHECK:         %[[INS3:.+]] = vector.insert_strided_slice %[[RES3]], %[[INS2]] offsets = [12], strides = [1] : vector<4xi32> into vector<64xi32>
+// CHECK:         %[[INS4:.+]] = vector.insert_strided_slice %[[RES4]], %[[INS3]] offsets = [16], strides = [1] : vector<4xi32> into vector<64xi32>
+// CHECK:         %[[INS5:.+]] = vector.insert_strided_slice %[[RES5]], %[[INS4]] offsets = [20], strides = [1] : vector<4xi32> into vector<64xi32>
+// CHECK:         %[[INS6:.+]] = vector.insert_strided_slice %[[RES6]], %[[INS5]] offsets = [24], strides = [1] : vector<4xi32> into vector<64xi32>
+// CHECK:         %[[INS7:.+]] = vector.insert_strided_slice %[[RES7]], %[[INS6]] offsets = [28], strides = [1] : vector<4xi32> into vector<64xi32>
+// CHECK:         %[[INS8:.+]] = vector.insert_strided_slice %[[RES8]], %[[INS7]] offsets = [32], strides = [1] : vector<4xi32> into vector<64xi32>
+// CHECK:         %[[INS9:.+]] = vector.insert_strided_slice %[[RES9]], %[[INS8]] offsets = [36], strides = [1] : vector<4xi32> into vector<64xi32>
+// CHECK:         %[[INS10:.+]] = vector.insert_strided_slice %[[RES10]], %[[INS9]] offsets = [40], strides = [1] : vector<4xi32> into vector<64xi32>
+// CHECK:         %[[INS11:.+]] = vector.insert_strided_slice %[[RES11]], %[[INS10]] offsets = [44], strides = [1] : vector<4xi32> into vector<64xi32>
+// CHECK:         %[[INS12:.+]] = vector.insert_strided_slice %[[RES12]], %[[INS11]] offsets = [48], strides = [1] : vector<4xi32> into vector<64xi32>
+// CHECK:         %[[INS13:.+]] = vector.insert_strided_slice %[[RES13]], %[[INS12]] offsets = [52], strides = [1] : vector<4xi32> into vector<64xi32>
+// CHECK:         %[[INS14:.+]] = vector.insert_strided_slice %[[RES14]], %[[INS13]] offsets = [56], strides = [1] : vector<4xi32> into vector<64xi32>
+// CHECK:         %[[INS15:.+]] = vector.insert_strided_slice %[[RES15]], %{{.+}} offsets = [60], strides = [1] : vector<4xi32> into vector<64xi32>
 // CHECK:         %[[RESULT1D:.+]] = vector.shape_cast %[[INS15]] : vector<64xi32> to vector<8x8xi32>
 // CHECK:         return %[[RESULT1D]] : vector<8x8xi32>
 
diff --git a/compiler/src/iree/compiler/Codegen/LLVMCPU/test/vector_contract_to_arm_intrinsics.mlir b/compiler/src/iree/compiler/Codegen/LLVMCPU/test/vector_contract_to_arm_intrinsics.mlir
index 466bc11..4259dcd 100644
--- a/compiler/src/iree/compiler/Codegen/LLVMCPU/test/vector_contract_to_arm_intrinsics.mlir
+++ b/compiler/src/iree/compiler/Codegen/LLVMCPU/test/vector_contract_to_arm_intrinsics.mlir
@@ -13,26 +13,26 @@
 // CHECK-DAG:       %[[ACC_ROW_5:.*]]     = vector.extract %[[ACC]][5] : vector<8xi32> from vector<8x8xi32>
 // CHECK-DAG:       %[[ACC_ROW_6:.*]]     = vector.extract %[[ACC]][6] : vector<8xi32> from vector<8x8xi32>
 // CHECK-DAG:       %[[ACC_ROW_7:.*]]     = vector.extract %[[ACC]][7] : vector<8xi32> from vector<8x8xi32>
-// CHECK-DAG:       %[[ACC_CHUNK_00:.*]]  = vector.extract_strided_slice %[[ACC_ROW_0]] {offsets = [0]
-// CHECK-DAG:       %[[ACC_CHUNK_01:.*]]  = vector.extract_strided_slice %[[ACC_ROW_0]] {offsets = [4]
-// CHECK-DAG:       %[[ACC_CHUNK_02:.*]]  = vector.extract_strided_slice %[[ACC_ROW_1]] {offsets = [0]
-// CHECK-DAG:       %[[ACC_CHUNK_03:.*]]  = vector.extract_strided_slice %[[ACC_ROW_1]] {offsets = [4]
-// CHECK-DAG:       %[[ACC_CHUNK_04:.*]]  = vector.extract_strided_slice %[[ACC_ROW_2]] {offsets = [0]
-// CHECK-DAG:       %[[ACC_CHUNK_05:.*]]  = vector.extract_strided_slice %[[ACC_ROW_2]] {offsets = [4]
-// CHECK-DAG:       %[[ACC_CHUNK_06:.*]]  = vector.extract_strided_slice %[[ACC_ROW_3]] {offsets = [0]
-// CHECK-DAG:       %[[ACC_CHUNK_07:.*]]  = vector.extract_strided_slice %[[ACC_ROW_3]] {offsets = [4]
-// CHECK-DAG:       %[[ACC_CHUNK_08:.*]]  = vector.extract_strided_slice %[[ACC_ROW_4]] {offsets = [0]
-// CHECK-DAG:       %[[ACC_CHUNK_09:.*]]  = vector.extract_strided_slice %[[ACC_ROW_4]] {offsets = [4]
-// CHECK-DAG:       %[[ACC_CHUNK_10:.*]]  = vector.extract_strided_slice %[[ACC_ROW_5]] {offsets = [0]
-// CHECK-DAG:       %[[ACC_CHUNK_11:.*]]  = vector.extract_strided_slice %[[ACC_ROW_5]] {offsets = [4]
-// CHECK-DAG:       %[[ACC_CHUNK_12:.*]]  = vector.extract_strided_slice %[[ACC_ROW_6]] {offsets = [0]
-// CHECK-DAG:       %[[ACC_CHUNK_13:.*]]  = vector.extract_strided_slice %[[ACC_ROW_6]] {offsets = [4]
-// CHECK-DAG:       %[[ACC_CHUNK_14:.*]]  = vector.extract_strided_slice %[[ACC_ROW_7]] {offsets = [0]
-// CHECK-DAG:       %[[ACC_CHUNK_15:.*]]  = vector.extract_strided_slice %[[ACC_ROW_7]] {offsets = [4]
-// CHECK-DAG:       %[[LHS_HALF_0:.*]]    = vector.extract_strided_slice %[[LHS]] {offsets = [0, 0]
-// CHECK-DAG:       %[[LHS_HALF_1:.*]]    = vector.extract_strided_slice %[[LHS]] {offsets = [4, 0]
-// CHECK-DAG:       %[[RHS_HALF_0:.*]]    = vector.extract_strided_slice %[[RHS]] {offsets = [0, 0]
-// CHECK-DAG:       %[[RHS_HALF_1:.*]]    = vector.extract_strided_slice %[[RHS]] {offsets = [4, 0]
+// CHECK-DAG:       %[[ACC_CHUNK_00:.*]]  = vector.extract_strided_slice %[[ACC_ROW_0]] offsets = [0]
+// CHECK-DAG:       %[[ACC_CHUNK_01:.*]]  = vector.extract_strided_slice %[[ACC_ROW_0]] offsets = [4]
+// CHECK-DAG:       %[[ACC_CHUNK_02:.*]]  = vector.extract_strided_slice %[[ACC_ROW_1]] offsets = [0]
+// CHECK-DAG:       %[[ACC_CHUNK_03:.*]]  = vector.extract_strided_slice %[[ACC_ROW_1]] offsets = [4]
+// CHECK-DAG:       %[[ACC_CHUNK_04:.*]]  = vector.extract_strided_slice %[[ACC_ROW_2]] offsets = [0]
+// CHECK-DAG:       %[[ACC_CHUNK_05:.*]]  = vector.extract_strided_slice %[[ACC_ROW_2]] offsets = [4]
+// CHECK-DAG:       %[[ACC_CHUNK_06:.*]]  = vector.extract_strided_slice %[[ACC_ROW_3]] offsets = [0]
+// CHECK-DAG:       %[[ACC_CHUNK_07:.*]]  = vector.extract_strided_slice %[[ACC_ROW_3]] offsets = [4]
+// CHECK-DAG:       %[[ACC_CHUNK_08:.*]]  = vector.extract_strided_slice %[[ACC_ROW_4]] offsets = [0]
+// CHECK-DAG:       %[[ACC_CHUNK_09:.*]]  = vector.extract_strided_slice %[[ACC_ROW_4]] offsets = [4]
+// CHECK-DAG:       %[[ACC_CHUNK_10:.*]]  = vector.extract_strided_slice %[[ACC_ROW_5]] offsets = [0]
+// CHECK-DAG:       %[[ACC_CHUNK_11:.*]]  = vector.extract_strided_slice %[[ACC_ROW_5]] offsets = [4]
+// CHECK-DAG:       %[[ACC_CHUNK_12:.*]]  = vector.extract_strided_slice %[[ACC_ROW_6]] offsets = [0]
+// CHECK-DAG:       %[[ACC_CHUNK_13:.*]]  = vector.extract_strided_slice %[[ACC_ROW_6]] offsets = [4]
+// CHECK-DAG:       %[[ACC_CHUNK_14:.*]]  = vector.extract_strided_slice %[[ACC_ROW_7]] offsets = [0]
+// CHECK-DAG:       %[[ACC_CHUNK_15:.*]]  = vector.extract_strided_slice %[[ACC_ROW_7]] offsets = [4]
+// CHECK-DAG:       %[[LHS_HALF_0:.*]]    = vector.extract_strided_slice %[[LHS]] offsets = [0, 0]
+// CHECK-DAG:       %[[LHS_HALF_1:.*]]    = vector.extract_strided_slice %[[LHS]] offsets = [4, 0]
+// CHECK-DAG:       %[[RHS_HALF_0:.*]]    = vector.extract_strided_slice %[[RHS]] offsets = [0, 0]
+// CHECK-DAG:       %[[RHS_HALF_1:.*]]    = vector.extract_strided_slice %[[RHS]] offsets = [4, 0]
 // CHECK-DAG:       %[[LHS_CHUNK_00:.*]]  = vector.shuffle %[[LHS_HALF_0]], %[[ZERO]] [0, 0, 0, 0]
 // CHECK-DAG:       %[[LHS_CHUNK_01:.*]]  = vector.shuffle %[[LHS_HALF_0]], %[[ZERO]] [0, 0, 0, 0]
 // CHECK-DAG:       %[[LHS_CHUNK_02:.*]]  = vector.shuffle %[[LHS_HALF_0]], %[[ZERO]] [1, 1, 1, 1]
@@ -65,22 +65,22 @@
 // CHECK-DAG:       %[[SDOT_CHUNK_13:.*]] = arm_neon.2d.sdot %[[ACC_CHUNK_13]], %[[RHS_HALF_1]], %[[LHS_CHUNK_13]]
 // CHECK-DAG:       %[[SDOT_CHUNK_14:.*]] = arm_neon.2d.sdot %[[ACC_CHUNK_14]], %[[RHS_HALF_0]], %[[LHS_CHUNK_14]]
 // CHECK-DAG:       %[[SDOT_CHUNK_15:.*]] = arm_neon.2d.sdot %[[ACC_CHUNK_15]], %[[RHS_HALF_1]], %[[LHS_CHUNK_15]]
-// CHECK-DAG:       %[[RES_00:.*]]        = vector.insert_strided_slice %[[SDOT_CHUNK_00]], %[[ACC]]    {offsets = [0, 0]
-// CHECK-DAG:       %[[RES_01:.*]]        = vector.insert_strided_slice %[[SDOT_CHUNK_01]], %[[RES_00]] {offsets = [0, 4]
-// CHECK-DAG:       %[[RES_02:.*]]        = vector.insert_strided_slice %[[SDOT_CHUNK_02]], %[[RES_01]] {offsets = [1, 0]
-// CHECK-DAG:       %[[RES_03:.*]]        = vector.insert_strided_slice %[[SDOT_CHUNK_03]], %[[RES_02]] {offsets = [1, 4]
-// CHECK-DAG:       %[[RES_04:.*]]        = vector.insert_strided_slice %[[SDOT_CHUNK_04]], %[[RES_03]] {offsets = [2, 0]
-// CHECK-DAG:       %[[RES_05:.*]]        = vector.insert_strided_slice %[[SDOT_CHUNK_05]], %[[RES_04]] {offsets = [2, 4]
-// CHECK-DAG:       %[[RES_06:.*]]        = vector.insert_strided_slice %[[SDOT_CHUNK_06]], %[[RES_05]] {offsets = [3, 0]
-// CHECK-DAG:       %[[RES_07:.*]]        = vector.insert_strided_slice %[[SDOT_CHUNK_07]], %[[RES_06]] {offsets = [3, 4]
-// CHECK-DAG:       %[[RES_08:.*]]        = vector.insert_strided_slice %[[SDOT_CHUNK_08]], %[[RES_07]] {offsets = [4, 0]
-// CHECK-DAG:       %[[RES_09:.*]]        = vector.insert_strided_slice %[[SDOT_CHUNK_09]], %[[RES_08]] {offsets = [4, 4]
-// CHECK-DAG:       %[[RES_10:.*]]        = vector.insert_strided_slice %[[SDOT_CHUNK_10]], %[[RES_09]] {offsets = [5, 0]
-// CHECK-DAG:       %[[RES_11:.*]]        = vector.insert_strided_slice %[[SDOT_CHUNK_11]], %[[RES_10]] {offsets = [5, 4]
-// CHECK-DAG:       %[[RES_12:.*]]        = vector.insert_strided_slice %[[SDOT_CHUNK_12]], %[[RES_11]] {offsets = [6, 0]
-// CHECK-DAG:       %[[RES_13:.*]]        = vector.insert_strided_slice %[[SDOT_CHUNK_13]], %[[RES_12]] {offsets = [6, 4]
-// CHECK-DAG:       %[[RES_14:.*]]        = vector.insert_strided_slice %[[SDOT_CHUNK_14]], %[[RES_13]] {offsets = [7, 0]
-// CHECK-DAG:       %[[RES_15:.*]]        = vector.insert_strided_slice %[[SDOT_CHUNK_15]], %[[RES_14]] {offsets = [7, 4]
+// CHECK-DAG:       %[[RES_00:.*]]        = vector.insert_strided_slice %[[SDOT_CHUNK_00]], %[[ACC]]    offsets = [0, 0]
+// CHECK-DAG:       %[[RES_01:.*]]        = vector.insert_strided_slice %[[SDOT_CHUNK_01]], %[[RES_00]] offsets = [0, 4]
+// CHECK-DAG:       %[[RES_02:.*]]        = vector.insert_strided_slice %[[SDOT_CHUNK_02]], %[[RES_01]] offsets = [1, 0]
+// CHECK-DAG:       %[[RES_03:.*]]        = vector.insert_strided_slice %[[SDOT_CHUNK_03]], %[[RES_02]] offsets = [1, 4]
+// CHECK-DAG:       %[[RES_04:.*]]        = vector.insert_strided_slice %[[SDOT_CHUNK_04]], %[[RES_03]] offsets = [2, 0]
+// CHECK-DAG:       %[[RES_05:.*]]        = vector.insert_strided_slice %[[SDOT_CHUNK_05]], %[[RES_04]] offsets = [2, 4]
+// CHECK-DAG:       %[[RES_06:.*]]        = vector.insert_strided_slice %[[SDOT_CHUNK_06]], %[[RES_05]] offsets = [3, 0]
+// CHECK-DAG:       %[[RES_07:.*]]        = vector.insert_strided_slice %[[SDOT_CHUNK_07]], %[[RES_06]] offsets = [3, 4]
+// CHECK-DAG:       %[[RES_08:.*]]        = vector.insert_strided_slice %[[SDOT_CHUNK_08]], %[[RES_07]] offsets = [4, 0]
+// CHECK-DAG:       %[[RES_09:.*]]        = vector.insert_strided_slice %[[SDOT_CHUNK_09]], %[[RES_08]] offsets = [4, 4]
+// CHECK-DAG:       %[[RES_10:.*]]        = vector.insert_strided_slice %[[SDOT_CHUNK_10]], %[[RES_09]] offsets = [5, 0]
+// CHECK-DAG:       %[[RES_11:.*]]        = vector.insert_strided_slice %[[SDOT_CHUNK_11]], %[[RES_10]] offsets = [5, 4]
+// CHECK-DAG:       %[[RES_12:.*]]        = vector.insert_strided_slice %[[SDOT_CHUNK_12]], %[[RES_11]] offsets = [6, 0]
+// CHECK-DAG:       %[[RES_13:.*]]        = vector.insert_strided_slice %[[SDOT_CHUNK_13]], %[[RES_12]] offsets = [6, 4]
+// CHECK-DAG:       %[[RES_14:.*]]        = vector.insert_strided_slice %[[SDOT_CHUNK_14]], %[[RES_13]] offsets = [7, 0]
+// CHECK-DAG:       %[[RES_15:.*]]        = vector.insert_strided_slice %[[SDOT_CHUNK_15]], %[[RES_14]] offsets = [7, 4]
 // CHECK:           return %[[RES_15]]
 func.func @vector_i8i8i32matmul(
     %lhs: vector<8x4xi8>,
diff --git a/compiler/src/iree/compiler/Codegen/LLVMCPU/test/vector_lowering.mlir b/compiler/src/iree/compiler/Codegen/LLVMCPU/test/vector_lowering.mlir
index 26ef0ab..4cbe62f 100644
--- a/compiler/src/iree/compiler/Codegen/LLVMCPU/test/vector_lowering.mlir
+++ b/compiler/src/iree/compiler/Codegen/LLVMCPU/test/vector_lowering.mlir
@@ -16,7 +16,7 @@
   %c16 = arith.constant 16 : index
   %cst_0 = arith.constant dense<0.000000e+00> : vector<8x32xf32>
   %cst_1 = arith.constant dense<6.000000e+00> : vector<8x32xf32>
-  %alloca = memref.alloca() {alignment = 64 : i64} : memref<8x32xf32>
+  %alloca = memref.alloca() alignment = 64 : memref<8x32xf32>
   %0 = hal.interface.binding.subspan layout(#pipeline_layout) binding(0) alignment(64) offset(%c0) flags(ReadOnly) : memref<391x384xf32>
   %1 = hal.interface.binding.subspan layout(#pipeline_layout) binding(1) alignment(64) offset(%c0) flags(ReadOnly) : memref<384x384xf32>
   %2 = hal.interface.binding.subspan layout(#pipeline_layout) binding(2) alignment(64) offset(%c0) flags(ReadOnly) : memref<384xf32>
@@ -93,7 +93,7 @@
   %c16 = arith.constant 16 : index
   %cst_0 = arith.constant dense<0.000000e+00> : vector<8x32xf32>
   %cst_1 = arith.constant dense<6.000000e+00> : vector<8x32xf32>
-  %alloca = memref.alloca() {alignment = 64 : i64} : memref<8x32xf32>
+  %alloca = memref.alloca() alignment = 64 : memref<8x32xf32>
   %0 = hal.interface.binding.subspan layout(#pipeline_layout) binding(0) alignment(64) offset(%c0) flags(ReadOnly) : memref<391x384xf32>
   %1 = hal.interface.binding.subspan layout(#pipeline_layout) binding(1) alignment(64) offset(%c0) flags(ReadOnly) : memref<384x384xf32>
   %2 = hal.interface.binding.subspan layout(#pipeline_layout) binding(2) alignment(64) offset(%c0) flags(ReadOnly) : memref<384xf32>
diff --git a/compiler/src/iree/compiler/Codegen/LLVMGPU/test/NVVM/pipeline_tile_and_fuse_mma_sync.mlir b/compiler/src/iree/compiler/Codegen/LLVMGPU/test/NVVM/pipeline_tile_and_fuse_mma_sync.mlir
index 748597b..99fa509 100644
--- a/compiler/src/iree/compiler/Codegen/LLVMGPU/test/NVVM/pipeline_tile_and_fuse_mma_sync.mlir
+++ b/compiler/src/iree/compiler/Codegen/LLVMGPU/test/NVVM/pipeline_tile_and_fuse_mma_sync.mlir
@@ -51,7 +51,7 @@
 //       CHECK:       vector.transpose {{.*}}, [1, 0, 2] : vector<2x2x2xf16> to vector<2x2x2xf16>
 //       CHECK:       vector.shape_cast {{.*}} : vector<2x2x2xf16> to vector<4x2xf16>
 // Verify nvgpu.mma.sync is generated with correct shape
-// CHECK-COUNT-8: nvgpu.mma.sync({{.*}}) {mmaShape = [16, 8, 16]}
+// CHECK-COUNT-8: nvgpu.mma.sync({{.*}}) mmaShape = [16, 8, 16]
 //       CHECK:   scf.yield
 
 // -----
@@ -95,7 +95,7 @@
 //       CHECK:       vector.transpose {{.*}}, [1, 0, 2] : vector<2x2x2xf16> to vector<2x2x2xf16>
 //       CHECK:       vector.shape_cast {{.*}} : vector<2x2x2xf16> to vector<4x2xf16>
 // Verify nvgpu.mma.sync is generated with f16 output type
-// CHECK-COUNT-8: nvgpu.mma.sync({{.*}}) {mmaShape = [16, 8, 16]} : ({{.*}}) -> vector<2x2xf16>
+// CHECK-COUNT-8: nvgpu.mma.sync({{.*}}) mmaShape = [16, 8, 16] : ({{.*}}) -> vector<2x2xf16>
 
 // -----
 
@@ -137,5 +137,5 @@
 //   CHECK-DAG:   memref.alloc() : memref<{{.*}}xbf16, #gpu.address_space<workgroup>>
 //       CHECK:   scf.for
 // Verify nvgpu.mma.sync is generated with correct shape for BF16
-// CHECK-COUNT-8: nvgpu.mma.sync({{.*}}) {mmaShape = [16, 8, 16]} : ({{.*}}) -> vector<2x2xf32>
+// CHECK-COUNT-8: nvgpu.mma.sync({{.*}}) mmaShape = [16, 8, 16] : ({{.*}}) -> vector<2x2xf32>
 //       CHECK:   scf.yield
diff --git a/compiler/src/iree/compiler/Codegen/LLVMGPU/test/NVVM/pipeline_vector_distribute_mma_sync.mlir b/compiler/src/iree/compiler/Codegen/LLVMGPU/test/NVVM/pipeline_vector_distribute_mma_sync.mlir
index 8a80b02..fdb19cc 100644
--- a/compiler/src/iree/compiler/Codegen/LLVMGPU/test/NVVM/pipeline_vector_distribute_mma_sync.mlir
+++ b/compiler/src/iree/compiler/Codegen/LLVMGPU/test/NVVM/pipeline_vector_distribute_mma_sync.mlir
@@ -35,7 +35,7 @@
 
 // CHECK-LABEL: func.func @matmul_256x256x256_f16_f32()
 //       CHECK:   scf.for {{.*}} = %c0 to %c256 step %c32 iter_args({{.*}}) -> (vector<2x2xf32>)
-// CHECK-COUNT-2:   nvgpu.mma.sync({{.*}}) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf32>) -> vector<2x2xf32>
+// CHECK-COUNT-2:   nvgpu.mma.sync({{.*}}) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf32>) -> vector<2x2xf32>
 //       CHECK:     scf.yield
 
 // -----
@@ -70,5 +70,5 @@
 
 // CHECK-LABEL: func.func @matmul_256x256x256_f16_f16()
 //       CHECK:   scf.for {{.*}} = %c0 to %c256 step %c32 iter_args({{.*}}) -> (vector<2x2xf16>)
-// CHECK-COUNT-2:   nvgpu.mma.sync({{.*}}) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
+// CHECK-COUNT-2:   nvgpu.mma.sync({{.*}}) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf16>) -> vector<2x2xf16>
 //       CHECK:     scf.yield
diff --git a/compiler/src/iree/compiler/Codegen/LLVMGPU/test/ROCDL/gpu_nested_layout_vector_distribution_wide_shuffle.mlir b/compiler/src/iree/compiler/Codegen/LLVMGPU/test/ROCDL/gpu_nested_layout_vector_distribution_wide_shuffle.mlir
index 4759ccf..d87e7b0 100644
--- a/compiler/src/iree/compiler/Codegen/LLVMGPU/test/ROCDL/gpu_nested_layout_vector_distribution_wide_shuffle.mlir
+++ b/compiler/src/iree/compiler/Codegen/LLVMGPU/test/ROCDL/gpu_nested_layout_vector_distribution_wide_shuffle.mlir
@@ -195,7 +195,7 @@
 // CHECK-LABEL: @scan_f64_gfx942_carve_out
 func.func @scan_f64_gfx942_carve_out(%src: vector<16xf64>, %init: vector<f64>) -> (vector<16xf64>, vector<f64>) {
   %src_l = iree_vector_ext.to_layout %src to layout(#layout_scan_f64) : vector<16xf64>
-  %out:2 = vector.scan <add>, %src_l, %init {inclusive = true, reduction_dim = 0 : i64}
+  %out:2 = vector.scan <add>, %src_l, %init reduction_dim = 0, inclusive = true
     : vector<16xf64>, vector<f64>
   return %out#0, %out#1 : vector<16xf64>, vector<f64>
 }
diff --git a/compiler/src/iree/compiler/Codegen/LLVMGPU/test/ROCDL/pipeline_igemm_tile_and_fuse.mlir b/compiler/src/iree/compiler/Codegen/LLVMGPU/test/ROCDL/pipeline_igemm_tile_and_fuse.mlir
index ae23c4b..df78071 100644
--- a/compiler/src/iree/compiler/Codegen/LLVMGPU/test/ROCDL/pipeline_igemm_tile_and_fuse.mlir
+++ b/compiler/src/iree/compiler/Codegen/LLVMGPU/test/ROCDL/pipeline_igemm_tile_and_fuse.mlir
@@ -68,7 +68,7 @@
 //      CHECK-DAG:     vector.transpose %[[RHS_MM]], [0, 2, 3, 1] : vector<2x4x4x1xf16> to vector<2x4x1x4xf16>
 // CHECK-COUNT-32:     amdgpu.mfma 16x16x16
 //          CHECK:   vector.shape_cast %[[LOOP]]#{{.+}} : vector<4xf32> to vector<4x1xf32>
-//          CHECK:   vector.insert_strided_slice {{.*}} {offsets = [3, 0, 3, 0, 0]{{.*}}} : vector<4x1xf32> into vector<4x1x4x4x1xf32>
+//          CHECK:   vector.insert_strided_slice {{.*}} offsets = [3, 0, 3, 0, 0]{{.*}} : vector<4x1xf32> into vector<4x1x4x4x1xf32>
 //          CHECK:   %[[LOOP_T:.+]] = vector.transpose %{{.+}}, [0, 1, 2, 4, 3, 5] : vector<1x4x1x4x4x1xf32> to vector<1x4x1x4x4x1xf32>
 //          CHECK:   %[[CAST:.+]] = vector.shape_cast %[[LOOP_T]] : vector<1x4x1x4x4x1xf32> to vector<4x1x4x4x1xf32>
 //          CHECK:   vector.transfer_write %[[CAST]], %[[BUF2]]
diff --git a/compiler/src/iree/compiler/Codegen/LLVMGPU/test/ROCDL/pipeline_tile_and_fuse.mlir b/compiler/src/iree/compiler/Codegen/LLVMGPU/test/ROCDL/pipeline_tile_and_fuse.mlir
index e85c9c2..c5c20f7 100644
--- a/compiler/src/iree/compiler/Codegen/LLVMGPU/test/ROCDL/pipeline_tile_and_fuse.mlir
+++ b/compiler/src/iree/compiler/Codegen/LLVMGPU/test/ROCDL/pipeline_tile_and_fuse.mlir
@@ -131,7 +131,7 @@
 // CHECK-COUNT-4:   amdgpu.mfma 16x16x16
 //       CHECK:     scf.yield
 //       CHECK:   %[[SC:.+]] = vector.shape_cast %[[LOOP]]#0 : vector<4xf32> to vector<4x1xf32>
-//       CHECK:   %[[INS:.+]] = vector.insert_strided_slice %[[SC]], %{{.+}} {offsets = [1, 1, 0, 0]{{.*}}} : vector<4x1xf32> into vector<2x2x4x1xf32>
+//       CHECK:   %[[INS:.+]] = vector.insert_strided_slice %[[SC]], %{{.+}} offsets = [1, 1, 0, 0]{{.*}} : vector<4x1xf32> into vector<2x2x4x1xf32>
 //       CHECK:   %[[LOOP_T:.+]] = vector.transpose %{{.+}}, [0, 2, 1, 3] : vector<2x2x4x1xf32> to vector<2x4x2x1xf32>
 //       CHECK:   vector.transfer_write %[[LOOP_T]], %[[BUF2]]
 //       CHECK:   iree_codegen.dispatch_config @matmul_transpose_b_mfma workgroup_size = [128, 2, 1] subgroup_size = 64
@@ -201,7 +201,7 @@
 // CHECK-COUNT-8:   amdgpu.wmma 16x16x16 {{.*}} : vector<16xf16>, vector<16xf16>, vector<8xf32>
 //       CHECK:     scf.yield
 //       CHECK:   %[[SC:.+]] = vector.shape_cast %[[LOOP]]#0 : vector<8xf32> to vector<8x1x1xf32>
-//       CHECK:   %[[INS:.+]] = vector.insert_strided_slice %[[SC]], %{{.+}} {offsets = [1, 1, 0, 0, 0]{{.*}}} : vector<8x1x1xf32> into vector<2x2x8x1x1xf32>
+//       CHECK:   %[[INS:.+]] = vector.insert_strided_slice %[[SC]], %{{.+}} offsets = [1, 1, 0, 0, 0]{{.*}} : vector<8x1x1xf32> into vector<2x2x8x1x1xf32>
 //       CHECK:   %[[LOOP_T:.+]] = vector.transpose %{{.+}}, [0, 2, 3, 1, 4] : vector<2x2x8x1x1xf32> to vector<2x8x1x2x1xf32>
 //       CHECK:   vector.transfer_write %[[LOOP_T]], %[[BUF2]]
 //       CHECK:   iree_codegen.dispatch_config @matmul_transpose_b_wmmar3 workgroup_size = [64, 2, 1] subgroup_size = 32
@@ -1012,7 +1012,7 @@
 // CHECK-COUNT-4:   amdgpu.mfma 16x16x16
 //       CHECK:     scf.yield
 //       CHECK:   %[[SC:.+]] = vector.shape_cast %[[LOOP]]#0 : vector<4xf32> to vector<4x1xf32>
-//       CHECK:   %[[INS:.+]] = vector.insert_strided_slice %[[SC]], %{{.+}} {offsets = [1, 1, 0, 0]{{.*}}} : vector<4x1xf32> into vector<2x2x4x1xf32>
+//       CHECK:   %[[INS:.+]] = vector.insert_strided_slice %[[SC]], %{{.+}} offsets = [1, 1, 0, 0]{{.*}} : vector<4x1xf32> into vector<2x2x4x1xf32>
 //       CHECK:   %[[LOOP_T:.+]] = vector.transpose %{{.+}}, [0, 2, 1, 3] : vector<2x2x4x1xf32> to vector<2x4x2x1xf32>
 //       CHECK:   vector.transfer_write %[[LOOP_T]]
 //       CHECK:   scf.for {{.*}} {
diff --git a/compiler/src/iree/compiler/Codegen/LLVMGPU/test/ROCDL/pipeline_tile_and_fuse_gfx950.mlir b/compiler/src/iree/compiler/Codegen/LLVMGPU/test/ROCDL/pipeline_tile_and_fuse_gfx950.mlir
index cd1dbea..1dc5bd3 100644
--- a/compiler/src/iree/compiler/Codegen/LLVMGPU/test/ROCDL/pipeline_tile_and_fuse_gfx950.mlir
+++ b/compiler/src/iree/compiler/Codegen/LLVMGPU/test/ROCDL/pipeline_tile_and_fuse_gfx950.mlir
@@ -109,10 +109,10 @@
 // CHECK-DAG:    %[[B_EXTRACT11:.+]] = vector.extract %[[B_READ]][1, 1, 0, 0] : vector<32xf4E2M1FN> from vector<2x4x1x1x32xf4E2M1FN>
 // CHECK-DAG:    %[[B_EXTRACT12:.+]] = vector.extract %[[B_READ]][1, 2, 0, 0] : vector<32xf4E2M1FN> from vector<2x4x1x1x32xf4E2M1FN>
 // CHECK-DAG:    %[[B_EXTRACT13:.+]] = vector.extract %[[B_READ]][1, 3, 0, 0] : vector<32xf4E2M1FN> from vector<2x4x1x1x32xf4E2M1FN>
-// CHECK-DAG:    %[[A_SCALE_VECTOR0:.+]] = vector.extract_strided_slice {{.*}} {offsets = [0], sizes = [4], strides = [1]} : vector<32xf8E8M0FNU> to vector<4xf8E8M0FNU>
-// CHECK-DAG:    %[[A_SCALE_VECTOR7:.+]] = vector.extract_strided_slice {{.*}} {offsets = [28], sizes = [4], strides = [1]} : vector<32xf8E8M0FNU> to vector<4xf8E8M0FNU>
-// CHECK-DAG:    %[[B_SCALE_VECTOR0:.+]] = vector.extract_strided_slice {{.*}} {offsets = [0], sizes = [4], strides = [1]} : vector<8xf8E8M0FNU> to vector<4xf8E8M0FNU>
-// CHECK-DAG:    %[[B_SCALE_VECTOR1:.+]] = vector.extract_strided_slice {{.*}} {offsets = [4], sizes = [4], strides = [1]} : vector<8xf8E8M0FNU> to vector<4xf8E8M0FNU>
+// CHECK-DAG:    %[[A_SCALE_VECTOR0:.+]] = vector.extract_strided_slice {{.*}} offsets = [0], sizes = [4], strides = [1] : vector<32xf8E8M0FNU> to vector<4xf8E8M0FNU>
+// CHECK-DAG:    %[[A_SCALE_VECTOR7:.+]] = vector.extract_strided_slice {{.*}} offsets = [28], sizes = [4], strides = [1] : vector<32xf8E8M0FNU> to vector<4xf8E8M0FNU>
+// CHECK-DAG:    %[[B_SCALE_VECTOR0:.+]] = vector.extract_strided_slice {{.*}} offsets = [0], sizes = [4], strides = [1] : vector<8xf8E8M0FNU> to vector<4xf8E8M0FNU>
+// CHECK-DAG:    %[[B_SCALE_VECTOR1:.+]] = vector.extract_strided_slice {{.*}} offsets = [4], sizes = [4], strides = [1] : vector<8xf8E8M0FNU> to vector<4xf8E8M0FNU>
 // CHECK-DAG:    %[[C_00_1:.+]] = amdgpu.scaled_mfma 16x16x128 (%[[A_SCALE_VECTOR0]][0] * %[[A_EXTRACT00]]) * (%[[B_SCALE_VECTOR0]][0] * %[[B_EXTRACT00]]) + %arg[[#ITER_BASE]]
 // CHECK-DAG:    %[[C_00_2:.+]] = amdgpu.scaled_mfma 16x16x128 (%[[A_SCALE_VECTOR0]][1] * %[[A_EXTRACT01]]) * (%[[B_SCALE_VECTOR0]][1] * %[[B_EXTRACT01]]) + %[[C_00_1]]
 // CHECK-DAG:    %[[C_00_3:.+]] = amdgpu.scaled_mfma 16x16x128 (%[[A_SCALE_VECTOR0]][2] * %[[A_EXTRACT02]]) * (%[[B_SCALE_VECTOR0]][2] * %[[B_EXTRACT02]]) + %[[C_00_2]]
@@ -130,10 +130,10 @@
 // CHECK-DAG:    %[[C_71_3:.+]] = amdgpu.scaled_mfma 16x16x128 (%[[A_SCALE_VECTOR7]][2] * %[[A_EXTRACT72]]) * (%[[B_SCALE_VECTOR1]][2] * %[[B_EXTRACT12]]) + %[[C_71_2]]
 // CHECK-DAG:    %[[C_71_4:.+]] = amdgpu.scaled_mfma 16x16x128 (%[[A_SCALE_VECTOR7]][3] * %[[A_EXTRACT73]]) * (%[[B_SCALE_VECTOR1]][3] * %[[B_EXTRACT13]]) + %[[C_71_3]]
 // CHECK:        scf.yield
-// CHECK:      vector.insert_strided_slice %[[LOOP]]#0, %{{.+}} {offsets = [0, 0, 0, 0, 0]{{.*}}} : vector<4xf32> into vector<8x2x1x1x4xf32>
-// CHECK:      vector.insert_strided_slice %[[LOOP]]#1, %{{.+}} {offsets = [0, 1, 0, 0, 0]{{.*}}} : vector<4xf32> into vector<8x2x1x1x4xf32>
-// CHECK:      vector.insert_strided_slice %[[LOOP]]#14, %{{.+}} {offsets = [7, 0, 0, 0, 0]{{.*}}} : vector<4xf32> into vector<8x2x1x1x4xf32>
-// CHECK:      vector.insert_strided_slice %[[LOOP]]#15, %{{.+}} {offsets = [7, 1, 0, 0, 0]{{.*}}} : vector<4xf32> into vector<8x2x1x1x4xf32>
+// CHECK:      vector.insert_strided_slice %[[LOOP]]#0, %{{.+}} offsets = [0, 0, 0, 0, 0]{{.*}} : vector<4xf32> into vector<8x2x1x1x4xf32>
+// CHECK:      vector.insert_strided_slice %[[LOOP]]#1, %{{.+}} offsets = [0, 1, 0, 0, 0]{{.*}} : vector<4xf32> into vector<8x2x1x1x4xf32>
+// CHECK:      vector.insert_strided_slice %[[LOOP]]#14, %{{.+}} offsets = [7, 0, 0, 0, 0]{{.*}} : vector<4xf32> into vector<8x2x1x1x4xf32>
+// CHECK:      vector.insert_strided_slice %[[LOOP]]#15, %{{.+}} offsets = [7, 1, 0, 0, 0]{{.*}} : vector<4xf32> into vector<8x2x1x1x4xf32>
 // CHECK:      vector.transfer_read %[[BUFFER_C]]
 // CHECK:      arith.addf
 // CHECK:      vector.transfer_write
diff --git a/compiler/src/iree/compiler/Codegen/LLVMGPU/test/ROCDL/pipeline_vector_distribute_gfx942.mlir b/compiler/src/iree/compiler/Codegen/LLVMGPU/test/ROCDL/pipeline_vector_distribute_gfx942.mlir
index d4c7528..40b8aa9 100644
--- a/compiler/src/iree/compiler/Codegen/LLVMGPU/test/ROCDL/pipeline_vector_distribute_gfx942.mlir
+++ b/compiler/src/iree/compiler/Codegen/LLVMGPU/test/ROCDL/pipeline_vector_distribute_gfx942.mlir
@@ -504,12 +504,12 @@
 
 // CHECK:       %[[A_CAST:.+]] = vector.shape_cast %{{.+}} : vector<1x8xf16> to vector<8xf16>
 // CHECK:       %[[B_CAST:.+]] = vector.shape_cast %{{.+}} : vector<1x8xf16> to vector<8xf16>
-// CHECK:       %[[A_SLICE_0:.+]] = vector.extract_strided_slice %[[A_CAST]] {offsets = [0], sizes = [4], strides = [1]} : vector<8xf16> to vector<4xf16>
-// CHECK:       %[[B_SLICE_0:.+]] = vector.extract_strided_slice %[[B_CAST]] {offsets = [0], sizes = [4], strides = [1]} : vector<8xf16> to vector<4xf16>
+// CHECK:       %[[A_SLICE_0:.+]] = vector.extract_strided_slice %[[A_CAST]] offsets = [0], sizes = [4], strides = [1] : vector<8xf16> to vector<4xf16>
+// CHECK:       %[[B_SLICE_0:.+]] = vector.extract_strided_slice %[[B_CAST]] offsets = [0], sizes = [4], strides = [1] : vector<8xf16> to vector<4xf16>
 // CHECK:       %[[MFMA_0:.*]] = amdgpu.mfma 32x32x8 %[[A_SLICE_0]] * %[[B_SLICE_0]] + %[[ACC]] blgp =  none
 // CHECK-SAME:     : vector<4xf16>, vector<4xf16>, vector<16xf32>
-// CHECK:       %[[A_SLICE_1:.+]] = vector.extract_strided_slice %[[A_CAST]] {offsets = [4], sizes = [4], strides = [1]} : vector<8xf16> to vector<4xf16>
-// CHECK:       %[[B_SLICE_1:.+]] = vector.extract_strided_slice %[[B_CAST]] {offsets = [4], sizes = [4], strides = [1]} : vector<8xf16> to vector<4xf16>
+// CHECK:       %[[A_SLICE_1:.+]] = vector.extract_strided_slice %[[A_CAST]] offsets = [4], sizes = [4], strides = [1] : vector<8xf16> to vector<4xf16>
+// CHECK:       %[[B_SLICE_1:.+]] = vector.extract_strided_slice %[[B_CAST]] offsets = [4], sizes = [4], strides = [1] : vector<8xf16> to vector<4xf16>
 // CHECK:       amdgpu.mfma 32x32x8 %[[A_SLICE_1]] * %[[B_SLICE_1]] + %[[MFMA_0]] blgp =  none
 // CHECK-SAME:     : vector<4xf16>, vector<4xf16>, vector<16xf32>
 
diff --git a/compiler/src/iree/compiler/Codegen/LLVMGPU/test/create_async_groups.mlir b/compiler/src/iree/compiler/Codegen/LLVMGPU/test/create_async_groups.mlir
index 1bd7f7a..5bfb282 100644
--- a/compiler/src/iree/compiler/Codegen/LLVMGPU/test/create_async_groups.mlir
+++ b/compiler/src/iree/compiler/Codegen/LLVMGPU/test/create_async_groups.mlir
@@ -9,7 +9,7 @@
     %c4 = arith.constant 4 : index
     %cst_0 = arith.constant 0.000000e+00 : f32
     // Make sure we emit the bypassL1.
-    // CHECK: %[[CP0:.*]] = nvgpu.device_async_copy {{.*}}, {{.*}}, 4  {bypassL1} :
+    // CHECK: %[[CP0:.*]] = nvgpu.device_async_copy {{.*}}, {{.*}}, 4  bypassL1 :
     %1 = vector.transfer_read %a[%c0, %c0], %cst_0 {in_bounds = [true]} : memref<1024x1024xf32>, vector<4xf32>
     vector.transfer_write %1, %0[%c0, %c0, %c0] {in_bounds = [true]} : vector<4xf32>, memref<4x32x16xf32, #gpu.address_space<workgroup>>
     // CHECK-NOT: nvgpu.device_async_create_group
diff --git a/compiler/src/iree/compiler/Codegen/LLVMGPU/test/legalize_nd_vectors.mlir b/compiler/src/iree/compiler/Codegen/LLVMGPU/test/legalize_nd_vectors.mlir
index fbf6a24..05f6734 100644
--- a/compiler/src/iree/compiler/Codegen/LLVMGPU/test/legalize_nd_vectors.mlir
+++ b/compiler/src/iree/compiler/Codegen/LLVMGPU/test/legalize_nd_vectors.mlir
@@ -316,11 +316,11 @@
 // nvgpu.mma.sync is legal despite having n-D vectors; materializations bridge
 // the 1-D converted values and the n-D op interface.
 func.func @mma_sync_legal(%a: vector<4x2xf16>, %b: vector<2x2xf16>, %c: vector<2x2xf32>) -> vector<2x2xf32> {
-  %0 = nvgpu.mma.sync(%a, %b, %c) {mmaShape = [16, 8, 16]} : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf32>) -> vector<2x2xf32>
+  %0 = nvgpu.mma.sync(%a, %b, %c) mmaShape = [16, 8, 16] : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf32>) -> vector<2x2xf32>
   return %0 : vector<2x2xf32>
 }
 // CHECK-LABEL: func.func @mma_sync_legal
-//       CHECK:   nvgpu.mma.sync({{.*}}) {mmaShape = [16, 8, 16]}
+//       CHECK:   nvgpu.mma.sync({{.*}}) mmaShape = [16, 8, 16]
 //  CHECK-SAME:     : (vector<4x2xf16>, vector<2x2xf16>, vector<2x2xf32>) -> vector<2x2xf32>
 //       CHECK:   return {{.*}} : vector<2xf32>, vector<2xf32>
 
diff --git a/compiler/src/iree/compiler/Codegen/LLVMGPU/test/nvvm_pipeline_test.mlir b/compiler/src/iree/compiler/Codegen/LLVMGPU/test/nvvm_pipeline_test.mlir
index 0b95ecf..aa1bfb2 100644
--- a/compiler/src/iree/compiler/Codegen/LLVMGPU/test/nvvm_pipeline_test.mlir
+++ b/compiler/src/iree/compiler/Codegen/LLVMGPU/test/nvvm_pipeline_test.mlir
@@ -466,6 +466,6 @@
 
 //    SM80-LABEL: llvm.func @matmul_f16
 //     SM80-NOT:     nvgpu.mma.sync
-// SM80-COUNT-64: nvvm.mma.sync{{.*}}shape = #nvvm.shape<m = 16, n = 8, k = 16>
+// SM80-COUNT-64: nvvm.mma.sync{{.*}}shape = <m = 16, n = 8, k = 16>
 //     SM80-NOT:     nvvm.mma.sync
 //         SM80:     llvm.return
diff --git a/compiler/src/iree/compiler/Codegen/LLVMGPU/test/pack_shared_memory_alloc.mlir b/compiler/src/iree/compiler/Codegen/LLVMGPU/test/pack_shared_memory_alloc.mlir
index 6158173..bab2e63 100644
--- a/compiler/src/iree/compiler/Codegen/LLVMGPU/test/pack_shared_memory_alloc.mlir
+++ b/compiler/src/iree/compiler/Codegen/LLVMGPU/test/pack_shared_memory_alloc.mlir
@@ -22,6 +22,6 @@
 //       CHECK:   %[[C512:.+]] = arith.constant 512 : index
 //       CHECK:   memref.view %[[PACKED]][%[[C512]]][] : memref<1024xi8, #gpu.address_space<workgroup>> to memref<128xf32, #gpu.address_space<workgroup>>
 //       CHECK:   nvgpu.device_async_create_group
-//       CHECK:   nvgpu.device_async_wait %0 {numGroups = 0 : i32}
+//       CHECK:   nvgpu.device_async_wait %0 numGroups = 0
 //       CHECK:   gpu.barrier memfence [#gpu.address_space<workgroup>]
 //       CHECK:   memref.view %[[PACKED]][%[[C0]]][] : memref<1024xi8, #gpu.address_space<workgroup>> to memref<32xf32, #gpu.address_space<workgroup>>
diff --git a/compiler/src/iree/compiler/Codegen/LLVMGPU/test/rocdl_load_to_transpose_load.mlir b/compiler/src/iree/compiler/Codegen/LLVMGPU/test/rocdl_load_to_transpose_load.mlir
index a309263..4a7810b 100644
--- a/compiler/src/iree/compiler/Codegen/LLVMGPU/test/rocdl_load_to_transpose_load.mlir
+++ b/compiler/src/iree/compiler/Codegen/LLVMGPU/test/rocdl_load_to_transpose_load.mlir
@@ -408,8 +408,8 @@
 // CHECK: %[[ROW_OFFSET:.+]] = arith.addi %[[DIV4]], %[[C4]] : index
 // CHECK: %[[ROW1:.+]] = arith.addi %[[ROW]], %[[ROW_OFFSET]] : index
 // CHECK: %[[L1:.+]] = amdgpu.transpose_load %{{.*}}[%[[ROW1]], %[[NEW_COL]]] : memref<128x256xf16, #gpu.address_space<workgroup>> -> vector<4xf16>
-// CHECK: vector.insert_strided_slice %[[L0]], {{.*}} {offsets = [0], strides = [1]}
-// CHECK: vector.insert_strided_slice %[[L1]], {{.*}} {offsets = [4], strides = [1]}
+// CHECK: vector.insert_strided_slice %[[L0]], {{.*}} offsets = [0], strides = [1]
+// CHECK: vector.insert_strided_slice %[[L1]], {{.*}} offsets = [4], strides = [1]
 // CHECK: vector.shape_cast {{.*}} : vector<8xf16> to vector<8x1xf16>
 func.func @transform_unroll_f16_8x1() -> vector<8x1xf16> {
   %src = memref.alloc() : memref<128x256xf16, #gpu.address_space<workgroup>>
diff --git a/compiler/src/iree/compiler/Codegen/LLVMGPU/test/transform_dialect_bufferize.mlir b/compiler/src/iree/compiler/Codegen/LLVMGPU/test/transform_dialect_bufferize.mlir
index 9637bb9..c07aa76 100644
--- a/compiler/src/iree/compiler/Codegen/LLVMGPU/test/transform_dialect_bufferize.mlir
+++ b/compiler/src/iree/compiler/Codegen/LLVMGPU/test/transform_dialect_bufferize.mlir
@@ -18,7 +18,7 @@
   %5 = linalg.fill ins(%cst : f32) outs(%50 : tensor<250x1020xf32>) -> tensor<250x1020xf32>
 
   // CHECK: linalg.fill ins(%{{.*}} : f32) outs(%{{.*}} : memref<250x1020xf32, #hal.descriptor_type<storage_buffer>>)
-  // CHECK: memref.alloc() {alignment = 64 : i64} : memref<250x500xf32, #gpu.address_space<workgroup>>
+  // CHECK: memref.alloc() alignment = 64 : memref<250x500xf32, #gpu.address_space<workgroup>>
   // CHECK: gpu.barrier memfence [#gpu.address_space<workgroup>]
   // CHECK: linalg.generic
   // CHECK: gpu.barrier memfence [#gpu.address_space<workgroup>]
diff --git a/compiler/src/iree/compiler/Codegen/LLVMGPU/test/transform_dialect_pack_shared_memory_alloc.mlir b/compiler/src/iree/compiler/Codegen/LLVMGPU/test/transform_dialect_pack_shared_memory_alloc.mlir
index e1823cc..eb32d4a 100644
--- a/compiler/src/iree/compiler/Codegen/LLVMGPU/test/transform_dialect_pack_shared_memory_alloc.mlir
+++ b/compiler/src/iree/compiler/Codegen/LLVMGPU/test/transform_dialect_pack_shared_memory_alloc.mlir
@@ -8,7 +8,7 @@
 //       CHECK:   %[[C512:.+]] = arith.constant 512 : index
 //       CHECK:   memref.view %[[PACKED]][%[[C512]]][] : memref<1024xi8, #gpu.address_space<workgroup>> to memref<128xf32, #gpu.address_space<workgroup>>
 //       CHECK:   nvgpu.device_async_create_group
-//       CHECK:   nvgpu.device_async_wait %0 {numGroups = 0 : i32}
+//       CHECK:   nvgpu.device_async_wait %0 numGroups = 0
 //       CHECK:   gpu.barrier
 //       CHECK:   memref.view %[[PACKED]][%[[C0]]][] : memref<1024xi8, #gpu.address_space<workgroup>> to memref<32xf32, #gpu.address_space<workgroup>>
 func.func @shared_memory_disjoint() {
diff --git a/compiler/src/iree/compiler/Codegen/LLVMGPU/test/transform_dialect_vector_to_nvgpu_mma.mlir b/compiler/src/iree/compiler/Codegen/LLVMGPU/test/transform_dialect_vector_to_nvgpu_mma.mlir
index 42aed57..9cf6560 100644
--- a/compiler/src/iree/compiler/Codegen/LLVMGPU/test/transform_dialect_vector_to_nvgpu_mma.mlir
+++ b/compiler/src/iree/compiler/Codegen/LLVMGPU/test/transform_dialect_vector_to_nvgpu_mma.mlir
@@ -68,7 +68,7 @@
   %vc = vector.transfer_read %c[%c0, %c0], %cst: memref<16x16xf32>, vector<16x16xf32>
 
   // CHECK-NOT: vector.contract
-  //     CHECK: nvgpu.mma.sync{{.*}} tf32Enabled}
+  //     CHECK: nvgpu.mma.sync{{.*}} tf32Enabled
   %vres = vector.contract #matmat_trait %va, %vb, %vc
     : vector<16x16xf32>, vector<16x16xf32> into vector<16x16xf32>
   vector.transfer_write %vres, %c[%c0, %c0]: vector<16x16xf32>, memref<16x16xf32>
diff --git a/compiler/src/iree/compiler/Codegen/LLVMGPU/test/transform_gpu_pipelining.mlir b/compiler/src/iree/compiler/Codegen/LLVMGPU/test/transform_gpu_pipelining.mlir
index bd82f0b..6a4ea9e 100644
--- a/compiler/src/iree/compiler/Codegen/LLVMGPU/test/transform_gpu_pipelining.mlir
+++ b/compiler/src/iree/compiler/Codegen/LLVMGPU/test/transform_gpu_pipelining.mlir
@@ -39,18 +39,18 @@
     nvgpu.device_async_wait %21
     gpu.barrier memfence [#gpu.address_space<workgroup>]
     %22 = affine.apply affine_map<()[s0] -> (s0 * 16)>()[%2]
-    %23 = gpu.subgroup_mma_load_matrix %4[%16, %22, %c0] {leadDimension = 40 : index} : memref<4x32x40xf16, 3> -> !gpu.mma_matrix<16x16xf16, "AOp">
-    %24 = gpu.subgroup_mma_load_matrix %4[%16, %22, %c16] {leadDimension = 40 : index} : memref<4x32x40xf16, 3> -> !gpu.mma_matrix<16x16xf16, "AOp">
+    %23 = gpu.subgroup_mma_load_matrix %4[%16, %22, %c0] leadDimension 40 : memref<4x32x40xf16, 3> -> !gpu.mma_matrix<16x16xf16, "AOp">
+    %24 = gpu.subgroup_mma_load_matrix %4[%16, %22, %c16] leadDimension 40 : memref<4x32x40xf16, 3> -> !gpu.mma_matrix<16x16xf16, "AOp">
     %25 = affine.apply affine_map<()[s0] -> ((s0 floordiv 32) * 16)>()[%1]
-    %26 = gpu.subgroup_mma_load_matrix %5[%16, %c0, %25] {leadDimension = 40 : index} : memref<4x32x40xf16, 3> -> !gpu.mma_matrix<16x16xf16, "BOp">
-    %27 = gpu.subgroup_mma_load_matrix %5[%16, %c16, %25] {leadDimension = 40 : index} : memref<4x32x40xf16, 3> -> !gpu.mma_matrix<16x16xf16, "BOp">
+    %26 = gpu.subgroup_mma_load_matrix %5[%16, %c0, %25] leadDimension 40 : memref<4x32x40xf16, 3> -> !gpu.mma_matrix<16x16xf16, "BOp">
+    %27 = gpu.subgroup_mma_load_matrix %5[%16, %c16, %25] leadDimension 40 : memref<4x32x40xf16, 3> -> !gpu.mma_matrix<16x16xf16, "BOp">
     %28 = gpu.subgroup_mma_compute %23, %26, %arg1 : !gpu.mma_matrix<16x16xf16, "AOp">, !gpu.mma_matrix<16x16xf16, "BOp"> -> !gpu.mma_matrix<16x16xf16, "COp">
     %29 = gpu.subgroup_mma_compute %24, %27, %28 : !gpu.mma_matrix<16x16xf16, "AOp">, !gpu.mma_matrix<16x16xf16, "BOp"> -> !gpu.mma_matrix<16x16xf16, "COp">
     scf.yield %29 : !gpu.mma_matrix<16x16xf16, "COp">
   }
   %12 = affine.apply affine_map<()[s0, s1] -> (s0 * 16 + s1 * 32)>()[%2, %workgroup_id_y]
   %13 = affine.apply affine_map<()[s0, s1] -> (s1 * 32 + (s0 floordiv 32) * 16)>()[%1, %workgroup_id_x]
-  gpu.subgroup_mma_store_matrix %11, %8[%12, %13] {leadDimension = 1024 : index} : !gpu.mma_matrix<16x16xf16, "COp">, memref<3456x1024xf16>
+  gpu.subgroup_mma_store_matrix %11, %8[%12, %13] leadDimension 1024 : !gpu.mma_matrix<16x16xf16, "COp">, memref<3456x1024xf16>
   return
 }
 }
@@ -76,7 +76,7 @@
 // CHECK: nvgpu.device_async_copy
 // CHECK: nvgpu.device_async_create_group
 // CHECK: scf.for
-// CHECK:   nvgpu.device_async_wait %{{.*}} {numGroups = 3 : i32}
+// CHECK:   nvgpu.device_async_wait %{{.*}} numGroups = 3
 // CHECK:   nvgpu.device_async_copy
 // CHECK:   nvgpu.device_async_copy
 // CHECK:   nvgpu.device_async_create_group
diff --git a/compiler/src/iree/compiler/Codegen/LLVMGPU/test/transform_vector_to_mma.mlir b/compiler/src/iree/compiler/Codegen/LLVMGPU/test/transform_vector_to_mma.mlir
index 7f39db9..1b6f81c 100644
--- a/compiler/src/iree/compiler/Codegen/LLVMGPU/test/transform_vector_to_mma.mlir
+++ b/compiler/src/iree/compiler/Codegen/LLVMGPU/test/transform_vector_to_mma.mlir
@@ -23,15 +23,15 @@
   %6 = affine.apply affine_map<()[s0] -> ((s0 floordiv 32) * 16)>()[%3]
 // CHECK: gpu.subgroup_mma_constant_matrix %{{.*}} : !gpu.mma_matrix<16x16xf32, "COp">
 // CHECK: scf.for {{.*}} -> (!gpu.mma_matrix<16x16xf32, "COp">) {
-// CHECK:   gpu.subgroup_mma_load_matrix {{.*}} {leadDimension = 32 : index} : memref<32x32xf32> -> !gpu.mma_matrix<16x8xf32, "AOp">
-// CHECK:   gpu.subgroup_mma_load_matrix {{.*}} {leadDimension = 32 : index} : memref<32x32xf32> -> !gpu.mma_matrix<16x8xf32, "AOp">
-// CHECK:   gpu.subgroup_mma_load_matrix {{.*}} {leadDimension = 32 : index} : memref<32x32xf32> -> !gpu.mma_matrix<8x16xf32, "BOp">
-// CHECK:   gpu.subgroup_mma_load_matrix {{.*}} {leadDimension = 32 : index} : memref<32x32xf32> -> !gpu.mma_matrix<8x16xf32, "BOp">
+// CHECK:   gpu.subgroup_mma_load_matrix {{.*}} leadDimension 32 : memref<32x32xf32> -> !gpu.mma_matrix<16x8xf32, "AOp">
+// CHECK:   gpu.subgroup_mma_load_matrix {{.*}} leadDimension 32 : memref<32x32xf32> -> !gpu.mma_matrix<16x8xf32, "AOp">
+// CHECK:   gpu.subgroup_mma_load_matrix {{.*}} leadDimension 32 : memref<32x32xf32> -> !gpu.mma_matrix<8x16xf32, "BOp">
+// CHECK:   gpu.subgroup_mma_load_matrix {{.*}} leadDimension 32 : memref<32x32xf32> -> !gpu.mma_matrix<8x16xf32, "BOp">
 // CHECK:   gpu.subgroup_mma_compute {{.*}} : !gpu.mma_matrix<16x8xf32, "AOp">, !gpu.mma_matrix<8x16xf32, "BOp"> -> !gpu.mma_matrix<16x16xf32, "COp">
 // CHECK:   gpu.subgroup_mma_compute {{.*}} : !gpu.mma_matrix<16x8xf32, "AOp">, !gpu.mma_matrix<8x16xf32, "BOp"> -> !gpu.mma_matrix<16x16xf32, "COp">
 // CHECK:   scf.yield {{.*}} : !gpu.mma_matrix<16x16xf32, "COp">
 // CHECK: }
-// CHECK: gpu.subgroup_mma_store_matrix {{.*}} {leadDimension = 32 : index} : !gpu.mma_matrix<16x16xf32, "COp">, memref<32x32xf32>
+// CHECK: gpu.subgroup_mma_store_matrix {{.*}} leadDimension 32 : !gpu.mma_matrix<16x16xf32, "COp">, memref<32x32xf32>
   %7 = scf.for %arg0 = %c0 to %c32 step %c16 iter_args(%arg1 = %cst) -> (vector<16x16xf32>) {
     %10 = affine.apply affine_map<(d0)[s0] -> (d0 + s0)>(%c0)[%5]
     %11 = affine.apply affine_map<(d0)[s0] -> (d0 + s0)>(%c0)[%arg0]
@@ -92,7 +92,7 @@
   %0 = hal.interface.binding.subspan layout(#pipeline_layout) binding(0) alignment(64) offset(%c0) : memref<32x32xf32>
   %1 = hal.interface.binding.subspan layout(#pipeline_layout) binding(1) alignment(64) offset(%c0) : memref<32x32xf32>
   %2 = hal.interface.binding.subspan layout(#pipeline_layout) binding(2) alignment(64) offset(%c0) : memref<32x32xf32>
-  %alloc = memref.alloc() {alignment = 64 : i64} : memref<32x32xf32>
+  %alloc = memref.alloc() alignment = 64 : memref<32x32xf32>
   %3 = gpu.thread_id x
   %4 = gpu.thread_id y
   %5 = affine.apply affine_map<()[s0] -> (s0 * 16)>()[%4]
@@ -101,15 +101,15 @@
 // CHECK: scf.for {{.*}} -> (!gpu.mma_matrix<16x16xf32, "COp">) {
 // CHECK:   arith.addi {{.*}} : vector<4xindex>
 // CHECK:   vector.gather {{.*}} : memref<32x32xf32>, vector<4x4xindex>, vector<4x4xi1>, vector<4x4xf32> into vector<4x4xf32>
-// CHECK:   gpu.subgroup_mma_load_matrix {{.*}} {leadDimension = 32 : index} : memref<32x32xf32> -> !gpu.mma_matrix<16x8xf32, "AOp">
-// CHECK:   gpu.subgroup_mma_load_matrix {{.*}} {leadDimension = 32 : index} : memref<32x32xf32> -> !gpu.mma_matrix<16x8xf32, "AOp">
-// CHECK:   gpu.subgroup_mma_load_matrix {{.*}} {leadDimension = 32 : index} : memref<32x32xf32> -> !gpu.mma_matrix<8x16xf32, "BOp">
-// CHECK:   gpu.subgroup_mma_load_matrix {{.*}} {leadDimension = 32 : index} : memref<32x32xf32> -> !gpu.mma_matrix<8x16xf32, "BOp">
+// CHECK:   gpu.subgroup_mma_load_matrix {{.*}} leadDimension 32 : memref<32x32xf32> -> !gpu.mma_matrix<16x8xf32, "AOp">
+// CHECK:   gpu.subgroup_mma_load_matrix {{.*}} leadDimension 32 : memref<32x32xf32> -> !gpu.mma_matrix<16x8xf32, "AOp">
+// CHECK:   gpu.subgroup_mma_load_matrix {{.*}} leadDimension 32 : memref<32x32xf32> -> !gpu.mma_matrix<8x16xf32, "BOp">
+// CHECK:   gpu.subgroup_mma_load_matrix {{.*}} leadDimension 32 : memref<32x32xf32> -> !gpu.mma_matrix<8x16xf32, "BOp">
 // CHECK:   gpu.subgroup_mma_compute {{.*}} : !gpu.mma_matrix<16x8xf32, "AOp">, !gpu.mma_matrix<8x16xf32, "BOp"> -> !gpu.mma_matrix<16x16xf32, "COp">
 // CHECK:   gpu.subgroup_mma_compute {{.*}} : !gpu.mma_matrix<16x8xf32, "AOp">, !gpu.mma_matrix<8x16xf32, "BOp"> -> !gpu.mma_matrix<16x16xf32, "COp">
 // CHECK:   scf.yield {{.*}} : !gpu.mma_matrix<16x16xf32, "COp">
 // CHECK: }
-// CHECK: gpu.subgroup_mma_store_matrix {{.*}} {leadDimension = 32 : index} : !gpu.mma_matrix<16x16xf32, "COp">, memref<32x32xf32>
+// CHECK: gpu.subgroup_mma_store_matrix {{.*}} leadDimension 32 : !gpu.mma_matrix<16x16xf32, "COp">, memref<32x32xf32>
   %7 = scf.for %arg0 = %c0 to %c32 step %c16 iter_args(%arg1 = %cst) -> (vector<16x16xf32>) {
     %10 = vector.broadcast %arg0 : index to vector<4xindex>
     %11 = arith.addi %10, %cst_1 : vector<4xindex>
diff --git a/compiler/src/iree/compiler/Codegen/SPIRV/test/break_down_large_vector.mlir b/compiler/src/iree/compiler/Codegen/SPIRV/test/break_down_large_vector.mlir
index 3db6cf0..958a2d0 100644
--- a/compiler/src/iree/compiler/Codegen/SPIRV/test/break_down_large_vector.mlir
+++ b/compiler/src/iree/compiler/Codegen/SPIRV/test/break_down_large_vector.mlir
@@ -4,7 +4,7 @@
 func.func @extract_strided_slice_8_elements(%input: vector<8xf16>) -> vector<4xf16> {
   // CHECK-COUNT-4: vector.extract
   // CHECK:         vector.from_elements
-  %0 = vector.extract_strided_slice %input {offsets = [1], sizes = [4], strides = [1]} : vector<8xf16> to vector<4xf16>
+  %0 = vector.extract_strided_slice %input offsets = [1], sizes = [4], strides = [1] : vector<8xf16> to vector<4xf16>
   return %0: vector<4xf16>
 }
 
@@ -13,7 +13,7 @@
 // CHECK-LABEL: func @extract_strided_slice_4_elements
 func.func @extract_strided_slice_4_elements(%input: vector<4xf16>) -> vector<2xf16> {
   // CHECK: vector.extract_strided_slice
-  %0 = vector.extract_strided_slice %input {offsets = [1], sizes = [2], strides = [1]} : vector<4xf16> to vector<2xf16>
+  %0 = vector.extract_strided_slice %input offsets = [1], sizes = [2], strides = [1] : vector<4xf16> to vector<2xf16>
   return %0: vector<2xf16>
 }
 
@@ -35,7 +35,7 @@
 
 func.func @bitcast_extract_extend_0(%input: vector<1xi32>) -> vector<4xi32> {
   %bitcast = vector.bitcast %input : vector<1xi32> to vector<8xi4>
-  %extract = vector.extract_strided_slice %bitcast {offsets = [0], sizes = [4], strides = [1]} : vector<8xi4> to vector<4xi4>
+  %extract = vector.extract_strided_slice %bitcast offsets = [0], sizes = [4], strides = [1] : vector<8xi4> to vector<4xi4>
   %extend = arith.extui %extract : vector<4xi4> to vector<4xi32>
   return %extend : vector<4xi32>
 }
@@ -61,7 +61,7 @@
 
 func.func @bitcast_extract_extend_1(%input: vector<4xi32>) -> vector<4xi32> {
   %bitcast = vector.bitcast %input : vector<4xi32> to vector<32xi4>
-  %extract = vector.extract_strided_slice %bitcast {offsets = [20], sizes = [4], strides = [1]} : vector<32xi4> to vector<4xi4>
+  %extract = vector.extract_strided_slice %bitcast offsets = [20], sizes = [4], strides = [1] : vector<32xi4> to vector<4xi4>
   %extend = arith.extui %extract : vector<4xi4> to vector<4xi32>
   return %extend : vector<4xi32>
 }
diff --git a/compiler/src/iree/compiler/Codegen/SPIRV/test/initial_vector_lowering_index_type.mlir b/compiler/src/iree/compiler/Codegen/SPIRV/test/initial_vector_lowering_index_type.mlir
index db5751d..e4d15d3 100644
--- a/compiler/src/iree/compiler/Codegen/SPIRV/test/initial_vector_lowering_index_type.mlir
+++ b/compiler/src/iree/compiler/Codegen/SPIRV/test/initial_vector_lowering_index_type.mlir
@@ -23,15 +23,15 @@
 //   CHECK-DAG:   %[[CST2:.+]] = arith.constant dense<2> : vector<1xindex>
 //   CHECK-DAG:   %[[CST1:.+]] = arith.constant dense<1> : vector<1xindex>
 //       CHECK:   %[[STEP:.+]] = vector.step : vector<1xindex>
-//       CHECK:   %[[INS0:.+]] = vector.insert_strided_slice %[[STEP]], %{{.+}} {offsets = [0], strides = [1]} : vector<1xindex> into vector<5xindex>
+//       CHECK:   %[[INS0:.+]] = vector.insert_strided_slice %[[STEP]], %{{.+}} offsets = [0], strides = [1] : vector<1xindex> into vector<5xindex>
 //       CHECK:   %[[ADD1:.+]] = arith.addi %[[STEP]], %[[CST1]] : vector<1xindex>
-//       CHECK:   %[[INS1:.+]] = vector.insert_strided_slice %[[ADD1]], %[[INS0]] {offsets = [1], strides = [1]} : vector<1xindex> into vector<5xindex>
+//       CHECK:   %[[INS1:.+]] = vector.insert_strided_slice %[[ADD1]], %[[INS0]] offsets = [1], strides = [1] : vector<1xindex> into vector<5xindex>
 //       CHECK:   %[[ADD2:.+]] = arith.addi %[[STEP]], %[[CST2]] : vector<1xindex>
-//       CHECK:   %[[INS2:.+]] = vector.insert_strided_slice %[[ADD2]], %[[INS1]] {offsets = [2], strides = [1]} : vector<1xindex> into vector<5xindex>
+//       CHECK:   %[[INS2:.+]] = vector.insert_strided_slice %[[ADD2]], %[[INS1]] offsets = [2], strides = [1] : vector<1xindex> into vector<5xindex>
 //       CHECK:   %[[ADD3:.+]] = arith.addi %[[STEP]], %[[CST3]] : vector<1xindex>
-//       CHECK:   %[[INS3:.+]] = vector.insert_strided_slice %[[ADD3]], %[[INS2]] {offsets = [3], strides = [1]} : vector<1xindex> into vector<5xindex>
+//       CHECK:   %[[INS3:.+]] = vector.insert_strided_slice %[[ADD3]], %[[INS2]] offsets = [3], strides = [1] : vector<1xindex> into vector<5xindex>
 //       CHECK:   %[[ADD4:.+]] = arith.addi %[[STEP]], %[[CST4]] : vector<1xindex>
-//       CHECK:   %[[INS4:.+]] = vector.insert_strided_slice %[[ADD4]], %[[INS3]] {offsets = [4], strides = [1]} : vector<1xindex> into vector<5xindex>
+//       CHECK:   %[[INS4:.+]] = vector.insert_strided_slice %[[ADD4]], %[[INS3]] offsets = [4], strides = [1] : vector<1xindex> into vector<5xindex>
 //       CHECK:   vector.store %[[INS4]], %{{.+}}[%{{.+}}] : memref<5xindex>, vector<5xindex>
 func.func @step_unroll(%dest: memref<5xindex>) {
   %c0 = arith.constant 0 : index
diff --git a/compiler/src/iree/compiler/Codegen/SPIRV/test/lowering_matmul_fusion.mlir b/compiler/src/iree/compiler/Codegen/SPIRV/test/lowering_matmul_fusion.mlir
index 5a279ec..ac52bf9 100644
--- a/compiler/src/iree/compiler/Codegen/SPIRV/test/lowering_matmul_fusion.mlir
+++ b/compiler/src/iree/compiler/Codegen/SPIRV/test/lowering_matmul_fusion.mlir
@@ -84,9 +84,9 @@
 //           CHECK:     %[[SCALE0:.+]] = vector.transfer_read %[[SCALE_SUB]]
 //           CHECK:     %[[SCALE1:.+]] = vector.transfer_read %[[SCALE_SUB]]
 //           CHECK:     %[[ZP:.+]] = vector.transfer_read %[[ZP_SUB]]
-//           CHECK:     %[[SLICE0:.+]] = vector.extract_strided_slice %[[ZP]] {offsets = [0], sizes = [4], strides = [1]} : vector<8xi4> to vector<4xi4>
+//           CHECK:     %[[SLICE0:.+]] = vector.extract_strided_slice %[[ZP]] offsets = [0], sizes = [4], strides = [1] : vector<8xi4> to vector<4xi4>
 //           CHECK:     %[[ZP_EXT0:.+]] = arith.extsi %[[SLICE0]] : vector<4xi4> to vector<4xi32>
-//           CHECK:     %[[SLICE1:.+]] = vector.extract_strided_slice %[[ZP]] {offsets = [4], sizes = [4], strides = [1]} : vector<8xi4> to vector<4xi4>
+//           CHECK:     %[[SLICE1:.+]] = vector.extract_strided_slice %[[ZP]] offsets = [4], sizes = [4], strides = [1] : vector<8xi4> to vector<4xi4>
 //           CHECK:     %[[ZP_EXT1:.+]] = arith.extsi %[[SLICE1]] : vector<4xi4> to vector<4xi32>
 
 //           CHECK:     scf.for %arg5 = %c0 to %c96 step %c32 iter_args({{.+}}) -> (vector<4xf32>, vector<4xf32>, vector<4xf32>, vector<4xf32>, vector<4xf32>)
diff --git a/compiler/src/iree/compiler/Codegen/SPIRV/test/lowering_reduction.mlir b/compiler/src/iree/compiler/Codegen/SPIRV/test/lowering_reduction.mlir
index b0560c2..bd47786 100644
--- a/compiler/src/iree/compiler/Codegen/SPIRV/test/lowering_reduction.mlir
+++ b/compiler/src/iree/compiler/Codegen/SPIRV/test/lowering_reduction.mlir
@@ -146,12 +146,12 @@
 //         CHECK:      scf.for %[[IV:.+]] = %[[C0]] to %[[C9216]] step %[[C1024]] {
 //         CHECK:        %[[OFFSET:.+]] = affine.apply {{.*}}(%[[IV]])[%[[TIDX]]]
 //         CHECK:        %[[READ:.+]] = vector.transfer_read %[[SPAN0]][%[[DELIN]]#0, %[[DELIN]]#1, %[[OFFSET]]], %[[PV]] {in_bounds = [true]} : memref<10x9216x9216xf16{{.*}}>, vector<8xf16>
-//         CHECK:        %[[SLICE0:.+]] = vector.extract_strided_slice %[[READ]] {offsets = [0], sizes = [4], strides = [1]}
+//         CHECK:        %[[SLICE0:.+]] = vector.extract_strided_slice %[[READ]] offsets = [0], sizes = [4], strides = [1]
 //         CHECK:        %[[DIV0:.+]] = arith.divf %[[SLICE0]], %[[BROADCAST]] : vector<4xf16>
-//         CHECK:        %[[SLICE1:.+]] = vector.insert_strided_slice %[[DIV0]], %cst {offsets = [0], strides = [1]}
-//         CHECK:        %[[SLICE2:.+]] = vector.extract_strided_slice %[[READ]] {offsets = [4], sizes = [4], strides = [1]}
+//         CHECK:        %[[SLICE1:.+]] = vector.insert_strided_slice %[[DIV0]], %cst offsets = [0], strides = [1]
+//         CHECK:        %[[SLICE2:.+]] = vector.extract_strided_slice %[[READ]] offsets = [4], sizes = [4], strides = [1]
 //         CHECK:        %[[DIV1:.+]] = arith.divf %[[SLICE2]], %[[BROADCAST]] : vector<4xf16>
-//         CHECK:        %[[SLICE3:.+]] = vector.insert_strided_slice %[[DIV1]], %[[SLICE1]] {offsets = [4], strides = [1]}
+//         CHECK:        %[[SLICE3:.+]] = vector.insert_strided_slice %[[DIV1]], %[[SLICE1]] offsets = [4], strides = [1]
 //         CHECK:        vector.transfer_write %[[SLICE3]], %[[SPAN1]][%[[DELIN]]#0, %[[DELIN]]#1, %{{.*}}] {in_bounds = [true]} : vector<8xf16>, memref<10x9216x9216xf16{{.*}}>
 //         CHECK:      }
 //         CHECK:    }
diff --git a/compiler/src/iree/compiler/Codegen/SPIRV/test/tile_and_promote_cooperative_matrix.mlir b/compiler/src/iree/compiler/Codegen/SPIRV/test/tile_and_promote_cooperative_matrix.mlir
index 3ebe1d1..274d3c8 100644
--- a/compiler/src/iree/compiler/Codegen/SPIRV/test/tile_and_promote_cooperative_matrix.mlir
+++ b/compiler/src/iree/compiler/Codegen/SPIRV/test/tile_and_promote_cooperative_matrix.mlir
@@ -374,7 +374,7 @@
       %subview = memref.subview %2[0, %arg0, %arg1] [1, 64, 128] [1, 1, 1] : memref<1x4096x4096xf32> to memref<1x64x128xf32, strided<[16777216, 4096, 1], offset: ?>>
       %subview_0 = memref.subview %0[0, %arg0, 0] [1, 64, 512] [1, 1, 1] : memref<1x4096x512xf16> to memref<1x64x512xf16, strided<[2097152, 512, 1], offset: ?>>
       %subview_1 = memref.subview %1[0, 0, %arg1] [1, 512, 128] [1, 1, 1] : memref<1x512x4096xf16> to memref<1x512x128xf16, strided<[2097152, 4096, 1], offset: ?>>
-      %alloc = memref.alloc() {alignment = 128 : i64} : memref<1x64x128xf16, #gpu.address_space<workgroup>>
+      %alloc = memref.alloc() alignment = 128 : memref<1x64x128xf16, #gpu.address_space<workgroup>>
       linalg.fill ins(%cst : f16) outs(%alloc : memref<1x64x128xf16, #gpu.address_space<workgroup>>)
       linalg.batch_matmul {lowering_config = #config} ins(%subview_0, %subview_1 : memref<1x64x512xf16, strided<[2097152, 512, 1], offset: ?>>, memref<1x512x128xf16, strided<[2097152, 4096, 1], offset: ?>>) outs(%alloc : memref<1x64x128xf16, #gpu.address_space<workgroup>>)
       linalg.generic {indexing_maps = [#map2, #map2], iterator_types = ["parallel", "parallel", "parallel"]} ins(%alloc : memref<1x64x128xf16, #gpu.address_space<workgroup>>) outs(%subview : memref<1x64x128xf32, strided<[16777216, 4096, 1], offset: ?>>) {
@@ -391,7 +391,7 @@
 
 //  PROMOTEC-DAG: %[[LHS_ALLOC:.+]] = memref.alloc() : memref<1x64x32xf16, #gpu.address_space<workgroup>>
 //  PROMOTEC-DAG: %[[RHS_ALLOC:.+]] = memref.alloc() : memref<1x32x128xf16, #gpu.address_space<workgroup>>
-//  PROMOTEC-DAG: %[[C_ALLOC:.+]] = memref.alloc() {alignment = 128 : i64} : memref<1x64x128xf16, #gpu.address_space<workgroup>>
+//  PROMOTEC-DAG: %[[C_ALLOC:.+]] = memref.alloc() alignment = 128 : memref<1x64x128xf16, #gpu.address_space<workgroup>>
 
 //      PROMOTEC: linalg.fill
 // PROMOTEC-SAME:   __internal_linalg_transform__ = "workgroup_memory"
diff --git a/compiler/src/iree/compiler/Codegen/SPIRV/test/vectorize_gather.mlir b/compiler/src/iree/compiler/Codegen/SPIRV/test/vectorize_gather.mlir
index e436221..c61c982 100644
--- a/compiler/src/iree/compiler/Codegen/SPIRV/test/vectorize_gather.mlir
+++ b/compiler/src/iree/compiler/Codegen/SPIRV/test/vectorize_gather.mlir
@@ -59,5 +59,5 @@
 // CHECK:       %[[EXTRACT3:.+]] = vector.extract %[[LOAD3]][0] : i8 from vector<1xi8>
 // CHECK:       %[[VEC:.+]] = vector.from_elements %[[EXTRACT0]], %[[EXTRACT1]], %[[EXTRACT2]], %[[EXTRACT3]] : vector<4xi8>
 
-// CHECK:       vector.insert_strided_slice %[[VEC]], %[[INIT]] {offsets = [0], strides = [1]} : vector<4xi8> into vector<16xi8>
+// CHECK:       vector.insert_strided_slice %[[VEC]], %[[INIT]] offsets = [0], strides = [1] : vector<4xi8> into vector<16xi8>
 // CHECK-COUNT-12: vector.load %[[ARG0]][%{{.+}}#0, %{{.+}}#1, %{{.+}}#2] : memref<16x1082x1922xi8>, vector<1xi8>
diff --git a/compiler/src/iree/compiler/Codegen/SPIRV/test/vectorize_load_store.mlir b/compiler/src/iree/compiler/Codegen/SPIRV/test/vectorize_load_store.mlir
index 2494d9b..810f15b 100644
--- a/compiler/src/iree/compiler/Codegen/SPIRV/test/vectorize_load_store.mlir
+++ b/compiler/src/iree/compiler/Codegen/SPIRV/test/vectorize_load_store.mlir
@@ -31,9 +31,9 @@
 //       BASE:   %[[LOAD2:.+]] = memref.load %[[ARG]][%[[IDX0]], %[[OFFSET2]]]
 //       BASE:   %[[VEC:.+]] = vector.shuffle %[[LOAD1]], %[[LOAD2]] [0, 1, 2, 3, 4, 5, 6, 7] : vector<4xf32>, vector<4xf32>
 
-//       BASE:   %[[VEC0:.+]] = vector.extract_strided_slice %[[VEC]] {offsets = [0], sizes = [4], strides = [1]} : vector<8xf32> to vector<4xf32>
+//       BASE:   %[[VEC0:.+]] = vector.extract_strided_slice %[[VEC]] offsets = [0], sizes = [4], strides = [1] : vector<8xf32> to vector<4xf32>
 //       BASE:   memref.store %[[VEC0]], %[[ALLOC]][%[[IDX0]], %[[OFFSET1]]]
-//       BASE:   %[[VEC1:.+]] = vector.extract_strided_slice %[[VEC]] {offsets = [4], sizes = [4], strides = [1]} : vector<8xf32> to vector<4xf32>
+//       BASE:   %[[VEC1:.+]] = vector.extract_strided_slice %[[VEC]] offsets = [4], sizes = [4], strides = [1] : vector<8xf32> to vector<4xf32>
 //       BASE:   memref.store %[[VEC1]], %[[ALLOC]][%[[IDX0]], %4]
 
 // -----
@@ -386,15 +386,15 @@
 //  CHECK-SAME: (%[[I0:.+]]: index, %[[I1:.+]]: index)
 func.func @vectorize_alloc_with_mma_load_store(%i0: index, %i1: index) {
   %alloc = memref.alloc() : memref<32x32xf16, 3>
-  %0 = gpu.subgroup_mma_load_matrix %alloc[%i0, %i1] {leadDimension = 32 : index} : memref<32x32xf16, 3> -> !gpu.mma_matrix<16x16xf16, "COp">
-  gpu.subgroup_mma_store_matrix %0, %alloc[%i0, %i1] {leadDimension = 32 : index} : !gpu.mma_matrix<16x16xf16, "COp">, memref<32x32xf16, 3>
+  %0 = gpu.subgroup_mma_load_matrix %alloc[%i0, %i1] leadDimension 32 : memref<32x32xf16, 3> -> !gpu.mma_matrix<16x16xf16, "COp">
+  gpu.subgroup_mma_store_matrix %0, %alloc[%i0, %i1] leadDimension 32 : !gpu.mma_matrix<16x16xf16, "COp">, memref<32x32xf16, 3>
   return
 }
 
 // CHECK: %[[ALLOC:.+]] = memref.alloc() : memref<32x4xvector<4xf32>, 3>
 // CHECK: %[[IDX:.+]] = affine.apply affine_map<()[s0] -> (s0 floordiv 8)>()[%[[I1]]]
-// CHECK: %[[LD:.+]] = gpu.subgroup_mma_load_matrix %[[ALLOC]][%[[I0]], %[[IDX]]] {leadDimension = 4 : index} : memref<32x4xvector<4xf32>, 3> -> !gpu.mma_matrix<16x16xf16, "COp">
-// CHECK: gpu.subgroup_mma_store_matrix %[[LD]], %[[ALLOC]][%[[I0]], %[[IDX]]] {leadDimension = 4 : index} : !gpu.mma_matrix<16x16xf16, "COp">, memref<32x4xvector<4xf32>, 3>
+// CHECK: %[[LD:.+]] = gpu.subgroup_mma_load_matrix %[[ALLOC]][%[[I0]], %[[IDX]]] leadDimension 4 : memref<32x4xvector<4xf32>, 3> -> !gpu.mma_matrix<16x16xf16, "COp">
+// CHECK: gpu.subgroup_mma_store_matrix %[[LD]], %[[ALLOC]][%[[I0]], %[[IDX]]] leadDimension 4 : !gpu.mma_matrix<16x16xf16, "COp">, memref<32x4xvector<4xf32>, 3>
 
 // -----
 
@@ -402,32 +402,32 @@
 //  CHECK-SAME: (%[[I0:.+]]: index, %[[I1:.+]]: index)
 func.func @vectorize_alloc_with_mma_load_store(%i0: index, %i1: index) {
   %alloc = memref.alloc() : memref<32x32xf16, 3>
-  %0 = gpu.subgroup_mma_load_matrix %alloc[%i0, %i1] {leadDimension = 16 : index} : memref<32x32xf16, 3> -> !gpu.mma_matrix<16x16xf16, "COp">
-  gpu.subgroup_mma_store_matrix %0, %alloc[%i0, %i1] {leadDimension = 16 : index} : !gpu.mma_matrix<16x16xf16, "COp">, memref<32x32xf16, 3>
+  %0 = gpu.subgroup_mma_load_matrix %alloc[%i0, %i1] leadDimension 16 : memref<32x32xf16, 3> -> !gpu.mma_matrix<16x16xf16, "COp">
+  gpu.subgroup_mma_store_matrix %0, %alloc[%i0, %i1] leadDimension 16 : !gpu.mma_matrix<16x16xf16, "COp">, memref<32x32xf16, 3>
   return
 }
 
 //      CHECK: affine.apply affine_map<()[s0] -> (s0 floordiv 8)>()
 //      CHECK: gpu.subgroup_mma_load_matrix
-// CHECK-SAME:   leadDimension = 2 : index
+// CHECK-SAME:   leadDimension 2
 //      CHECK: gpu.subgroup_mma_store_matrix
-// CHECK-SAME:   leadDimension = 2 : index
+// CHECK-SAME:   leadDimension 2
 
 // -----
 
 // CHECK-LABEL: func.func @vectorize_alloc_with_mma_load_store_unaligned_case
 func.func @vectorize_alloc_with_mma_load_store_unaligned_case(%i0: index, %i1: index) {
   %alloc = memref.alloc() : memref<32x32xf16, 3>
-  %0 = gpu.subgroup_mma_load_matrix %alloc[%i0, %i1] {leadDimension = 18 : index} : memref<32x32xf16, 3> -> !gpu.mma_matrix<16x16xf16, "COp">
-  gpu.subgroup_mma_store_matrix %0, %alloc[%i0, %i1] {leadDimension = 18 : index} : !gpu.mma_matrix<16x16xf16, "COp">, memref<32x32xf16, 3>
+  %0 = gpu.subgroup_mma_load_matrix %alloc[%i0, %i1] leadDimension 18 : memref<32x32xf16, 3> -> !gpu.mma_matrix<16x16xf16, "COp">
+  gpu.subgroup_mma_store_matrix %0, %alloc[%i0, %i1] leadDimension 18 : !gpu.mma_matrix<16x16xf16, "COp">, memref<32x32xf16, 3>
   return
 }
 
 //  CHECK-NOT: affine.apply
 //      CHECK: gpu.subgroup_mma_load_matrix
-// CHECK-SAME:   leadDimension = 18 : index
+// CHECK-SAME:   leadDimension 18
 //      CHECK: gpu.subgroup_mma_store_matrix
-// CHECK-SAME:   leadDimension = 18 : index
+// CHECK-SAME:   leadDimension 18
 
 // -----
 
@@ -485,8 +485,8 @@
   %c0 = arith.constant 0 : index
   %span0 = hal.interface.binding.subspan layout(#pipeline_layout) binding(0) alignment(64) offset(%c0) flags(ReadOnly) : memref<32x1280xf16, strided<[1280, 1], offset: 11840>, #hal.descriptor_type<storage_buffer>>
   %span1 = hal.interface.binding.subspan layout(#pipeline_layout) binding(1) alignment(64) offset(%c0) : memref<32x1280xf16, strided<[1280, 1], offset: 11840>, #hal.descriptor_type<storage_buffer>>
-  %val = gpu.subgroup_mma_load_matrix %span0[%i0, %i1] {leadDimension = 1280 : index} : memref<32x1280xf16, strided<[1280, 1], offset: 11840>, #hal.descriptor_type<storage_buffer>> -> !gpu.mma_matrix<16x16xf16, "COp">
-  gpu.subgroup_mma_store_matrix %val, %span1[%i0, %i1] {leadDimension = 1280 : index} : !gpu.mma_matrix<16x16xf16, "COp">, memref<32x1280xf16, strided<[1280, 1], offset: 11840>, #hal.descriptor_type<storage_buffer>>
+  %val = gpu.subgroup_mma_load_matrix %span0[%i0, %i1] leadDimension 1280 : memref<32x1280xf16, strided<[1280, 1], offset: 11840>, #hal.descriptor_type<storage_buffer>> -> !gpu.mma_matrix<16x16xf16, "COp">
+  gpu.subgroup_mma_store_matrix %val, %span1[%i0, %i1] leadDimension 1280 : !gpu.mma_matrix<16x16xf16, "COp">, memref<32x1280xf16, strided<[1280, 1], offset: 11840>, #hal.descriptor_type<storage_buffer>>
   return
 }
 
@@ -494,8 +494,8 @@
 // CHECK: %[[SPAN0:.+]] = hal.interface.binding.subspan {{.+}} offset(%[[C0]]) flags(ReadOnly) : memref<32x160xvector<4xf32>, strided<[160, 1], offset: 1480>, #hal.descriptor_type<storage_buffer>>
 // CHECK: %[[SPAN1:.+]] = hal.interface.binding.subspan {{.+}} offset(%[[C0]]) : memref<32x160xvector<4xf32>, strided<[160, 1], offset: 1480>, #hal.descriptor_type<storage_buffer>>
 // CHECK: %[[APPLY:.+]] = affine.apply affine_map<()[s0] -> (s0 floordiv 8)>()[%[[I1]]]
-// CHECK: %[[VAL:.+]] = gpu.subgroup_mma_load_matrix %[[SPAN0]][%[[I0]], %[[APPLY]]] {leadDimension = 160 : index}
-// CHECK: gpu.subgroup_mma_store_matrix %[[VAL]], %[[SPAN1]][%[[I0]], %[[APPLY]]] {leadDimension = 160 : index}
+// CHECK: %[[VAL:.+]] = gpu.subgroup_mma_load_matrix %[[SPAN0]][%[[I0]], %[[APPLY]]] leadDimension 160
+// CHECK: gpu.subgroup_mma_store_matrix %[[VAL]], %[[SPAN1]][%[[I0]], %[[APPLY]]] leadDimension 160
 
 // -----
 
@@ -599,10 +599,10 @@
 //       CHECK:   %[[LOAD2:.+]] = memref.load %[[SUBSPAN]][%[[OFFSET2]]]
 //       CHECK:   %[[OFFSET3:.+]] = affine.apply affine_map<()[s0] -> (s0 floordiv 2 + 3)>()[%[[INDEX]]]
 //       CHECK:   %[[LOAD3:.+]] = memref.load %[[SUBSPAN]][%[[OFFSET3]]]
-//       CHECK:   %[[INSERT0:.+]] = vector.insert_strided_slice %[[LOAD0]], %[[INIT]] {offsets = [0], strides = [1]} : vector<2xi32> into vector<8xi32>
-//       CHECK:   %[[INSERT1:.+]] = vector.insert_strided_slice %[[LOAD1]], %[[INSERT0]] {offsets = [2], strides = [1]} : vector<2xi32> into vector<8xi32>
-//       CHECK:   %[[INSERT2:.+]] = vector.insert_strided_slice %[[LOAD2]], %[[INSERT1]] {offsets = [4], strides = [1]} : vector<2xi32> into vector<8xi32>
-//       CHECK:   %[[INSERT3:.+]] = vector.insert_strided_slice %[[LOAD3]], %[[INSERT2]] {offsets = [6], strides = [1]} : vector<2xi32> into vector<8xi32>
+//       CHECK:   %[[INSERT0:.+]] = vector.insert_strided_slice %[[LOAD0]], %[[INIT]] offsets = [0], strides = [1] : vector<2xi32> into vector<8xi32>
+//       CHECK:   %[[INSERT1:.+]] = vector.insert_strided_slice %[[LOAD1]], %[[INSERT0]] offsets = [2], strides = [1] : vector<2xi32> into vector<8xi32>
+//       CHECK:   %[[INSERT2:.+]] = vector.insert_strided_slice %[[LOAD2]], %[[INSERT1]] offsets = [4], strides = [1] : vector<2xi32> into vector<8xi32>
+//       CHECK:   %[[INSERT3:.+]] = vector.insert_strided_slice %[[LOAD3]], %[[INSERT2]] offsets = [6], strides = [1] : vector<2xi32> into vector<8xi32>
 //       CHECK:   return %[[LOAD0]], %[[INSERT3]]
 
 // -----
@@ -626,15 +626,15 @@
 //       CHECK:   %[[OFFSET0:.+]] = affine.apply affine_map<()[s0] -> (s0 floordiv 2)>()[%[[INDEX]]]
 //       CHECK:   memref.store %[[VAL0]], %[[SUBSPAN]][%[[OFFSET0]]]
 
-//       CHECK:   %[[SLICE0:.+]] = vector.extract_strided_slice %[[VAL1]] {offsets = [0], sizes = [2], strides = [1]} : vector<8xi32> to vector<2xi32>
+//       CHECK:   %[[SLICE0:.+]] = vector.extract_strided_slice %[[VAL1]] offsets = [0], sizes = [2], strides = [1] : vector<8xi32> to vector<2xi32>
 //       CHECK:   memref.store %[[SLICE0]], %[[SUBSPAN]][%[[OFFSET0]]]
-//       CHECK:   %[[SLICE1:.+]] = vector.extract_strided_slice %[[VAL1]] {offsets = [2], sizes = [2], strides = [1]} : vector<8xi32> to vector<2xi32>
+//       CHECK:   %[[SLICE1:.+]] = vector.extract_strided_slice %[[VAL1]] offsets = [2], sizes = [2], strides = [1] : vector<8xi32> to vector<2xi32>
 //       CHECK:   %[[OFFSET1:.+]] = affine.apply affine_map<()[s0] -> (s0 floordiv 2 + 1)>()[%[[INDEX]]]
 //       CHECK:   memref.store %[[SLICE1]], %[[SUBSPAN]][%[[OFFSET1]]]
-//       CHECK:   %[[SLICE2:.+]] = vector.extract_strided_slice %[[VAL1]] {offsets = [4], sizes = [2], strides = [1]} : vector<8xi32> to vector<2xi32>
+//       CHECK:   %[[SLICE2:.+]] = vector.extract_strided_slice %[[VAL1]] offsets = [4], sizes = [2], strides = [1] : vector<8xi32> to vector<2xi32>
 //       CHECK:   %[[OFFSET2:.+]] = affine.apply affine_map<()[s0] -> (s0 floordiv 2 + 2)>()[%[[INDEX]]]
 //       CHECK:   memref.store %[[SLICE2]], %[[SUBSPAN]][%[[OFFSET2]]]
-//       CHECK:   %[[SLICE3:.+]] = vector.extract_strided_slice %[[VAL1]] {offsets = [6], sizes = [2], strides = [1]} : vector<8xi32> to vector<2xi32>
+//       CHECK:   %[[SLICE3:.+]] = vector.extract_strided_slice %[[VAL1]] offsets = [6], sizes = [2], strides = [1] : vector<8xi32> to vector<2xi32>
 //       CHECK:   %[[OFFSET3:.+]] = affine.apply affine_map<()[s0] -> (s0 floordiv 2 + 3)>()[%[[INDEX]]]
 //       CHECK:   memref.store %[[SLICE3]], %[[SUBSPAN]][%[[OFFSET3]]]
 
diff --git a/compiler/src/iree/compiler/Codegen/SPIRV/test/vectorize_matmul.mlir b/compiler/src/iree/compiler/Codegen/SPIRV/test/vectorize_matmul.mlir
index ad195d3..58d9c2b 100644
--- a/compiler/src/iree/compiler/Codegen/SPIRV/test/vectorize_matmul.mlir
+++ b/compiler/src/iree/compiler/Codegen/SPIRV/test/vectorize_matmul.mlir
@@ -172,30 +172,30 @@
 //  CHECK-COUNT-2:     vector.transfer_read %[[LHS]]{{.+}} : tensor<2x128xf16>, vector<8xf16>
 //  CHECK-COUNT-8:     vector.transfer_read %[[RHS]]{{.+}} : tensor<128x8xf16>, vector<8xf16>
 // CHECK-COUNT-32:     vector.fma {{.+}} : vector<4xf16>
-//          CHECK:     %[[ISS0:.+]] = vector.insert_strided_slice %{{.+}}, %[[ZERO]] {offsets = [0], strides = [1]} : vector<4xf16> into vector<8xf16>
-//          CHECK:     %[[ISS1:.+]] = vector.insert_strided_slice %{{.+}}, %[[ISS0]] {offsets = [4], strides = [1]} : vector<4xf16> into vector<8xf16>
-//          CHECK:     %[[ISS2:.+]] = vector.insert_strided_slice %{{.+}}, %[[ZERO]] {offsets = [0], strides = [1]} : vector<4xf16> into vector<8xf16>
-//          CHECK:     %[[ISS3:.+]] = vector.insert_strided_slice %{{.+}}, %[[ISS2]] {offsets = [4], strides = [1]} : vector<4xf16> into vector<8xf16>
+//          CHECK:     %[[ISS0:.+]] = vector.insert_strided_slice %{{.+}}, %[[ZERO]] offsets = [0], strides = [1] : vector<4xf16> into vector<8xf16>
+//          CHECK:     %[[ISS1:.+]] = vector.insert_strided_slice %{{.+}}, %[[ISS0]] offsets = [4], strides = [1] : vector<4xf16> into vector<8xf16>
+//          CHECK:     %[[ISS2:.+]] = vector.insert_strided_slice %{{.+}}, %[[ZERO]] offsets = [0], strides = [1] : vector<4xf16> into vector<8xf16>
+//          CHECK:     %[[ISS3:.+]] = vector.insert_strided_slice %{{.+}}, %[[ISS2]] offsets = [4], strides = [1] : vector<4xf16> into vector<8xf16>
 //          CHECK:     scf.yield %[[ISS1]], %[[ISS3]] : vector<8xf16>, vector<8xf16>
 //          CHECK:   }
 // CHECK:   %[[X0:.+]] = vector.transfer_read %[[X]]{{.+}} : tensor<2x8xf16>, vector<8xf16>
 // CHECK:   %[[X1:.+]] = vector.transfer_read %[[X]]{{.+}} : tensor<2x8xf16>, vector<8xf16>
-// CHECK:   %[[LHS0:.+]] = vector.extract_strided_slice %[[FOR]]#0 {offsets = [0], sizes = [4], strides = [1]} : vector<8xf16> to vector<4xf16>
-// CHECK:   %[[RHS0:.+]] = vector.extract_strided_slice %[[X0]] {offsets = [0], sizes = [4], strides = [1]} : vector<8xf16> to vector<4xf16>
+// CHECK:   %[[LHS0:.+]] = vector.extract_strided_slice %[[FOR]]#0 offsets = [0], sizes = [4], strides = [1] : vector<8xf16> to vector<4xf16>
+// CHECK:   %[[RHS0:.+]] = vector.extract_strided_slice %[[X0]] offsets = [0], sizes = [4], strides = [1] : vector<8xf16> to vector<4xf16>
 // CHECK:   %[[DIV0:.+]] = arith.divf %[[LHS0]], %[[RHS0]]
-// CHECK:   %[[ISS0:.+]] = vector.insert_strided_slice %[[DIV0]], %[[ZERO]] {offsets = [0], strides = [1]} : vector<4xf16> into vector<8xf16>
-// CHECK:   %[[LHS1:.+]] = vector.extract_strided_slice %[[FOR]]#0 {offsets = [4], sizes = [4], strides = [1]} : vector<8xf16> to vector<4xf16>
-// CHECK:   %[[RHS1:.+]] = vector.extract_strided_slice %[[X0]] {offsets = [4], sizes = [4], strides = [1]} : vector<8xf16> to vector<4xf16>
+// CHECK:   %[[ISS0:.+]] = vector.insert_strided_slice %[[DIV0]], %[[ZERO]] offsets = [0], strides = [1] : vector<4xf16> into vector<8xf16>
+// CHECK:   %[[LHS1:.+]] = vector.extract_strided_slice %[[FOR]]#0 offsets = [4], sizes = [4], strides = [1] : vector<8xf16> to vector<4xf16>
+// CHECK:   %[[RHS1:.+]] = vector.extract_strided_slice %[[X0]] offsets = [4], sizes = [4], strides = [1] : vector<8xf16> to vector<4xf16>
 // CHECK:   %[[DIV1:.+]] = arith.divf %[[LHS1]], %[[RHS1]]
-// CHECK:   %[[ISS1:.+]] = vector.insert_strided_slice %[[DIV1]], %[[ISS0]] {offsets = [4], strides = [1]} : vector<4xf16> into vector<8xf16>
-// CHECK:   %[[LHS2:.+]] = vector.extract_strided_slice %[[FOR]]#1 {offsets = [0], sizes = [4], strides = [1]} : vector<8xf16> to vector<4xf16>
-// CHECK:   %[[RHS2:.+]] = vector.extract_strided_slice %[[X1]] {offsets = [0], sizes = [4], strides = [1]} : vector<8xf16> to vector<4xf16>
+// CHECK:   %[[ISS1:.+]] = vector.insert_strided_slice %[[DIV1]], %[[ISS0]] offsets = [4], strides = [1] : vector<4xf16> into vector<8xf16>
+// CHECK:   %[[LHS2:.+]] = vector.extract_strided_slice %[[FOR]]#1 offsets = [0], sizes = [4], strides = [1] : vector<8xf16> to vector<4xf16>
+// CHECK:   %[[RHS2:.+]] = vector.extract_strided_slice %[[X1]] offsets = [0], sizes = [4], strides = [1] : vector<8xf16> to vector<4xf16>
 // CHECK:   %[[DIV2:.+]] = arith.divf %[[LHS2]], %[[RHS2]]
-// CHECK:   %[[ISS2:.+]] = vector.insert_strided_slice %[[DIV2]], %[[ZERO]] {offsets = [0], strides = [1]} : vector<4xf16> into vector<8xf16>
-// CHECK:   %[[LHS3:.+]] = vector.extract_strided_slice %[[FOR]]#1 {offsets = [4], sizes = [4], strides = [1]} : vector<8xf16> to vector<4xf16>
-// CHECK:   %[[RHS3:.+]] = vector.extract_strided_slice %[[X1]] {offsets = [4], sizes = [4], strides = [1]} : vector<8xf16> to vector<4xf16>
+// CHECK:   %[[ISS2:.+]] = vector.insert_strided_slice %[[DIV2]], %[[ZERO]] offsets = [0], strides = [1] : vector<4xf16> into vector<8xf16>
+// CHECK:   %[[LHS3:.+]] = vector.extract_strided_slice %[[FOR]]#1 offsets = [4], sizes = [4], strides = [1] : vector<8xf16> to vector<4xf16>
+// CHECK:   %[[RHS3:.+]] = vector.extract_strided_slice %[[X1]] offsets = [4], sizes = [4], strides = [1] : vector<8xf16> to vector<4xf16>
 // CHECK:   %[[DIV3:.+]] = arith.divf %[[LHS3]], %[[RHS3]]
-// CHECK:   %[[ISS3:.+]] = vector.insert_strided_slice %[[DIV3]], %[[ISS2]] {offsets = [4], strides = [1]} : vector<4xf16> into vector<8xf16>
+// CHECK:   %[[ISS3:.+]] = vector.insert_strided_slice %[[DIV3]], %[[ISS2]] offsets = [4], strides = [1] : vector<4xf16> into vector<8xf16>
 // CHECK:   %[[W0:.+]] = vector.transfer_write %[[ISS1]], %[[Y]][%c0, %c0] {in_bounds = [true]} : vector<8xf16>, tensor<2x8xf16>
 // CHECK:   %[[W1:.+]] = vector.transfer_write %[[ISS3]], %[[W0]][%c1, %c0] {in_bounds = [true]} : vector<8xf16>, tensor<2x8xf16>
 // CHECK:   return %[[W1]]
diff --git a/third_party/llvm-project b/third_party/llvm-project
index d37fa5a..d98828d 160000
--- a/third_party/llvm-project
+++ b/third_party/llvm-project
@@ -1 +1 @@
-Subproject commit d37fa5a838db382c4138e9612616cb0ac4ef448a
+Subproject commit d98828d394e4967148f6992afc3f23662a8e17a8