[Mlir-commits] [mlir] [mlir][vector]add foldConstantOp fold function and apply it to extractOp and insertOp. (PR #124399)

lonely eagle llvmlistbot at llvm.org
Wed Jan 29 18:19:07 PST 2025


================

----------------
linuxlonelyeagle wrote:

This check-label approach is acceptable, and there are such checks in tests of other dialects.I should probably unify all my tests into the vector dialect format.Thank you.
```
// CHECK-LABEL: func @fold_insert_constant_indices

func.func @fold_insert_constant_indices(%arg : vector<4x1xi32>) -> vector<4x1xi32> {
  %0 = arith.constant 0 : index
  %1 = arith.constant 1 : i32
  %res = vector.insert %1, %arg[%0, %0] : i32 into vector<4x1xi32>
  return %res : vector<4x1xi32>
}


// CHECK-SAME: %[[ARG:.*]]: vector<4x1xi32>) -> vector<4x1xi32> {
// CHECK: %[[CAST:.*]] = builtin.unrealized_conversion_cast %[[ARG]] : vector<4x1xi32> to !llvm.array<4 x vector<1xi32>>
// CHECK: %[[C1:.*]] = arith.constant 1 : i32
// CHECK: %[[VEC_0:.*]] = llvm.extractvalue %[[CAST]][0] : !llvm.array<4 x vector<1xi32>>
// CHECK: %[[C0:.*]] = llvm.mlir.constant(0 : i64) : i64
// CHECK: %[[VEC_1:.*]] = llvm.insertelement %[[C1]], %[[VEC_0]]{{\[}}%[[C0]] : i64] : vector<1xi32>
// CHECK: %[[VEC_2:.*]] = llvm.insertvalue %[[VEC_1]], %[[CAST]][0] : !llvm.array<4 x vector<1xi32>>
// CHECK: %[[RES:.*]] = builtin.unrealized_conversion_cast %[[VEC_2]] : !llvm.array<4 x vector<1xi32>> to vector<4x1xi32>
// CHECK: return %[[RES]] : vector<4x1xi32>
```

https://github.com/llvm/llvm-project/pull/124399


More information about the Mlir-commits mailing list