FLANG
|
Public Types | |
enum | ReductionIdentifier { ID , USER_DEF_OP , ADD , SUBTRACT , MULTIPLY , AND , OR , EQV , NEQV , MAX , MIN , IAND , IOR , IEOR } |
Static Public Member Functions | |
static ReductionIdentifier | getReductionType (const omp::clause::ProcedureDesignator &pd) |
static ReductionIdentifier | getReductionType (omp::clause::DefinedOperator::IntrinsicOperator intrinsicOp) |
static ReductionIdentifier | getReductionType (const fir::ReduceOperationEnum &pd) |
static bool | supportedIntrinsicProcReduction (const omp::clause::ProcedureDesignator &pd) |
static const semantics::SourceName | getRealName (const semantics::Symbol *symbol) |
static const semantics::SourceName | getRealName (const omp::clause::ProcedureDesignator &pd) |
static std::string | getReductionName (llvm::StringRef name, const fir::KindMapping &kindMap, mlir::Type ty, bool isByRef) |
static std::string | getReductionName (ReductionIdentifier redId, const fir::KindMapping &kindMap, mlir::Type ty, bool isByRef) |
static int | getOperationIdentity (ReductionIdentifier redId, mlir::Location loc) |
static mlir::Value | getReductionInitValue (mlir::Location loc, mlir::Type type, ReductionIdentifier redId, fir::FirOpBuilder &builder) |
template<typename FloatOp, typename IntegerOp> | |
static mlir::Value | getReductionOperation (fir::FirOpBuilder &builder, mlir::Type type, mlir::Location loc, mlir::Value op1, mlir::Value op2) |
template<typename FloatOp, typename IntegerOp, typename ComplexOp> | |
static mlir::Value | getReductionOperation (fir::FirOpBuilder &builder, mlir::Type type, mlir::Location loc, mlir::Value op1, mlir::Value op2) |
static mlir::Value | createScalarCombiner (fir::FirOpBuilder &builder, mlir::Location loc, ReductionIdentifier redId, mlir::Type type, mlir::Value op1, mlir::Value op2) |
template<typename OpType> | |
static OpType | createDeclareReduction (AbstractConverter &builder, llvm::StringRef reductionOpName, const ReductionIdentifier redId, mlir::Type type, mlir::Location loc, bool isByRef) |
template<typename OpType, typename RedOperatorListTy> | |
static bool | processReductionArguments (mlir::Location currentLocation, lower::AbstractConverter &converter, const RedOperatorListTy &redOperatorList, llvm::SmallVectorImpl< mlir::Value > &reductionVars, llvm::SmallVectorImpl< bool > &reduceVarByRef, llvm::SmallVectorImpl< mlir::Attribute > &reductionDeclSymbols, const llvm::SmallVectorImpl< const semantics::Symbol * > &reductionSymbols) |
|
static |
Creates an OpenMP reduction declaration and inserts it into the provided symbol table. The declaration has a constant initializer with the neutral value initValue, and the reduction combiner carried over from reduce. TODO: add atomic region.
|
static |
This function returns the identity value of the operator reductionOpName
. For example: 0 + x = x, 1 * x = x
|
static |
Creates a reduction declaration and associates it with an OpenMP block directive.