16#ifndef FORTRAN_OPTIMIZER_BUILDER_RUNTIME_REDUCTION_H 
   17#define FORTRAN_OPTIMIZER_BUILDER_RUNTIME_REDUCTION_H 
   19#include "mlir/Dialect/Func/IR/FuncOps.h" 
   26namespace fir::runtime {
 
   31void genAllDescriptor(fir::FirOpBuilder &builder, mlir::Location loc,
 
   32                      mlir::Value resultBox, mlir::Value maskBox,
 
   38void genAnyDescriptor(fir::FirOpBuilder &builder, mlir::Location loc,
 
   39                      mlir::Value resultBox, mlir::Value maskBox,
 
   45void genParityDescriptor(fir::FirOpBuilder &builder, mlir::Location loc,
 
   46                         mlir::Value resultBox, mlir::Value maskBox,
 
   52mlir::Value genAll(fir::FirOpBuilder &builder, mlir::Location loc,
 
   53                   mlir::Value maskBox, mlir::Value dim);
 
   58mlir::Value genAny(fir::FirOpBuilder &builder, mlir::Location loc,
 
   59                   mlir::Value maskBox, mlir::Value dim);
 
   64mlir::Value genCount(fir::FirOpBuilder &builder, mlir::Location loc,
 
   65                     mlir::Value maskBox, mlir::Value dim);
 
   69void genCountDim(fir::FirOpBuilder &builder, mlir::Location loc,
 
   70                 mlir::Value resultBox, mlir::Value maskBox, mlir::Value dim,
 
   74mlir::Value genDotProduct(fir::FirOpBuilder &builder, mlir::Location loc,
 
   75                          mlir::Value vectorABox, mlir::Value vectorBBox,
 
   76                          mlir::Value resultBox);
 
   80void genFindloc(fir::FirOpBuilder &builder, mlir::Location loc,
 
   81                mlir::Value resultBox, mlir::Value arrayBox, mlir::Value val,
 
   82                mlir::Value maskBox, mlir::Value kind, mlir::Value back);
 
   86void genFindlocDim(fir::FirOpBuilder &builder, mlir::Location loc,
 
   87                   mlir::Value resultBox, mlir::Value arrayBox, mlir::Value val,
 
   88                   mlir::Value dim, mlir::Value maskBox, mlir::Value kind,
 
   93void genMaxloc(fir::FirOpBuilder &builder, mlir::Location loc,
 
   94               mlir::Value resultBox, mlir::Value arrayBox, mlir::Value maskBox,
 
   95               mlir::Value kind, mlir::Value back);
 
   99void genMaxlocDim(fir::FirOpBuilder &builder, mlir::Location loc,
 
  100                  mlir::Value resultBox, mlir::Value arrayBox, mlir::Value dim,
 
  101                  mlir::Value maskBox, mlir::Value kind, mlir::Value back);
 
  105void genMinloc(fir::FirOpBuilder &builder, mlir::Location loc,
 
  106               mlir::Value resultBox, mlir::Value arrayBox, mlir::Value maskBox,
 
  107               mlir::Value kind, mlir::Value back);
 
  111void genMinlocDim(fir::FirOpBuilder &builder, mlir::Location loc,
 
  112                  mlir::Value resultBox, mlir::Value arrayBox, mlir::Value dim,
 
  113                  mlir::Value maskBox, mlir::Value kind, mlir::Value back);
 
  117mlir::Value genMaxval(fir::FirOpBuilder &builder, mlir::Location loc,
 
  118                      mlir::Value arrayBox, mlir::Value maskBox);
 
  123void genMaxvalChar(fir::FirOpBuilder &builder, mlir::Location loc,
 
  124                   mlir::Value resultBox, mlir::Value arrayBox,
 
  125                   mlir::Value maskBox);
 
  129void genMaxvalDim(fir::FirOpBuilder &builder, mlir::Location loc,
 
  130                  mlir::Value resultBox, mlir::Value arrayBox, mlir::Value dim,
 
  131                  mlir::Value maskBox);
 
  135mlir::Value genMinval(fir::FirOpBuilder &builder, mlir::Location loc,
 
  136                      mlir::Value arrayBox, mlir::Value maskBox);
 
  141void genMinvalChar(fir::FirOpBuilder &builder, mlir::Location loc,
 
  142                   mlir::Value resultBox, mlir::Value arrayBox,
 
  143                   mlir::Value maskBox);
 
  147void genMinvalDim(fir::FirOpBuilder &builder, mlir::Location loc,
 
  148                  mlir::Value resultBox, mlir::Value arrayBox, mlir::Value dim,
 
  149                  mlir::Value maskBox);
 
  153mlir::Value genNorm2(fir::FirOpBuilder &builder, mlir::Location loc,
 
  154                     mlir::Value arrayBox);
 
  158void genNorm2Dim(fir::FirOpBuilder &builder, mlir::Location loc,
 
  159                 mlir::Value resultBox, mlir::Value arrayBox, mlir::Value dim);
 
  164mlir::Value genParity(fir::FirOpBuilder &builder, mlir::Location loc,
 
  165                      mlir::Value maskBox, mlir::Value dim);
 
  169mlir::Value genProduct(fir::FirOpBuilder &builder, mlir::Location loc,
 
  170                       mlir::Value arrayBox, mlir::Value maskBox,
 
  171                       mlir::Value resultBox);
 
  175void genProductDim(fir::FirOpBuilder &builder, mlir::Location loc,
 
  176                   mlir::Value resultBox, mlir::Value arrayBox, mlir::Value dim,
 
  177                   mlir::Value maskBox);
 
  181mlir::Value genSum(fir::FirOpBuilder &builder, mlir::Location loc,
 
  182                   mlir::Value arrayBox, mlir::Value maskBox,
 
  183                   mlir::Value resultBox);
 
  187void genSumDim(fir::FirOpBuilder &builder, mlir::Location loc,
 
  188               mlir::Value resultBox, mlir::Value arrayBox, mlir::Value dim,
 
  189               mlir::Value maskBox);
 
  193mlir::Value genIAll(fir::FirOpBuilder &builder, mlir::Location loc,
 
  194                    mlir::Value arrayBox, mlir::Value maskBox,
 
  195                    mlir::Value resultBox);
 
  199void genIAllDim(fir::FirOpBuilder &builder, mlir::Location loc,
 
  200                mlir::Value resultBox, mlir::Value arrayBox, mlir::Value dim,
 
  201                mlir::Value maskBox);
 
  205mlir::Value genIAny(fir::FirOpBuilder &builder, mlir::Location loc,
 
  206                    mlir::Value arrayBox, mlir::Value maskBox,
 
  207                    mlir::Value resultBox);
 
  211void genIAnyDim(fir::FirOpBuilder &builder, mlir::Location loc,
 
  212                mlir::Value resultBox, mlir::Value arrayBox, mlir::Value dim,
 
  213                mlir::Value maskBox);
 
  217mlir::Value genIParity(fir::FirOpBuilder &builder, mlir::Location loc,
 
  218                       mlir::Value arrayBox, mlir::Value maskBox,
 
  219                       mlir::Value resultBox);
 
  223void genIParityDim(fir::FirOpBuilder &builder, mlir::Location loc,
 
  224                   mlir::Value resultBox, mlir::Value arrayBox, mlir::Value dim,
 
  225                   mlir::Value maskBox);
 
  230void genReduce(fir::FirOpBuilder &builder, mlir::Location loc,
 
  231               mlir::Value arrayBox, mlir::Value operation, mlir::Value maskBox,
 
  232               mlir::Value identity, mlir::Value ordered, mlir::Value resultBox,
 
  238mlir::Value genReduce(fir::FirOpBuilder &builder, mlir::Location loc,
 
  239                      mlir::Value arrayBox, mlir::Value operation,
 
  240                      mlir::Value maskBox, mlir::Value identity,
 
  241                      mlir::Value ordered, 
bool argByRef);
 
  245void genReduceDim(fir::FirOpBuilder &builder, mlir::Location loc,
 
  246                  mlir::Value arrayBox, mlir::Value operation, mlir::Value dim,
 
  247                  mlir::Value maskBox, mlir::Value identity,
 
  248                  mlir::Value ordered, mlir::Value resultBox, 
bool argByRef);
 
Definition BoxValue.h:478
 
Definition FIRBuilder.h:55
 
Definition AbstractConverter.h:34