[(strict_fsetccs node:$lhs, node:$rhs, node:$pred),
(setcc node:$lhs, node:$rhs, node:$pred)]>;
-multiclass binary_atomic_op_ord<SDNode atomic_op> {
+multiclass binary_atomic_op_ord {
def NAME#_monotonic : PatFrag<(ops node:$ptr, node:$val),
(!cast<SDPatternOperator>(NAME) node:$ptr, node:$val)> {
let IsAtomic = true;
}
}
-multiclass ternary_atomic_op_ord<SDNode atomic_op> {
+multiclass ternary_atomic_op_ord {
def NAME#_monotonic : PatFrag<(ops node:$ptr, node:$cmp, node:$val),
(!cast<SDPatternOperator>(NAME) node:$ptr, node:$cmp, node:$val)> {
let IsAtomic = true;
let MemoryVT = !if(IsInt, i64, f64);
}
- defm NAME#_8 : binary_atomic_op_ord<atomic_op>;
- defm NAME#_16 : binary_atomic_op_ord<atomic_op>;
- defm NAME#_32 : binary_atomic_op_ord<atomic_op>;
- defm NAME#_64 : binary_atomic_op_ord<atomic_op>;
+ defm NAME#_8 : binary_atomic_op_ord;
+ defm NAME#_16 : binary_atomic_op_ord;
+ defm NAME#_32 : binary_atomic_op_ord;
+ defm NAME#_64 : binary_atomic_op_ord;
}
multiclass ternary_atomic_op<SDNode atomic_op> {
let MemoryVT = i64;
}
- defm NAME#_8 : ternary_atomic_op_ord<atomic_op>;
- defm NAME#_16 : ternary_atomic_op_ord<atomic_op>;
- defm NAME#_32 : ternary_atomic_op_ord<atomic_op>;
- defm NAME#_64 : ternary_atomic_op_ord<atomic_op>;
+ defm NAME#_8 : ternary_atomic_op_ord;
+ defm NAME#_16 : ternary_atomic_op_ord;
+ defm NAME#_32 : ternary_atomic_op_ord;
+ defm NAME#_64 : ternary_atomic_op_ord;
}
defm atomic_load_add : binary_atomic_op<atomic_load_add>;