[llvm-branch-commits] [flang] [flang][OpenMP] simplify getReductionName (PR #85666)
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Mon Mar 18 10:06:58 PDT 2024
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-flang-fir-hlfir
Author: Tom Eccles (tblah)
<details>
<summary>Changes</summary>
Re-use fir::getTypeAsString instead of creating something new here. This spells integer names like i32 instead of i_32 so there is a lot of test churn.
The idea was suggested by Kiran: https://github.com/llvm/llvm-project/pull/84958#discussion_r1527604388
---
Patch is 113.34 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/85666.diff
37 Files Affected:
- (modified) flang/lib/Lower/OpenMP/ReductionProcessor.cpp (+21-52)
- (modified) flang/lib/Lower/OpenMP/ReductionProcessor.h (+4-3)
- (modified) flang/test/Lower/OpenMP/FIR/wsloop-reduction-add-byref.f90 (+11-11)
- (modified) flang/test/Lower/OpenMP/FIR/wsloop-reduction-add.f90 (+11-11)
- (modified) flang/test/Lower/OpenMP/FIR/wsloop-reduction-iand-byref.f90 (+2-2)
- (modified) flang/test/Lower/OpenMP/FIR/wsloop-reduction-ieor-byref.f90 (+2-2)
- (modified) flang/test/Lower/OpenMP/FIR/wsloop-reduction-ior-byref.f90 (+2-2)
- (modified) flang/test/Lower/OpenMP/FIR/wsloop-reduction-max-byref.f90 (+4-4)
- (modified) flang/test/Lower/OpenMP/FIR/wsloop-reduction-min-byref.f90 (+4-4)
- (modified) flang/test/Lower/OpenMP/default-clause-byref.f90 (+1-1)
- (modified) flang/test/Lower/OpenMP/default-clause.f90 (+1-1)
- (modified) flang/test/Lower/OpenMP/parallel-reduction-array.f90 (+2-2)
- (modified) flang/test/Lower/OpenMP/parallel-reduction-array2.f90 (+2-2)
- (modified) flang/test/Lower/OpenMP/parallel-wsloop-reduction-byref.f90 (+1-1)
- (modified) flang/test/Lower/OpenMP/parallel-wsloop-reduction.f90 (+1-1)
- (modified) flang/test/Lower/OpenMP/wsloop-reduction-add-byref.f90 (+11-11)
- (modified) flang/test/Lower/OpenMP/wsloop-reduction-add-hlfir-byref.f90 (+2-2)
- (modified) flang/test/Lower/OpenMP/wsloop-reduction-add-hlfir.f90 (+2-2)
- (modified) flang/test/Lower/OpenMP/wsloop-reduction-add.f90 (+11-11)
- (modified) flang/test/Lower/OpenMP/wsloop-reduction-array.f90 (+2-2)
- (modified) flang/test/Lower/OpenMP/wsloop-reduction-array2.f90 (+2-2)
- (modified) flang/test/Lower/OpenMP/wsloop-reduction-iand-byref.f90 (+2-2)
- (modified) flang/test/Lower/OpenMP/wsloop-reduction-iand.f90 (+2-2)
- (modified) flang/test/Lower/OpenMP/wsloop-reduction-ieor-byref.f90 (+2-2)
- (modified) flang/test/Lower/OpenMP/wsloop-reduction-ior-byref.f90 (+2-4)
- (modified) flang/test/Lower/OpenMP/wsloop-reduction-ior.f90 (+2-2)
- (modified) flang/test/Lower/OpenMP/wsloop-reduction-max-2-byref.f90 (+1-1)
- (modified) flang/test/Lower/OpenMP/wsloop-reduction-max-2.f90 (+1-1)
- (modified) flang/test/Lower/OpenMP/wsloop-reduction-max-byref.f90 (+5-5)
- (modified) flang/test/Lower/OpenMP/wsloop-reduction-max-hlfir-byref.f90 (+2-2)
- (modified) flang/test/Lower/OpenMP/wsloop-reduction-max-hlfir.f90 (+2-2)
- (modified) flang/test/Lower/OpenMP/wsloop-reduction-max.f90 (+5-5)
- (modified) flang/test/Lower/OpenMP/wsloop-reduction-min-byref.f90 (+5-5)
- (modified) flang/test/Lower/OpenMP/wsloop-reduction-min.f90 (+5-5)
- (modified) flang/test/Lower/OpenMP/wsloop-reduction-min2.f90 (+2)
- (modified) flang/test/Lower/OpenMP/wsloop-reduction-mul-byref.f90 (+11-11)
- (modified) flang/test/Lower/OpenMP/wsloop-reduction-mul.f90 (+11-11)
``````````diff
diff --git a/flang/lib/Lower/OpenMP/ReductionProcessor.cpp b/flang/lib/Lower/OpenMP/ReductionProcessor.cpp
index 7f737dc8aa31db..701f1f5da95526 100644
--- a/flang/lib/Lower/OpenMP/ReductionProcessor.cpp
+++ b/flang/lib/Lower/OpenMP/ReductionProcessor.cpp
@@ -83,8 +83,10 @@ bool ReductionProcessor::supportedIntrinsicProcReduction(
return redType;
}
-std::string ReductionProcessor::getReductionName(llvm::StringRef name,
- mlir::Type ty, bool isByRef) {
+std::string
+ReductionProcessor::getReductionName(llvm::StringRef name,
+ const fir::KindMapping &kindMap,
+ mlir::Type ty, bool isByRef) {
ty = fir::unwrapRefType(ty);
// extra string to distinguish reduction functions for variables passed by
@@ -93,47 +95,12 @@ std::string ReductionProcessor::getReductionName(llvm::StringRef name,
if (isByRef)
byrefAddition = "_byref";
- if (fir::isa_trivial(ty))
- return (llvm::Twine(name) +
- (ty.isIntOrIndex() ? llvm::Twine("_i_") : llvm::Twine("_f_")) +
- llvm::Twine(ty.getIntOrFloatBitWidth()) + byrefAddition)
- .str();
-
- // creates a name like reduction_i_64_box_ux4x3
- if (auto boxTy = mlir::dyn_cast_or_null<fir::BaseBoxType>(ty)) {
- // TODO: support for allocatable boxes:
- // !fir.box<!fir.heap<!fir.array<...>>>
- fir::SequenceType seqTy = fir::unwrapRefType(boxTy.getEleTy())
- .dyn_cast_or_null<fir::SequenceType>();
- if (!seqTy)
- return {};
-
- std::string prefix = getReductionName(
- name, fir::unwrapSeqOrBoxedSeqType(ty), /*isByRef=*/false);
- if (prefix.empty())
- return {};
- std::stringstream tyStr;
- tyStr << prefix << "_box_";
- bool first = true;
- for (std::int64_t extent : seqTy.getShape()) {
- if (first)
- first = false;
- else
- tyStr << "x";
- if (extent == seqTy.getUnknownExtent())
- tyStr << 'u'; // I'm not sure that '?' is safe in symbol names
- else
- tyStr << extent;
- }
- return (tyStr.str() + byrefAddition).str();
- }
-
- return {};
+ return fir::getTypeAsString(ty, kindMap, (name + byrefAddition).str());
}
std::string ReductionProcessor::getReductionName(
Fortran::parser::DefinedOperator::IntrinsicOperator intrinsicOp,
- mlir::Type ty, bool isByRef) {
+ const fir::KindMapping &kindMap, mlir::Type ty, bool isByRef) {
std::string reductionName;
switch (intrinsicOp) {
@@ -156,7 +123,7 @@ std::string ReductionProcessor::getReductionName(
break;
}
- return getReductionName(reductionName, ty, isByRef);
+ return getReductionName(reductionName, kindMap, ty, isByRef);
}
mlir::Value
@@ -164,9 +131,9 @@ ReductionProcessor::getReductionInitValue(mlir::Location loc, mlir::Type type,
ReductionIdentifier redId,
fir::FirOpBuilder &builder) {
type = fir::unwrapRefType(type);
- assert((fir::isa_integer(type) || fir::isa_real(type) ||
- type.isa<fir::LogicalType>()) &&
- "only integer, logical and real types are currently supported");
+ if (!fir::isa_integer(type) && !fir::isa_real(type) &&
+ !mlir::isa<fir::LogicalType>(type))
+ TODO(loc, "Reduction of some types is not supported");
switch (redId) {
case ReductionIdentifier::MAX: {
if (auto ty = type.dyn_cast<mlir::FloatType>()) {
@@ -465,8 +432,7 @@ mlir::omp::ReductionDeclareOp ReductionProcessor::createReductionDecl(
mlir::OpBuilder::InsertionGuard guard(builder);
mlir::ModuleOp module = builder.getModule();
- if (reductionOpName.empty())
- TODO(loc, "Reduction of some types is not supported");
+ assert(!reductionOpName.empty());
auto decl =
module.lookupSymbol<mlir::omp::ReductionDeclareOp>(reductionOpName);
@@ -607,15 +573,18 @@ void ReductionProcessor::addReductionDecl(
}
for (mlir::Value symVal : reductionVars) {
auto redType = mlir::cast<fir::ReferenceType>(symVal.getType());
+ const auto &kindMap = firOpBuilder.getKindMap();
if (redType.getEleTy().isa<fir::LogicalType>())
- decl = createReductionDecl(
- firOpBuilder,
- getReductionName(intrinsicOp, firOpBuilder.getI1Type(), isByRef),
- redId, redType, currentLocation, isByRef);
+ decl = createReductionDecl(firOpBuilder,
+ getReductionName(intrinsicOp, kindMap,
+ firOpBuilder.getI1Type(),
+ isByRef),
+ redId, redType, currentLocation, isByRef);
else
decl = createReductionDecl(
- firOpBuilder, getReductionName(intrinsicOp, redType, isByRef),
- redId, redType, currentLocation, isByRef);
+ firOpBuilder,
+ getReductionName(intrinsicOp, kindMap, redType, isByRef), redId,
+ redType, currentLocation, isByRef);
reductionDeclSymbols.push_back(mlir::SymbolRefAttr::get(
firOpBuilder.getContext(), decl.getSymName()));
}
@@ -640,7 +609,7 @@ void ReductionProcessor::addReductionDecl(
decl = createReductionDecl(
firOpBuilder,
getReductionName(getRealName(*reductionIntrinsic).ToString(),
- redType, isByRef),
+ firOpBuilder.getKindMap(), redType, isByRef),
redId, redType, currentLocation, isByRef);
reductionDeclSymbols.push_back(mlir::SymbolRefAttr::get(
firOpBuilder.getContext(), decl.getSymName()));
diff --git a/flang/lib/Lower/OpenMP/ReductionProcessor.h b/flang/lib/Lower/OpenMP/ReductionProcessor.h
index 0d581bee546dea..89564373e8bf6f 100644
--- a/flang/lib/Lower/OpenMP/ReductionProcessor.h
+++ b/flang/lib/Lower/OpenMP/ReductionProcessor.h
@@ -75,12 +75,13 @@ class ReductionProcessor {
static bool
doReductionByRef(const llvm::SmallVectorImpl<mlir::Value> &reductionVars);
- static std::string getReductionName(llvm::StringRef name, mlir::Type ty,
- bool isByRef);
+ static std::string getReductionName(llvm::StringRef name,
+ const fir::KindMapping &kindMap,
+ mlir::Type ty, bool isByRef);
static std::string getReductionName(
Fortran::parser::DefinedOperator::IntrinsicOperator intrinsicOp,
- mlir::Type ty, bool isByRef);
+ const fir::KindMapping &kindMap, mlir::Type ty, bool isByRef);
/// This function returns the identity value of the operator \p
/// reductionOpName. For example:
diff --git a/flang/test/Lower/OpenMP/FIR/wsloop-reduction-add-byref.f90 b/flang/test/Lower/OpenMP/FIR/wsloop-reduction-add-byref.f90
index d4d3452d3e8682..887cb8a18297c5 100644
--- a/flang/test/Lower/OpenMP/FIR/wsloop-reduction-add-byref.f90
+++ b/flang/test/Lower/OpenMP/FIR/wsloop-reduction-add-byref.f90
@@ -2,7 +2,7 @@
! RUN: %flang_fc1 -emit-fir -flang-deprecated-no-hlfir -fopenmp -mmlir --force-byref-reduction %s -o - | FileCheck %s
! NOTE: Assertions have been autogenerated by utils/generate-test-checks.py
-! CHECK-LABEL: omp.reduction.declare @add_reduction_f_64_byref : !fir.ref<f64>
+! CHECK-LABEL: omp.reduction.declare @add_reduction_byref_f64 : !fir.ref<f64>
! CHECK-SAME: init {
! CHECK: ^bb0(%[[VAL_0:.*]]: !fir.ref<f64>):
! CHECK: %[[C0_1:.*]] = arith.constant 0.000000e+00 : f64
@@ -19,7 +19,7 @@
! CHECK: omp.yield(%[[ARG0]] : !fir.ref<f64>)
! CHECK: }
-! CHECK-LABEL: omp.reduction.declare @add_reduction_i_64_byref : !fir.ref<i64>
+! CHECK-LABEL: omp.reduction.declare @add_reduction_byref_i64 : !fir.ref<i64>
! CHECK-SAME: init {
! CHECK: ^bb0(%[[VAL_0:.*]]: !fir.ref<i64>):
! CHECK: %[[C0_1:.*]] = arith.constant 0 : i64
@@ -36,7 +36,7 @@
! CHECK: omp.yield(%[[ARG0]] : !fir.ref<i64>)
! CHECK: }
-! CHECK-LABEL: omp.reduction.declare @add_reduction_f_32_byref : !fir.ref<f32>
+! CHECK-LABEL: omp.reduction.declare @add_reduction_byref_f32 : !fir.ref<f32>
! CHECK-SAME: init {
! CHECK: ^bb0(%[[VAL_0:.*]]: !fir.ref<f32>):
! CHECK: %[[C0_1:.*]] = arith.constant 0.000000e+00 : f32
@@ -53,7 +53,7 @@
! CHECK: omp.yield(%[[ARG0]] : !fir.ref<f32>)
! CHECK: }
-! CHECK-LABEL: omp.reduction.declare @add_reduction_i_32_byref : !fir.ref<i32>
+! CHECK-LABEL: omp.reduction.declare @add_reduction_byref_i32 : !fir.ref<i32>
! CHECK-SAME: init {
! CHECK: ^bb0(%[[VAL_0:.*]]: !fir.ref<i32>):
! CHECK: %[[C0_1:.*]] = arith.constant 0 : i32
@@ -80,7 +80,7 @@
! CHECK: %[[VAL_4:.*]] = arith.constant 1 : i32
! CHECK: %[[VAL_5:.*]] = arith.constant 100 : i32
! CHECK: %[[VAL_6:.*]] = arith.constant 1 : i32
-! CHECK: omp.wsloop byref reduction(@add_reduction_i_32_byref %[[VAL_1]] -> %[[VAL_7:.*]] : !fir.ref<i32>) for (%[[VAL_8:.*]]) : i32 = (%[[VAL_4]]) to (%[[VAL_5]]) inclusive step (%[[VAL_6]]) {
+! CHECK: omp.wsloop byref reduction(@add_reduction_byref_i32 %[[VAL_1]] -> %[[VAL_7:.*]] : !fir.ref<i32>) for (%[[VAL_8:.*]]) : i32 = (%[[VAL_4]]) to (%[[VAL_5]]) inclusive step (%[[VAL_6]]) {
! CHECK: fir.store %[[VAL_8]] to %[[VAL_3]] : !fir.ref<i32>
! CHECK: %[[VAL_9:.*]] = fir.load %[[VAL_7]] : !fir.ref<i32>
! CHECK: %[[VAL_10:.*]] = fir.load %[[VAL_3]] : !fir.ref<i32>
@@ -116,7 +116,7 @@ subroutine simple_int_reduction
! CHECK: %[[VAL_4:.*]] = arith.constant 1 : i32
! CHECK: %[[VAL_5:.*]] = arith.constant 100 : i32
! CHECK: %[[VAL_6:.*]] = arith.constant 1 : i32
-! CHECK: omp.wsloop byref reduction(@add_reduction_f_32_byref %[[VAL_1]] -> %[[VAL_7:.*]] : !fir.ref<f32>) for (%[[VAL_8:.*]]) : i32 = (%[[VAL_4]]) to (%[[VAL_5]]) inclusive step (%[[VAL_6]]) {
+! CHECK: omp.wsloop byref reduction(@add_reduction_byref_f32 %[[VAL_1]] -> %[[VAL_7:.*]] : !fir.ref<f32>) for (%[[VAL_8:.*]]) : i32 = (%[[VAL_4]]) to (%[[VAL_5]]) inclusive step (%[[VAL_6]]) {
! CHECK: fir.store %[[VAL_8]] to %[[VAL_3]] : !fir.ref<i32>
! CHECK: %[[VAL_9:.*]] = fir.load %[[VAL_7]] : !fir.ref<f32>
! CHECK: %[[VAL_10:.*]] = fir.load %[[VAL_3]] : !fir.ref<i32>
@@ -152,7 +152,7 @@ subroutine simple_real_reduction
! CHECK: %[[VAL_4:.*]] = arith.constant 1 : i32
! CHECK: %[[VAL_5:.*]] = arith.constant 100 : i32
! CHECK: %[[VAL_6:.*]] = arith.constant 1 : i32
-! CHECK: omp.wsloop byref reduction(@add_reduction_i_32_byref %[[VAL_1]] -> %[[VAL_7:.*]] : !fir.ref<i32>) for (%[[VAL_8:.*]]) : i32 = (%[[VAL_4]]) to (%[[VAL_5]]) inclusive step (%[[VAL_6]]) {
+! CHECK: omp.wsloop byref reduction(@add_reduction_byref_i32 %[[VAL_1]] -> %[[VAL_7:.*]] : !fir.ref<i32>) for (%[[VAL_8:.*]]) : i32 = (%[[VAL_4]]) to (%[[VAL_5]]) inclusive step (%[[VAL_6]]) {
! CHECK: fir.store %[[VAL_8]] to %[[VAL_3]] : !fir.ref<i32>
! CHECK: %[[VAL_9:.*]] = fir.load %[[VAL_3]] : !fir.ref<i32>
! CHECK: %[[VAL_10:.*]] = fir.load %[[VAL_7]] : !fir.ref<i32>
@@ -187,7 +187,7 @@ subroutine simple_int_reduction_switch_order
! CHECK: %[[VAL_4:.*]] = arith.constant 1 : i32
! CHECK: %[[VAL_5:.*]] = arith.constant 100 : i32
! CHECK: %[[VAL_6:.*]] = arith.constant 1 : i32
-! CHECK: omp.wsloop byref reduction(@add_reduction_f_32_byref %[[VAL_1]] -> %[[VAL_7:.*]] : !fir.ref<f32>) for (%[[VAL_8:.*]]) : i32 = (%[[VAL_4]]) to (%[[VAL_5]]) inclusive step (%[[VAL_6]]) {
+! CHECK: omp.wsloop byref reduction(@add_reduction_byref_f32 %[[VAL_1]] -> %[[VAL_7:.*]] : !fir.ref<f32>) for (%[[VAL_8:.*]]) : i32 = (%[[VAL_4]]) to (%[[VAL_5]]) inclusive step (%[[VAL_6]]) {
! CHECK: fir.store %[[VAL_8]] to %[[VAL_3]] : !fir.ref<i32>
! CHECK: %[[VAL_9:.*]] = fir.load %[[VAL_3]] : !fir.ref<i32>
! CHECK: %[[VAL_10:.*]] = fir.convert %[[VAL_9]] : (i32) -> f32
@@ -229,7 +229,7 @@ subroutine simple_real_reduction_switch_order
! CHECK: %[[VAL_8:.*]] = arith.constant 1 : i32
! CHECK: %[[VAL_9:.*]] = arith.constant 100 : i32
! CHECK: %[[VAL_10:.*]] = arith.constant 1 : i32
-! CHECK: omp.wsloop byref reduction(@add_reduction_i_32_byref %[[VAL_1]] -> %[[VAL_11:.*]] : !fir.ref<i32>, @add_reduction_i_32_byref %[[VAL_2]] -> %[[VAL_12:.*]] : !fir.ref<i32>, @add_reduction_i_32_byref %[[VAL_3]] -> %[[VAL_13:.*]] : !fir.ref<i32>) for (%[[VAL_14:.*]]) : i32 = (%[[VAL_8]]) to (%[[VAL_9]]) inclusive step (%[[VAL_10]]) {
+! CHECK: omp.wsloop byref reduction(@add_reduction_byref_i32 %[[VAL_1]] -> %[[VAL_11:.*]] : !fir.ref<i32>, @add_reduction_byref_i32 %[[VAL_2]] -> %[[VAL_12:.*]] : !fir.ref<i32>, @add_reduction_byref_i32 %[[VAL_3]] -> %[[VAL_13:.*]] : !fir.ref<i32>) for (%[[VAL_14:.*]]) : i32 = (%[[VAL_8]]) to (%[[VAL_9]]) inclusive step (%[[VAL_10]]) {
! CHECK: fir.store %[[VAL_14]] to %[[VAL_7]] : !fir.ref<i32>
! CHECK: %[[VAL_15:.*]] = fir.load %[[VAL_11]] : !fir.ref<i32>
! CHECK: %[[VAL_16:.*]] = fir.load %[[VAL_7]] : !fir.ref<i32>
@@ -282,7 +282,7 @@ subroutine multiple_int_reductions_same_type
! CHECK: %[[VAL_8:.*]] = arith.constant 1 : i32
! CHECK: %[[VAL_9:.*]] = arith.constant 100 : i32
! CHECK: %[[VAL_10:.*]] = arith.constant 1 : i32
-! CHECK: omp.wsloop byref reduction(@add_reduction_f_32_byref %[[VAL_1]] -> %[[VAL_11:.*]] : !fir.ref<f32>, @add_reduction_f_32_byref %[[VAL_2]] -> %[[VAL_12:.*]] : !fir.ref<f32>, @add_reduction_f_32_byref %[[VAL_3]] -> %[[VAL_13:.*]] : !fir.ref<f32>) for (%[[VAL_14:.*]]) : i32 = (%[[VAL_8]]) to (%[[VAL_9]]) inclusive step (%[[VAL_10]]) {
+! CHECK: omp.wsloop byref reduction(@add_reduction_byref_f32 %[[VAL_1]] -> %[[VAL_11:.*]] : !fir.ref<f32>, @add_reduction_byref_f32 %[[VAL_2]] -> %[[VAL_12:.*]] : !fir.ref<f32>, @add_reduction_byref_f32 %[[VAL_3]] -> %[[VAL_13:.*]] : !fir.ref<f32>) for (%[[VAL_14:.*]]) : i32 = (%[[VAL_8]]) to (%[[VAL_9]]) inclusive step (%[[VAL_10]]) {
! CHECK: fir.store %[[VAL_14]] to %[[VAL_7]] : !fir.ref<i32>
! CHECK: %[[VAL_15:.*]] = fir.load %[[VAL_11]] : !fir.ref<f32>
! CHECK: %[[VAL_16:.*]] = fir.load %[[VAL_7]] : !fir.ref<i32>
@@ -341,7 +341,7 @@ subroutine multiple_real_reductions_same_type
! CHECK: %[[VAL_10:.*]] = arith.constant 1 : i32
! CHECK: %[[VAL_11:.*]] = arith.constant 100 : i32
! CHECK: %[[VAL_12:.*]] = arith.constant 1 : i32
-! CHECK: omp.wsloop byref reduction(@add_reduction_i_32_byref %[[VAL_2]] -> %[[VAL_13:.*]] : !fir.ref<i32>, @add_reduction_i_64_byref %[[VAL_3]] -> %[[VAL_14:.*]] : !fir.ref<i64>, @add_reduction_f_32_byref %[[VAL_4]] -> %[[VAL_15:.*]] : !fir.ref<f32>, @add_reduction_f_64_byref %[[VAL_1]] -> %[[VAL_16:.*]] : !fir.ref<f64>) for (%[[VAL_17:.*]]) : i32 = (%[[VAL_10]]) to (%[[VAL_11]]) inclusive step (%[[VAL_12]]) {
+! CHECK: omp.wsloop byref reduction(@add_reduction_byref_i32 %[[VAL_2]] -> %[[VAL_13:.*]] : !fir.ref<i32>, @add_reduction_byref_i64 %[[VAL_3]] -> %[[VAL_14:.*]] : !fir.ref<i64>, @add_reduction_byref_f32 %[[VAL_4]] -> %[[VAL_15:.*]] : !fir.ref<f32>, @add_reduction_byref_f64 %[[VAL_1]] -> %[[VAL_16:.*]] : !fir.ref<f64>) for (%[[VAL_17:.*]]) : i32 = (%[[VAL_10]]) to (%[[VAL_11]]) inclusive step (%[[VAL_12]]) {
! CHECK: fir.store %[[VAL_17]] to %[[VAL_9]] : !fir.ref<i32>
! CHECK: %[[VAL_18:.*]] = fir.load %[[VAL_13]] : !fir.ref<i32>
! CHECK: %[[VAL_19:.*]] = fir.load %[[VAL_9]] : !fir.ref<i32>
diff --git a/flang/test/Lower/OpenMP/FIR/wsloop-reduction-add.f90 b/flang/test/Lower/OpenMP/FIR/wsloop-reduction-add.f90
index 5664529416fe87..19be8015634675 100644
--- a/flang/test/Lower/OpenMP/FIR/wsloop-reduction-add.f90
+++ b/flang/test/Lower/OpenMP/FIR/wsloop-reduction-add.f90
@@ -7,7 +7,7 @@
! about what constitutes a good test! The CHECK should be
! minimized and named to reflect the test intent.
-! CHECK-LABEL: omp.reduction.declare @add_reduction_f_64 : f64 init {
+! CHECK-LABEL: omp.reduction.declare @add_reduction_f64 : f64 init {
! CHECK: ^bb0(%[[VAL_0:.*]]: f64):
! CHECK: %[[VAL_1:.*]] = arith.constant 0.000000e+00 : f64
! CHECK: omp.yield(%[[VAL_1]] : f64)
@@ -18,7 +18,7 @@
! CHECK: omp.yield(%[[VAL_2]] : f64)
! CHECK: }
-! CHECK-LABEL: omp.reduction.declare @add_reduction_i_64 : i64 init {
+! CHECK-LABEL: omp.reduction.declare @add_reduction_i64 : i64 init {
! CHECK: ^bb0(%[[VAL_0:.*]]: i64):
! CHECK: %[[VAL_1:.*]] = arith.constant 0 : i64
! CHECK: omp.yield(%[[VAL_1]] : i64)
@@ -29,7 +29,7 @@
! CHECK: omp.yield(%[[VAL_2]] : i64)
! CHECK: }
-! CHECK-LABEL: omp.reduction.declare @add_reduction_f_32 : f32 init {
+! CHECK-LABEL: omp.reduction.declare @add_reduction_f32 : f32 init {
! CHECK: ^bb0(%[[VAL_0:.*]]: f32):
! CHECK: %[[VAL_1:.*]] = arith.constant 0.000000e+00 : f32
! CHECK: omp.yield(%[[VAL_1]] : f32)
@@ -40,7 +40,7 @@
! CHECK: omp.yield(%[[VAL_2]] : f32)
! CHECK: }
-! CHECK-LABEL: omp.reduction.declare @add_reduction_i_32 : i32 init {
+! CHECK-LABEL: omp.reduction.declare @add_reduction_i32 : i32 init {
! CHECK: ^bb0(%[[VAL_0:.*]]: i32):
! CHECK: %[[VAL_1:.*]] = arith.constant 0 : i32
! CHECK: omp.yield(%[[VAL_1]] : i32)
@@ -61,7 +61,7 @@
! CHECK: %[[VAL_4:.*]] = arith.constant 1 : i32
! CHECK: %[[VAL_5:.*]] = arith.constant 100 : i32
! CHECK: %[[VAL_6:.*]] = arith.constant 1 : i32
-! CHECK: omp.wsloop reduction(@add_reduction_i_32 %[[VAL_1]] -> %[[VAL_7:.*]] : !fir.ref<i32>) for (%[[VAL_8:.*]]) : i32 = (%[[VAL_4]]) to (%[[VAL_5]]) inclusive step (%[[VAL_6]]) {
+! CHECK: omp.wsloop reduction(@add_reduction_i32 %[[VAL_1]] -> %[[VAL_7:.*]] : !fir.ref<i32>) for (%[[VAL_8:.*]]) : i32 = (%[[VAL_4]]) to (%[[VAL_5]]) inclusive step (%[[VAL_6]]) {
! CHECK: fir.store %[[VAL_8]] to %[[VAL_3]] : !fir.ref<i32>
! CHECK: %[[VAL_9:.*]] = fir.load %[[VAL_7]] : !fir.ref<i32>
! CHECK: %[[VAL_10:.*]] = fir.load %[[VAL_3]] : !fir.ref<i32>
@@ -97,7 +97,7 @@ subroutine simple_int_reduction
! CHECK: %[[VAL_4:.*]] = arith.constant 1 : i32
! CHECK: %[[VAL_5:.*]] = arith.constant 100 : i32
! CHECK: %[[VAL_6:.*]] = arith.constant 1 : i32
-! CHECK: omp.wsloop reduction(@add_reduction_f_32 %[[VAL_1]] -> %[[VAL_7:.*]] : !fir.ref<f32>) for (%[[VAL_8:.*]]) : i32 = (%[[VAL_4]]) to (%[[VAL_5]]) inclusive step (%[[VAL_6]]) {
+! CHECK: omp.wsloop reduction(@add_reduction_f32 %[[VAL_1]] -> %[[VAL_7:.*]] : !fir.ref<f32>) for (%[[VAL_8:.*]]) : i32 = (%[[VAL_4]]) to (%[[VAL_5]]) inclusive step (%[[VAL_6]]) {
! CHECK: fir.store %[[VAL_8]] to %[[VAL_3]] : !fir.ref<i32>
! CHECK: %[[VAL_9:.*]] = fir.load %[[VAL_7]] : !fir.ref<f32>
! CHECK: %[[VAL_10:.*]] = fir.load %[[VAL_3]] : !fir.ref<i32>
@@ -133,7 +133,7 @@ subroutine simple_real_reduction
! CHECK: %[[VAL_4:.*]] = arith.constant 1 : i32
! CHECK: %[[VAL_5:.*]] = arith.constant 100 : i32
! CHECK: %[[VAL_6:.*]] = arith.constant 1 : i32
-! CHECK: omp.wsloop reduction(@add_reduction_i_32 %[[VAL_1]] -> %[[VAL_7:.*]] : !fir.ref<i32>) for (%[[VAL_8:.*]]) : i32 = (%[[VAL_4]]) to (%[[VAL_5]]) inclusive step (%[[VAL_6]]) {
+! CHECK: omp.wsloop reduction(@add_reduction_i32 %[[VAL_1]] -> %[[VAL_7:.*]] : !fir.ref<i32>) for (%[[VAL_8:.*]]) : i32 = (%[[VAL_4]]) to (%[[VAL_5]]) inclusive step (%[[VAL_6]]) {
! CHECK: fir.store %[[VAL_8]] to %[[VAL_3]] : !fir.ref<i32>
! CHECK: %[[VAL_9:.*]] = fir.load %[[VAL_3]] : !fir.ref<i32>
! CHECK: %[[VAL...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/85666
More information about the llvm-branch-commits
mailing list