diff --git a/builtins/util.m4 b/builtins/util.m4 index 0ea7763e..73998ddc 100644 --- a/builtins/util.m4 +++ b/builtins/util.m4 @@ -1497,10 +1497,12 @@ define <$1 x $2> @__atomic_compare_exchange_$3_global($2* %ptr, <$1 x $2> %cmp, per_lane($1, <$1 x MASK> %mask, ` %cmp_LANE_ID = extractelement <$1 x $2> %cmp, i32 LANE %val_LANE_ID = extractelement <$1 x $2> %val, i32 LANE + + ;; 3.5 and 3.6 code is the same since m4 has no OR and AND operators ifelse(LLVM_VERSION,LLVM_3_5,` %r_LANE_ID_t = cmpxchg $2 * %ptr, $2 %cmp_LANE_ID, $2 %val_LANE_ID seq_cst seq_cst %r_LANE_ID = extractvalue { $2, i1 } %r_LANE_ID_t, 0 - ',LLVM_VERSION,LLVM_3_6,` ; this is duplicated for 3.6 since m4 has no OR and AND operators + ',LLVM_VERSION,LLVM_3_6,` %r_LANE_ID_t = cmpxchg $2 * %ptr, $2 %cmp_LANE_ID, $2 %val_LANE_ID seq_cst seq_cst %r_LANE_ID = extractvalue { $2, i1 } %r_LANE_ID_t, 0 ',` @@ -1514,11 +1516,12 @@ define <$1 x $2> @__atomic_compare_exchange_$3_global($2* %ptr, <$1 x $2> %cmp, } define $2 @__atomic_compare_exchange_uniform_$3_global($2* %ptr, $2 %cmp, - $2 %val) nounwind alwaysinline { + $2 %val) nounwind alwaysinline { + ;; 3.5 and 3.6 code is the same since m4 has no OR and AND operators ifelse(LLVM_VERSION,LLVM_3_5,` %r_t = cmpxchg $2 * %ptr, $2 %cmp, $2 %val seq_cst seq_cst %r = extractvalue { $2, i1 } %r_t, 0 - ',LLVM_VERSION,LLVM_3_6,` ; this is duplicated for 3.6 since m4 has no OR and AND operators + ',LLVM_VERSION,LLVM_3_6,` %r_t = cmpxchg $2 * %ptr, $2 %cmp, $2 %val seq_cst seq_cst %r = extractvalue { $2, i1 } %r_t, 0 ',`