diff --git a/mlir/include/mlir/Dialect/Vector/IR/VectorOps.td b/mlir/include/mlir/Dialect/Vector/IR/VectorOps.td --- a/mlir/include/mlir/Dialect/Vector/IR/VectorOps.td +++ b/mlir/include/mlir/Dialect/Vector/IR/VectorOps.td @@ -49,6 +49,8 @@ def COMBINING_KIND_AND : I32BitEnumAttrCaseBit<"AND", 8, "and">; def COMBINING_KIND_OR : I32BitEnumAttrCaseBit<"OR", 9, "or">; def COMBINING_KIND_XOR : I32BitEnumAttrCaseBit<"XOR", 10, "xor">; +def COMBINING_KIND_MINIMUMF : I32BitEnumAttrCaseBit<"MINIMUMF", 11, "minimumf">; +def COMBINING_KIND_MAXIMUMF : I32BitEnumAttrCaseBit<"MAXIMUMF", 12, "maximumf">; def CombiningKind : I32BitEnumAttr< "CombiningKind", @@ -56,7 +58,8 @@ [COMBINING_KIND_ADD, COMBINING_KIND_MUL, COMBINING_KIND_MINUI, COMBINING_KIND_MINSI, COMBINING_KIND_MINF, COMBINING_KIND_MAXUI, COMBINING_KIND_MAXSI, COMBINING_KIND_MAXF, COMBINING_KIND_AND, - COMBINING_KIND_OR, COMBINING_KIND_XOR]> { + COMBINING_KIND_OR, COMBINING_KIND_XOR, + COMBINING_KIND_MAXIMUMF, COMBINING_KIND_MINIMUMF]> { let cppNamespace = "::mlir::vector"; let genSpecializedAttr = 0; } diff --git a/mlir/lib/Conversion/VectorToLLVM/ConvertVectorToLLVM.cpp b/mlir/lib/Conversion/VectorToLLVM/ConvertVectorToLLVM.cpp --- a/mlir/lib/Conversion/VectorToLLVM/ConvertVectorToLLVM.cpp +++ b/mlir/lib/Conversion/VectorToLLVM/ConvertVectorToLLVM.cpp @@ -762,11 +762,11 @@ result = lowerReductionWithStartValue( rewriter, loc, llvmType, operand, acc, reassociateFPReductions); - } else if (kind == vector::CombiningKind::MINF) { + } else if (kind == vector::CombiningKind::MINIMUMF) { result = createFPReductionComparisonOpLowering( rewriter, loc, llvmType, operand, acc); - } else if (kind == vector::CombiningKind::MAXF) { + } else if (kind == vector::CombiningKind::MAXIMUMF) { result = createFPReductionComparisonOpLowering( rewriter, loc, llvmType, operand, acc); @@ -893,6 +893,10 @@ ReductionNeutralFPMin>( rewriter, loc, llvmType, operand, acc, maskOp.getMask()); break; + default: + return rewriter.notifyMatchFailure( + maskOp, + "lowering to LLVM is not implemented for this masked operation"); } // Replace `vector.mask` operation altogether. diff --git a/mlir/lib/Conversion/VectorToSPIRV/VectorToSPIRV.cpp b/mlir/lib/Conversion/VectorToSPIRV/VectorToSPIRV.cpp --- a/mlir/lib/Conversion/VectorToSPIRV/VectorToSPIRV.cpp +++ b/mlir/lib/Conversion/VectorToSPIRV/VectorToSPIRV.cpp @@ -391,7 +391,8 @@ INT_AND_FLOAT_CASE(ADD, IAddOp, FAddOp); INT_AND_FLOAT_CASE(MUL, IMulOp, FMulOp); - + INT_OR_FLOAT_CASE(MAXIMUMF, SPIRVFMaxOp); + INT_OR_FLOAT_CASE(MINIMUMF, SPIRVFMinOp); INT_OR_FLOAT_CASE(MAXF, SPIRVFMaxOp); INT_OR_FLOAT_CASE(MINF, SPIRVFMinOp); INT_OR_FLOAT_CASE(MINUI, SPIRVUMinOp); diff --git a/mlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp b/mlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp --- a/mlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp +++ b/mlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp @@ -505,10 +505,10 @@ .Case([&](auto op) { return CombiningKind::AND; }) .Case([&](auto op) { return CombiningKind::MAXSI; }) .Case([&](auto op) { return CombiningKind::MAXUI; }) - .Case([&](auto op) { return CombiningKind::MAXF; }) + .Case([&](auto op) { return CombiningKind::MAXIMUMF; }) .Case([&](auto op) { return CombiningKind::MINSI; }) .Case([&](auto op) { return CombiningKind::MINUI; }) - .Case([&](auto op) { return CombiningKind::MINF; }) + .Case([&](auto op) { return CombiningKind::MINIMUMF; }) .Case( [&](auto op) { return CombiningKind::MUL; }) .Case([&](auto op) { return CombiningKind::OR; }) @@ -2416,9 +2416,11 @@ switch (kind) { case vector::CombiningKind::ADD: case vector::CombiningKind::MAXF: + case vector::CombiningKind::MAXIMUMF: case vector::CombiningKind::MAXSI: case vector::CombiningKind::MAXUI: case vector::CombiningKind::MINF: + case vector::CombiningKind::MINIMUMF: case vector::CombiningKind::MINSI: case vector::CombiningKind::MINUI: return true; diff --git a/mlir/lib/Dialect/Vector/IR/VectorOps.cpp b/mlir/lib/Dialect/Vector/IR/VectorOps.cpp --- a/mlir/lib/Dialect/Vector/IR/VectorOps.cpp +++ b/mlir/lib/Dialect/Vector/IR/VectorOps.cpp @@ -125,6 +125,8 @@ return elementType.isIntOrIndex(); case CombiningKind::MINF: case CombiningKind::MAXF: + case CombiningKind::MINIMUMF: + case CombiningKind::MAXIMUMF: return llvm::isa(elementType); } return false; @@ -498,7 +500,7 @@ CombiningKind::MUL, vector); case arith::AtomicRMWKind::minf: return builder.create(vector.getLoc(), - CombiningKind::MINF, vector); + CombiningKind::MINIMUMF, vector); case arith::AtomicRMWKind::mins: return builder.create(vector.getLoc(), CombiningKind::MINSI, vector); @@ -507,7 +509,7 @@ CombiningKind::MINUI, vector); case arith::AtomicRMWKind::maxf: return builder.create(vector.getLoc(), - CombiningKind::MAXF, vector); + CombiningKind::MAXIMUMF, vector); case arith::AtomicRMWKind::maxs: return builder.create(vector.getLoc(), CombiningKind::MAXSI, vector); @@ -5835,11 +5837,13 @@ result = b.createOrFold(loc, v1, acc); break; case CombiningKind::MAXF: + case CombiningKind::MAXIMUMF: assert(llvm::isa(t1) && llvm::isa(tAcc) && "expected float values"); result = b.createOrFold(loc, v1, acc); break; case CombiningKind::MINF: + case CombiningKind::MINIMUMF: assert(llvm::isa(t1) && llvm::isa(tAcc) && "expected float values"); result = b.createOrFold(loc, v1, acc); diff --git a/mlir/lib/Dialect/Vector/Transforms/LowerVectorContract.cpp b/mlir/lib/Dialect/Vector/Transforms/LowerVectorContract.cpp --- a/mlir/lib/Dialect/Vector/Transforms/LowerVectorContract.cpp +++ b/mlir/lib/Dialect/Vector/Transforms/LowerVectorContract.cpp @@ -141,7 +141,8 @@ Value mul; if (isInt) { - if (kind == CombiningKind::MINF || kind == CombiningKind::MAXF) + if (kind == CombiningKind::MINF || kind == CombiningKind::MAXF || + kind == CombiningKind::MINIMUMF || kind == CombiningKind::MAXIMUMF) // Only valid for floating point types. return std::nullopt; mul = rewriter.create(loc, x, y); diff --git a/mlir/lib/Dialect/Vector/Transforms/LowerVectorScan.cpp b/mlir/lib/Dialect/Vector/Transforms/LowerVectorScan.cpp --- a/mlir/lib/Dialect/Vector/Transforms/LowerVectorScan.cpp +++ b/mlir/lib/Dialect/Vector/Transforms/LowerVectorScan.cpp @@ -87,9 +87,11 @@ combinedResult = rewriter.create(loc, x, y); break; case CombiningKind::MINF: + case CombiningKind::MINIMUMF: combinedResult = rewriter.create(loc, x, y); break; case CombiningKind::MAXF: + case CombiningKind::MAXIMUMF: combinedResult = rewriter.create(loc, x, y); break; } @@ -104,7 +106,9 @@ KindType type{KindType::INVALID}; switch (kind) { case CombiningKind::MINF: + case CombiningKind::MINIMUMF: case CombiningKind::MAXF: + case CombiningKind::MAXIMUMF: type = KindType::FLOAT; break; case CombiningKind::MINUI: diff --git a/mlir/test/Conversion/VectorToLLVM/vector-to-llvm.mlir b/mlir/test/Conversion/VectorToLLVM/vector-to-llvm.mlir --- a/mlir/test/Conversion/VectorToLLVM/vector-to-llvm.mlir +++ b/mlir/test/Conversion/VectorToLLVM/vector-to-llvm.mlir @@ -1317,11 +1317,11 @@ // ----- -func.func @reduce_fmax_f32(%arg0: vector<16xf32>, %arg1: f32) -> f32 { - %0 = vector.reduction , %arg0, %arg1 : vector<16xf32> into f32 +func.func @reduce_fmaximum_f32(%arg0: vector<16xf32>, %arg1: f32) -> f32 { + %0 = vector.reduction , %arg0, %arg1 : vector<16xf32> into f32 return %0 : f32 } -// CHECK-LABEL: @reduce_fmax_f32( +// CHECK-LABEL: @reduce_fmaximum_f32( // CHECK-SAME: %[[A:.*]]: vector<16xf32>, %[[B:.*]]: f32) // CHECK: %[[V:.*]] = llvm.intr.vector.reduce.fmaximum(%[[A]]) : (vector<16xf32>) -> f32 // CHECK: %[[R:.*]] = llvm.intr.maximum(%[[V]], %[[B]]) : (f32, f32) -> f32 @@ -1329,11 +1329,11 @@ // ----- -func.func @reduce_fmin_f32(%arg0: vector<16xf32>, %arg1: f32) -> f32 { - %0 = vector.reduction , %arg0, %arg1 : vector<16xf32> into f32 +func.func @reduce_fminimum_f32(%arg0: vector<16xf32>, %arg1: f32) -> f32 { + %0 = vector.reduction , %arg0, %arg1 : vector<16xf32> into f32 return %0 : f32 } -// CHECK-LABEL: @reduce_fmin_f32( +// CHECK-LABEL: @reduce_fminimum_f32( // CHECK-SAME: %[[A:.*]]: vector<16xf32>, %[[B:.*]]: f32) // CHECK: %[[V:.*]] = llvm.intr.vector.reduce.fminimum(%[[A]]) : (vector<16xf32>) -> f32 // CHECK: %[[R:.*]] = llvm.intr.minimum(%[[V]], %[[B]]) : (f32, f32) -> f32 diff --git a/mlir/test/Conversion/VectorToSPIRV/vector-to-spirv.mlir b/mlir/test/Conversion/VectorToSPIRV/vector-to-spirv.mlir --- a/mlir/test/Conversion/VectorToSPIRV/vector-to-spirv.mlir +++ b/mlir/test/Conversion/VectorToSPIRV/vector-to-spirv.mlir @@ -50,7 +50,7 @@ return %0 : vector<1xf32> } -// CHECK-LABEL: func @cl_reduction_maxf +// CHECK-LABEL: func @cl_reduction_maximumf // CHECK-SAME: (%[[V:.+]]: vector<3xf32>, %[[S:.+]]: f32) // CHECK: %[[S0:.+]] = spirv.CompositeExtract %[[V]][0 : i32] : vector<3xf32> // CHECK: %[[S1:.+]] = spirv.CompositeExtract %[[V]][1 : i32] : vector<3xf32> @@ -59,12 +59,12 @@ // CHECK: %[[MAX1:.+]] = spirv.CL.fmax %[[MAX0]], %[[S2]] // CHECK: %[[MAX2:.+]] = spirv.CL.fmax %[[MAX1]], %[[S]] // CHECK: return %[[MAX2]] -func.func @cl_reduction_maxf(%v : vector<3xf32>, %s: f32) -> f32 { - %reduce = vector.reduction , %v, %s : vector<3xf32> into f32 +func.func @cl_reduction_maximumf(%v : vector<3xf32>, %s: f32) -> f32 { + %reduce = vector.reduction , %v, %s : vector<3xf32> into f32 return %reduce : f32 } -// CHECK-LABEL: func @cl_reduction_minf +// CHECK-LABEL: func @cl_reduction_minimumf // CHECK-SAME: (%[[V:.+]]: vector<3xf32>, %[[S:.+]]: f32) // CHECK: %[[S0:.+]] = spirv.CompositeExtract %[[V]][0 : i32] : vector<3xf32> // CHECK: %[[S1:.+]] = spirv.CompositeExtract %[[V]][1 : i32] : vector<3xf32> @@ -73,8 +73,8 @@ // CHECK: %[[MIN1:.+]] = spirv.CL.fmin %[[MIN0]], %[[S2]] // CHECK: %[[MIN2:.+]] = spirv.CL.fmin %[[MIN1]], %[[S]] // CHECK: return %[[MIN2]] -func.func @cl_reduction_minf(%v : vector<3xf32>, %s: f32) -> f32 { - %reduce = vector.reduction , %v, %s : vector<3xf32> into f32 +func.func @cl_reduction_minimumf(%v : vector<3xf32>, %s: f32) -> f32 { + %reduce = vector.reduction , %v, %s : vector<3xf32> into f32 return %reduce : f32 } @@ -516,7 +516,7 @@ // ----- -// CHECK-LABEL: func @reduction_maxf +// CHECK-LABEL: func @reduction_maximumf // CHECK-SAME: (%[[V:.+]]: vector<3xf32>, %[[S:.+]]: f32) // CHECK: %[[S0:.+]] = spirv.CompositeExtract %[[V]][0 : i32] : vector<3xf32> // CHECK: %[[S1:.+]] = spirv.CompositeExtract %[[V]][1 : i32] : vector<3xf32> @@ -525,14 +525,14 @@ // CHECK: %[[MAX1:.+]] = spirv.GL.FMax %[[MAX0]], %[[S2]] // CHECK: %[[MAX2:.+]] = spirv.GL.FMax %[[MAX1]], %[[S]] // CHECK: return %[[MAX2]] -func.func @reduction_maxf(%v : vector<3xf32>, %s: f32) -> f32 { - %reduce = vector.reduction , %v, %s : vector<3xf32> into f32 +func.func @reduction_maximumf(%v : vector<3xf32>, %s: f32) -> f32 { + %reduce = vector.reduction , %v, %s : vector<3xf32> into f32 return %reduce : f32 } // ----- -// CHECK-LABEL: func @reduction_minf +// CHECK-LABEL: func @reduction_minimumf // CHECK-SAME: (%[[V:.+]]: vector<3xf32>, %[[S:.+]]: f32) // CHECK: %[[S0:.+]] = spirv.CompositeExtract %[[V]][0 : i32] : vector<3xf32> // CHECK: %[[S1:.+]] = spirv.CompositeExtract %[[V]][1 : i32] : vector<3xf32> @@ -541,8 +541,8 @@ // CHECK: %[[MIN1:.+]] = spirv.GL.FMin %[[MIN0]], %[[S2]] // CHECK: %[[MIN2:.+]] = spirv.GL.FMin %[[MIN1]], %[[S]] // CHECK: return %[[MIN2]] -func.func @reduction_minf(%v : vector<3xf32>, %s: f32) -> f32 { - %reduce = vector.reduction , %v, %s : vector<3xf32> into f32 +func.func @reduction_minimumf(%v : vector<3xf32>, %s: f32) -> f32 { + %reduce = vector.reduction , %v, %s : vector<3xf32> into f32 return %reduce : f32 } diff --git a/mlir/test/Dialect/Affine/SuperVectorize/vectorize_reduction.mlir b/mlir/test/Dialect/Affine/SuperVectorize/vectorize_reduction.mlir --- a/mlir/test/Dialect/Affine/SuperVectorize/vectorize_reduction.mlir +++ b/mlir/test/Dialect/Affine/SuperVectorize/vectorize_reduction.mlir @@ -50,7 +50,7 @@ // CHECK: %[[min:.*]] = arith.minf %[[red_iter]], %[[ld]] : vector<128xf32> // CHECK: affine.yield %[[min]] : vector<128xf32> // CHECK: } -// CHECK: %[[final_min:.*]] = vector.reduction , %[[vred:.*]] : vector<128xf32> into f32 +// CHECK: %[[final_min:.*]] = vector.reduction , %[[vred:.*]] : vector<128xf32> into f32 // CHECK: affine.store %[[final_min]], %{{.*}} : memref<256xf32> // CHECK: } @@ -77,7 +77,7 @@ // CHECK: %[[max:.*]] = arith.maxf %[[red_iter]], %[[ld]] : vector<128xf32> // CHECK: affine.yield %[[max]] : vector<128xf32> // CHECK: } -// CHECK: %[[final_max:.*]] = vector.reduction , %[[vred:.*]] : vector<128xf32> into f32 +// CHECK: %[[final_max:.*]] = vector.reduction , %[[vred:.*]] : vector<128xf32> into f32 // CHECK: affine.store %[[final_max]], %{{.*}} : memref<256xf32> // CHECK: } diff --git a/mlir/test/Dialect/Linalg/vectorization.mlir b/mlir/test/Dialect/Linalg/vectorization.mlir --- a/mlir/test/Dialect/Linalg/vectorization.mlir +++ b/mlir/test/Dialect/Linalg/vectorization.mlir @@ -1173,7 +1173,7 @@ func.func @red_max_2d(%arg0: tensor<4x4xf32>) -> tensor<4xf32> { // CHECK: %[[CMINF:.+]] = arith.constant dense<-3.402820e+38> : vector<4xf32> // CHECK: tensor.empty() : tensor<4xf32> - // CHECK: vector.multi_reduction , {{.*}}, %[[CMINF]] [1] : vector<4x4xf32> to vector<4xf32> + // CHECK: vector.multi_reduction , {{.*}}, %[[CMINF]] [1] : vector<4x4xf32> to vector<4xf32> // CHECK: vector.transfer_write {{.*}} : vector<4xf32>, tensor<4xf32> %ident = arith.constant -3.40282e+38 : f32 %init = tensor.empty() : tensor<4xf32> @@ -1204,7 +1204,7 @@ // CHECK: %[[CMAXF:.+]] = arith.constant dense<3.402820e+38> : vector<4xf32> // CHECK: tensor.empty() : tensor<4xf32> // CHECK: vector.transfer_read {{.*}} : tensor<4x4xf32>, vector<4x4xf32> - // CHECK: vector.multi_reduction , {{.*}}, %[[CMAXF]] [1] : vector<4x4xf32> to vector<4xf32> + // CHECK: vector.multi_reduction , {{.*}}, %[[CMAXF]] [1] : vector<4x4xf32> to vector<4xf32> // CHECK: vector.transfer_write {{.*}} : vector<4xf32>, tensor<4xf32> %maxf32 = arith.constant 3.40282e+38 : f32 %init = tensor.empty() : tensor<4xf32> diff --git a/mlir/test/Dialect/Vector/canonicalize.mlir b/mlir/test/Dialect/Vector/canonicalize.mlir --- a/mlir/test/Dialect/Vector/canonicalize.mlir +++ b/mlir/test/Dialect/Vector/canonicalize.mlir @@ -1992,13 +1992,13 @@ // ----- -// CHECK-LABEL: func @reduce_one_element_vector_maxf +// CHECK-LABEL: func @reduce_one_element_vector_maximumf // CHECK-SAME: (%[[V:.+]]: vector<1xf32>, %[[B:.+]]: f32) // CHECK: %[[A:.+]] = vector.extract %[[V]][0] : vector<1xf32> // CHECK: %[[S:.+]] = arith.maxf %[[A]], %[[B]] : f32 // CHECK: return %[[S]] -func.func @reduce_one_element_vector_maxf(%a : vector<1xf32>, %b: f32) -> f32 { - %s = vector.reduction , %a, %b : vector<1xf32> into f32 +func.func @reduce_one_element_vector_maximumf(%a : vector<1xf32>, %b: f32) -> f32 { + %s = vector.reduction , %a, %b : vector<1xf32> into f32 return %s : f32 } diff --git a/mlir/test/Dialect/Vector/ops.mlir b/mlir/test/Dialect/Vector/ops.mlir --- a/mlir/test/Dialect/Vector/ops.mlir +++ b/mlir/test/Dialect/Vector/ops.mlir @@ -547,9 +547,13 @@ vector.reduction , %arg0, %arg1 : vector<16xf32> into f32 // CHECK: vector.reduction , %{{.*}} : vector<16xf32> into f32 vector.reduction , %arg0 : vector<16xf32> into f32 - // CHECK: %[[X:.*]] = vector.reduction , %{{.*}} : vector<16xf32> into f32 + // CHECK: %[[X0:.*]] = vector.reduction , %{{.*}} : vector<16xf32> into f32 %0 = vector.reduction , %arg0 : vector<16xf32> into f32 - // CHECK: return %[[X]] : f32 + // CHECK: vector.reduction , %{{.*}} : vector<16xf32> into f32 + vector.reduction , %arg0 : vector<16xf32> into f32 + // CHECK: %[[X1:.*]] = vector.reduction , %{{.*}} : vector<16xf32> into f32 + %1 = vector.reduction , %arg0 : vector<16xf32> into f32 + // CHECK: return %[[X0]] : f32 return %0 : f32 } diff --git a/mlir/test/Integration/Dialect/Vector/CPU/test-reductions-f32-reassoc.mlir b/mlir/test/Integration/Dialect/Vector/CPU/test-reductions-f32-reassoc.mlir --- a/mlir/test/Integration/Dialect/Vector/CPU/test-reductions-f32-reassoc.mlir +++ b/mlir/test/Integration/Dialect/Vector/CPU/test-reductions-f32-reassoc.mlir @@ -27,10 +27,10 @@ %1 = vector.reduction , %v2 : vector<64xf32> into f32 vector.print %1 : f32 // CHECK: 6 - %2 = vector.reduction , %v2 : vector<64xf32> into f32 + %2 = vector.reduction , %v2 : vector<64xf32> into f32 vector.print %2 : f32 // CHECK: 1 - %3 = vector.reduction , %v2 : vector<64xf32> into f32 + %3 = vector.reduction , %v2 : vector<64xf32> into f32 vector.print %3 : f32 // CHECK: 3 diff --git a/mlir/test/Integration/Dialect/Vector/CPU/test-reductions-f32.mlir b/mlir/test/Integration/Dialect/Vector/CPU/test-reductions-f32.mlir --- a/mlir/test/Integration/Dialect/Vector/CPU/test-reductions-f32.mlir +++ b/mlir/test/Integration/Dialect/Vector/CPU/test-reductions-f32.mlir @@ -39,10 +39,10 @@ %1 = vector.reduction , %v9 : vector<10xf32> into f32 vector.print %1 : f32 // CHECK: -5760 - %2 = vector.reduction , %v9 : vector<10xf32> into f32 + %2 = vector.reduction , %v9 : vector<10xf32> into f32 vector.print %2 : f32 // CHECK: -16 - %3 = vector.reduction , %v9 : vector<10xf32> into f32 + %3 = vector.reduction , %v9 : vector<10xf32> into f32 vector.print %3 : f32 // CHECK: 5 diff --git a/mlir/test/Integration/Dialect/Vector/CPU/test-reductions-f64-reassoc.mlir b/mlir/test/Integration/Dialect/Vector/CPU/test-reductions-f64-reassoc.mlir --- a/mlir/test/Integration/Dialect/Vector/CPU/test-reductions-f64-reassoc.mlir +++ b/mlir/test/Integration/Dialect/Vector/CPU/test-reductions-f64-reassoc.mlir @@ -27,10 +27,10 @@ %1 = vector.reduction , %v2 : vector<64xf64> into f64 vector.print %1 : f64 // CHECK: 6 - %2 = vector.reduction , %v2 : vector<64xf64> into f64 + %2 = vector.reduction , %v2 : vector<64xf64> into f64 vector.print %2 : f64 // CHECK: 1 - %3 = vector.reduction , %v2 : vector<64xf64> into f64 + %3 = vector.reduction , %v2 : vector<64xf64> into f64 vector.print %3 : f64 // CHECK: 3 diff --git a/mlir/test/Integration/Dialect/Vector/CPU/test-reductions-f64.mlir b/mlir/test/Integration/Dialect/Vector/CPU/test-reductions-f64.mlir --- a/mlir/test/Integration/Dialect/Vector/CPU/test-reductions-f64.mlir +++ b/mlir/test/Integration/Dialect/Vector/CPU/test-reductions-f64.mlir @@ -39,10 +39,10 @@ %1 = vector.reduction , %v9 : vector<10xf64> into f64 vector.print %1 : f64 // CHECK: -5760 - %2 = vector.reduction , %v9 : vector<10xf64> into f64 + %2 = vector.reduction , %v9 : vector<10xf64> into f64 vector.print %2 : f64 // CHECK: -16 - %3 = vector.reduction , %v9 : vector<10xf64> into f64 + %3 = vector.reduction , %v9 : vector<10xf64> into f64 vector.print %3 : f64 // CHECK: 5