[Mlir-commits] [mlir] [MLIR][Vector] Support vector reduction for xor/maxnumf/minnumf (PR #163310)
Andrzej WarzyĆski
llvmlistbot at llvm.org
Wed Oct 15 08:59:50 PDT 2025
================
@@ -243,6 +243,106 @@ func.func @vecdim_reduction_ori(%in: memref<256x512xi32>, %out: memref<256xi32>)
// CHECK: affine.store %[[final_red]], %{{.*}} : memref<256xi32>
// CHECK: }
+// -----
+
+func.func @vecdim_reduction_xori(%in: memref<256x512xi32>, %out: memref<256xi32>) {
+ %cst = arith.constant 0 : i32
+ affine.for %i = 0 to 256 {
+ %final_red = affine.for %j = 0 to 512 iter_args(%red_iter = %cst) -> (i32) {
+ %ld = affine.load %in[%i, %j] : memref<256x512xi32>
+ %xor = arith.xori %red_iter, %ld : i32
+ affine.yield %xor : i32
+ }
+ affine.store %final_red, %out[%i] : memref<256xi32>
+ }
+ return
+}
+
+// CHECK-LABEL: func.func @vecdim_reduction_xori(
+// CHECK-SAME: %[[ARG0:.*]]: memref<256x512xi32>,
+// CHECK-SAME: %[[ARG1:.*]]: memref<256xi32>) {
+// CHECK: %[[VAL_0:.*]] = arith.constant 0 : i32
+// CHECK: affine.for %[[VAL_1:.*]] = 0 to 256 {
+// CHECK: %[[VAL_2:.*]] = arith.constant dense<0> : vector<128xi32>
+// CHECK: %[[VAL_3:.*]] = affine.for %[[VAL_4:.*]] = 0 to 512 step 128 iter_args(%[[VAL_5:.*]] = %[[VAL_2]]) -> (vector<128xi32>) {
+// CHECK: %[[VAL_6:.*]] = ub.poison : i32
+// CHECK: %[[VAL_7:.*]] = vector.transfer_read %[[ARG0]]{{\[}}%[[VAL_1]], %[[VAL_4]]], %[[VAL_6]] : memref<256x512xi32>, vector<128xi32>
+// CHECK: %[[VAL_8:.*]] = arith.xori %[[VAL_5]], %[[VAL_7]] : vector<128xi32>
+// CHECK: affine.yield %[[VAL_8]] : vector<128xi32>
+// CHECK: }
+// CHECK: %[[VAL_9:.*]] = vector.reduction <xor>, %[[VAL_3]] : vector<128xi32> into i32
+// CHECK: affine.store %[[VAL_9]], %[[ARG1]]{{\[}}%[[VAL_1]]] : memref<256xi32>
+// CHECK: }
+// CHECK: return
+// CHECK: }
----------------
banach-space wrote:
Please use meaningful FileCheck variable names. See comprehensive guidelines here: https://mlir.llvm.org/getting_started/TestingGuide/
https://github.com/llvm/llvm-project/pull/163310
More information about the Mlir-commits
mailing list