[Mlir-commits] [mlir] [mlir][arith] Add neutral element support to arith.maxnumf/arith.minnumf (PR #93278)
donald chen
llvmlistbot at llvm.org
Mon May 27 19:04:22 PDT 2024
================
@@ -407,3 +407,49 @@ module attributes {transform.with_named_sequence} {
transform.yield
}
}
+
+// -----
+
+// Checks we use nan as the neutral element for maxnumf op.
+func.func @generic_split_maxnumf(%in: tensor<32xf32>, %out: tensor<f32>) -> tensor<f32> {
+ %r = linalg.generic {indexing_maps = [affine_map<(d0) -> (d0)>,
+ affine_map<(d0) -> ()>],
+ iterator_types = ["reduction"]}
+ ins(%in : tensor<32xf32>)
+ outs(%out : tensor<f32>) {
+ ^bb0(%arg1: f32, %arg2: f32):
+ %y = arith.maxnumf %arg1, %arg2 : f32
+ linalg.yield %y : f32
+ } -> tensor<f32>
+ return %r : tensor<f32>
+}
+
+// CHECK-DAG: #[[$MAP0:.*]] = affine_map<(d0, d1) -> (d0, d1)>
+// CHECK-DAG: #[[$MAP1:.*]] = affine_map<(d0, d1) -> (d1)>
+// CHECK-DAG: #[[$MAP2:.*]] = affine_map<(d0) -> (d0)>
+// CHECK-DAG: #[[$MAP3:.*]] = affine_map<(d0) -> ()>
+// CHECK-LABEL: func @generic_split_maxnumf
+// CHECK-DAG: %[[ID:.*]] = arith.constant 0xFFC00000 : f32
+// CHECK-DAG: %[[I1:.*]] = tensor.expand_shape %{{.*}}[0, 1]] output_shape [8, 4] : tensor<32xf32> into tensor<8x4xf32>
+// CHECK-DAG: %[[INI:.*]] = tensor.empty() : tensor<4xf32>
+// CHECK: %[[F:.*]] = linalg.fill ins(%[[ID]] : f32) outs(%[[INI]] : tensor<4xf32>) -> tensor<4xf32>
----------------
cxy-1993 wrote:
Done
https://github.com/llvm/llvm-project/pull/93278
More information about the Mlir-commits
mailing list