Skip to content

Commit 2883204

Browse files
klauslerclementval
authored andcommitted
[flang][runtime] Distinguish VALUE from non-VALUE operations in REDUCE
Accommodate operations with VALUE dummy arguments in the runtime support for the REDUCE intrinsic function by splitting most entry points into Reduce...Ref and Reduce...Value variants. Further work will be needed in lowering to call the ...Value entry points.
1 parent 64c9a1e commit 2883204

File tree

6 files changed

+906
-363
lines changed

6 files changed

+906
-363
lines changed

flang/include/flang/Optimizer/Builder/Runtime/RTBuilder.h

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,10 @@ namespace fir::runtime {
5353
using TypeBuilderFunc = mlir::Type (*)(mlir::MLIRContext *);
5454
using FuncTypeBuilderFunc = mlir::FunctionType (*)(mlir::MLIRContext *);
5555

56-
#define REDUCTION_OPERATION_MODEL(T) \
56+
#define REDUCTION_REF_OPERATION_MODEL(T) \
5757
template <> \
5858
constexpr TypeBuilderFunc \
59-
getModel<Fortran::runtime::ReductionOperation<T>>() { \
59+
getModel<Fortran::runtime::ReferenceReductionOperation<T>>() { \
6060
return [](mlir::MLIRContext *context) -> mlir::Type { \
6161
TypeBuilderFunc f{getModel<T>()}; \
6262
auto refTy = fir::ReferenceType::get(f(context)); \
@@ -480,18 +480,18 @@ constexpr TypeBuilderFunc getModel<void>() {
480480
};
481481
}
482482

483-
REDUCTION_OPERATION_MODEL(std::int8_t)
484-
REDUCTION_OPERATION_MODEL(std::int16_t)
485-
REDUCTION_OPERATION_MODEL(std::int32_t)
486-
REDUCTION_OPERATION_MODEL(std::int64_t)
487-
REDUCTION_OPERATION_MODEL(Fortran::common::int128_t)
483+
REDUCTION_REF_OPERATION_MODEL(std::int8_t)
484+
REDUCTION_REF_OPERATION_MODEL(std::int16_t)
485+
REDUCTION_REF_OPERATION_MODEL(std::int32_t)
486+
REDUCTION_REF_OPERATION_MODEL(std::int64_t)
487+
REDUCTION_REF_OPERATION_MODEL(Fortran::common::int128_t)
488488

489-
REDUCTION_OPERATION_MODEL(float)
490-
REDUCTION_OPERATION_MODEL(double)
491-
REDUCTION_OPERATION_MODEL(long double)
489+
REDUCTION_REF_OPERATION_MODEL(float)
490+
REDUCTION_REF_OPERATION_MODEL(double)
491+
REDUCTION_REF_OPERATION_MODEL(long double)
492492

493-
REDUCTION_OPERATION_MODEL(std::complex<float>)
494-
REDUCTION_OPERATION_MODEL(std::complex<double>)
493+
REDUCTION_REF_OPERATION_MODEL(std::complex<float>)
494+
REDUCTION_REF_OPERATION_MODEL(std::complex<double>)
495495

496496
REDUCTION_CHAR_OPERATION_MODEL(char)
497497
REDUCTION_CHAR_OPERATION_MODEL(char16_t)

0 commit comments

Comments
 (0)