================
@@ -47,16 +52,30 @@ def OpenACC_ReductionOperatorLogEqv :
I32EnumAttrCase<"AccEqv", 8, "eqv">;
def OpenACC_ReductionOperatorLogNeqv : I32EnumAttrCase<"AccNeqv", 9, "neqv">;
def OpenACC_ReductionOperatorLogAnd : I32EnumAttrCase<"AccLand", 10, "land">;
def OpenACC_ReductionOperatorLogOr : I32EnumAttrCase<"AccLor", 11, "lor">;
-
-def OpenACC_ReductionOperator : I32EnumAttr<"ReductionOperator",
- "built-in reduction operations supported by OpenACC",
- [OpenACC_ReductionOperatorNone, OpenACC_ReductionOperatorAdd,
- OpenACC_ReductionOperatorMul, OpenACC_ReductionOperatorMax,
OpenACC_ReductionOperatorMin,
- OpenACC_ReductionOperatorAnd, OpenACC_ReductionOperatorOr,
- OpenACC_ReductionOperatorXor, OpenACC_ReductionOperatorLogEqv,
- OpenACC_ReductionOperatorLogNeqv, OpenACC_ReductionOperatorLogAnd,
- OpenACC_ReductionOperatorLogOr
- ]> {
+// The following reduction operators correspond to arith::AtomicRMWKind kinds
+// named alike. They can only be applied to floating-point types.
+// These reductions can be auto-parallelized.
+def OpenACC_ReductionOperatorMaximum
+ : I32EnumAttrCase<"AccMaximumf", 12, "maximumf">;
+def OpenACC_ReductionOperatorMinimum
+ : I32EnumAttrCase<"AccMinimumf", 13, "minimumf">;
+def OpenACC_ReductionOperatorMaxnum
+ : I32EnumAttrCase<"AccMaxnumf", 14, "maxnumf">;
+def OpenACC_ReductionOperatorMinnum
+ : I32EnumAttrCase<"AccMinnumf", 15, "minnumf">;
+
+def OpenACC_ReductionOperator
+ : I32EnumAttr<
+ "ReductionOperator",
+ "built-in reduction operations supported by OpenACC",
----------------
razvanlupusoru wrote:
Would you mind expanding the description here to describe the reduction
operators including the new specialized ones? Potentially moving the table from
ReductionRecipeOp to here might be better. OK as a follow-up change if you
prefer. Thank you!
https://github.com/llvm/llvm-project/pull/184730
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits