[Mlir-commits] [mlir] [MLIR] [Vector] Added canonicalizer for folding from_elements + transpose (PR #161841)
    Andrzej WarzyĆski 
    llvmlistbot at llvm.org
       
    Fri Oct 17 01:28:54 PDT 2025
    
    
  
================
@@ -308,6 +308,48 @@ func.func @constant_mask_transpose_to_transposed_constant_mask() -> (vector<2x3x
 
 // -----
 
+// CHECK-LABEL: transpose_from_elements_1d
+func.func @transpose_from_elements_1d(%el_0: i32, %el_1: i32) -> vector<2xi32> {
+  %v = vector.from_elements %el_0, %el_1 : vector<2xi32>
+  %t = vector.transpose %v, [0] : vector<2xi32> to vector<2xi32>
+  return %t : vector<2xi32>
+  // CHECK: %[[R:.*]] = vector.from_elements %[[EL_0:.*]], %[[EL_1:.*]] : vector<2xi32>
+  // CHECK-NOT: vector.transpose
+}
----------------
banach-space wrote:
1. Variable `R` is defined, but never used. Please fix by adding `return %[[R]]`.
2. Variables `EL_0`, `EL_1` should be defined near function signature and then re-used here.
Specifically:
```suggestion
// CHECK-LABEL: transpose_from_elements_1d
// CHECK-SAME:  %[[EL_0:.*]]: i32, %[[EL_1:.*]]: i32 
func.func @transpose_from_elements_1d(%el_0: i32, %el_1: i32) -> vector<2xi32> {
  %v = vector.from_elements %el_0, %el_1 : vector<2xi32>
  %t = vector.transpose %v, [0] : vector<2xi32> to vector<2xi32>
  return %t : vector<2xi32>
  // CHECK: %[[R:.*]] = vector.from_elements %[[EL_0]], %[[EL_1]] : vector<2xi32>
  // CHECK-NOT: vector.transpose
  // CHECK: return %[[R]]
}
```
Similar comment for other tests. For more details, see e.g. https://llvm.org/docs/CommandGuide/FileCheck.html#filecheck-string-substitution-blocks
https://github.com/llvm/llvm-project/pull/161841
    
    
More information about the Mlir-commits
mailing list