diff options
Diffstat (limited to 'gcc/config/arm/arm.c')
-rw-r--r-- | gcc/config/arm/arm.c | 36 |
1 files changed, 16 insertions, 20 deletions
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index e26f40c..19b7385 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -27461,8 +27461,8 @@ arm_expand_compare_and_swap (rtx operands[]) promote succ to ACQ_REL so that we don't lose the acquire semantics. */ if (TARGET_HAVE_LDACQ - && INTVAL (mod_f) == MEMMODEL_ACQUIRE - && INTVAL (mod_s) == MEMMODEL_RELEASE) + && is_mm_acquire (memmodel_from_int (INTVAL (mod_f))) + && is_mm_release (memmodel_from_int (INTVAL (mod_s)))) mod_s = GEN_INT (MEMMODEL_ACQ_REL); switch (mode) @@ -27535,20 +27535,18 @@ arm_split_compare_and_swap (rtx operands[]) oldval = operands[2]; newval = operands[3]; is_weak = (operands[4] != const0_rtx); - mod_s = (enum memmodel) INTVAL (operands[5]); - mod_f = (enum memmodel) INTVAL (operands[6]); + mod_s = memmodel_from_int (INTVAL (operands[5])); + mod_f = memmodel_from_int (INTVAL (operands[6])); scratch = operands[7]; mode = GET_MODE (mem); bool use_acquire = TARGET_HAVE_LDACQ - && !(mod_s == MEMMODEL_RELAXED - || mod_s == MEMMODEL_CONSUME - || mod_s == MEMMODEL_RELEASE); - + && !(is_mm_relaxed (mod_s) || is_mm_consume (mod_s) + || is_mm_release (mod_s)); + bool use_release = TARGET_HAVE_LDACQ - && !(mod_s == MEMMODEL_RELAXED - || mod_s == MEMMODEL_CONSUME - || mod_s == MEMMODEL_ACQUIRE); + && !(is_mm_relaxed (mod_s) || is_mm_consume (mod_s) + || is_mm_acquire (mod_s)); /* Checks whether a barrier is needed and emits one accordingly. */ if (!(use_acquire || use_release)) @@ -27586,14 +27584,14 @@ arm_split_compare_and_swap (rtx operands[]) emit_unlikely_jump (gen_rtx_SET (pc_rtx, x)); } - if (mod_f != MEMMODEL_RELAXED) + if (!is_mm_relaxed (mod_f)) emit_label (label2); /* Checks whether a barrier is needed and emits one accordingly. */ if (!(use_acquire || use_release)) arm_post_atomic_barrier (mod_s); - if (mod_f == MEMMODEL_RELAXED) + if (is_mm_relaxed (mod_f)) emit_label (label2); } @@ -27601,21 +27599,19 @@ void arm_split_atomic_op (enum rtx_code code, rtx old_out, rtx new_out, rtx mem, rtx value, rtx model_rtx, rtx cond) { - enum memmodel model = (enum memmodel) INTVAL (model_rtx); + enum memmodel model = memmodel_from_int (INTVAL (model_rtx)); machine_mode mode = GET_MODE (mem); machine_mode wmode = (mode == DImode ? DImode : SImode); rtx_code_label *label; rtx x; bool use_acquire = TARGET_HAVE_LDACQ - && !(model == MEMMODEL_RELAXED - || model == MEMMODEL_CONSUME - || model == MEMMODEL_RELEASE); + && !(is_mm_relaxed (model) || is_mm_consume (model) + || is_mm_release (model)); bool use_release = TARGET_HAVE_LDACQ - && !(model == MEMMODEL_RELAXED - || model == MEMMODEL_CONSUME - || model == MEMMODEL_ACQUIRE); + && !(is_mm_relaxed (model) || is_mm_consume (model) + || is_mm_acquire (model)); /* Checks whether a barrier is needed and emits one accordingly. */ if (!(use_acquire || use_release)) |