@@ -31,32 +31,34 @@ class StoreInst;
3131
3232// / These are the kinds of recurrences that we support.
3333enum class RecurKind {
34- None, // /< Not a recurrence.
35- Add, // /< Sum of integers.
36- Mul, // /< Product of integers.
37- Or, // /< Bitwise or logical OR of integers.
38- And, // /< Bitwise or logical AND of integers.
39- Xor, // /< Bitwise or logical XOR of integers.
40- SMin, // /< Signed integer min implemented in terms of select(cmp()).
41- SMax, // /< Signed integer max implemented in terms of select(cmp()).
42- UMin, // /< Unsigned integer min implemented in terms of select(cmp()).
43- UMax, // /< Unsigned integer max implemented in terms of select(cmp()).
44- FAdd, // /< Sum of floats.
45- FMul, // /< Product of floats.
46- FMin, // /< FP min implemented in terms of select(cmp()).
47- FMax, // /< FP max implemented in terms of select(cmp()).
48- FMinimum, // /< FP min with llvm.minimum semantics
49- FMaximum, // /< FP max with llvm.maximum semantics
34+ // clang-format off
35+ None, // /< Not a recurrence.
36+ Add, // /< Sum of integers.
37+ Mul, // /< Product of integers.
38+ Or, // /< Bitwise or logical OR of integers.
39+ And, // /< Bitwise or logical AND of integers.
40+ Xor, // /< Bitwise or logical XOR of integers.
41+ SMin, // /< Signed integer min implemented in terms of select(cmp()).
42+ SMax, // /< Signed integer max implemented in terms of select(cmp()).
43+ UMin, // /< Unsigned integer min implemented in terms of select(cmp()).
44+ UMax, // /< Unsigned integer max implemented in terms of select(cmp()).
45+ FAdd, // /< Sum of floats.
46+ FMul, // /< Product of floats.
47+ FMin, // /< FP min implemented in terms of select(cmp()).
48+ FMax, // /< FP max implemented in terms of select(cmp()).
49+ FMinimum, // /< FP min with llvm.minimum semantics
50+ FMaximum, // /< FP max with llvm.maximum semantics
5051 FMinimumNum, // /< FP min with llvm.minimumnum semantics
5152 FMaximumNum, // /< FP max with llvm.maximumnum semantics
52- FMulAdd, // /< Sum of float products with llvm.fmuladd(a * b + sum).
53- IAnyOf, // /< Any_of reduction with select(icmp(),x,y) where one of (x,y) is
54- // /< loop invariant, and both x and y are integer type.
55- FAnyOf, // /< Any_of reduction with select(fcmp(),x,y) where one of (x,y) is
56- // /< loop invariant, and both x and y are integer type.
53+ FMulAdd, // /< Sum of float products with llvm.fmuladd(a * b + sum).
54+ IAnyOf, // /< Any_of reduction with select(icmp(),x,y) where one of (x,y) is
55+ // /< loop invariant, and both x and y are integer type.
56+ FAnyOf, // /< Any_of reduction with select(fcmp(),x,y) where one of (x,y) is
57+ // /< loop invariant, and both x and y are integer type.
5758 FindLastIV, // /< FindLast reduction with select(cmp(),x,y) where one of
5859 // /< (x,y) is increasing loop induction, and both x and y are
5960 // /< integer type.
61+ // clang-format on
6062 // TODO: Any_of and FindLast reduction need not be restricted to integer type
6163 // only.
6264};
0 commit comments