mirror of git://gcc.gnu.org/git/gcc.git
alpha.c (alpha_emit_conditional_branch): Handle ORDERED and UNORDERED conditions.
* config/alpha/alpha.c (alpha_emit_conditional_branch): Handle ORDERED and UNORDERED conditions. From-SVN: r187411
This commit is contained in:
parent
835c9db01f
commit
d2b21f2062
|
@ -1,3 +1,8 @@
|
||||||
|
2012-05-12 Uros Bizjak <ubizjak@gmail.com>
|
||||||
|
|
||||||
|
* config/alpha/alpha.c (alpha_emit_conditional_branch): Handle
|
||||||
|
ORDERED and UNORDERED conditions.
|
||||||
|
|
||||||
2012-05-11 Richard Guenther <rguenther@suse.de>
|
2012-05-11 Richard Guenther <rguenther@suse.de>
|
||||||
|
|
||||||
* tree-flow.h (referenced_var_check_and_insert): Remove.
|
* tree-flow.h (referenced_var_check_and_insert): Remove.
|
||||||
|
|
|
@ -2335,7 +2335,7 @@ alpha_emit_conditional_branch (rtx operands[], enum machine_mode cmp_mode)
|
||||||
{
|
{
|
||||||
case EQ: case LE: case LT: case LEU: case LTU:
|
case EQ: case LE: case LT: case LEU: case LTU:
|
||||||
case UNORDERED:
|
case UNORDERED:
|
||||||
/* We have these compares: */
|
/* We have these compares. */
|
||||||
cmp_code = code, branch_code = NE;
|
cmp_code = code, branch_code = NE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -2572,13 +2572,15 @@ alpha_emit_conditional_move (rtx cmp, enum machine_mode mode)
|
||||||
switch (code)
|
switch (code)
|
||||||
{
|
{
|
||||||
case EQ: case LE: case LT: case LEU: case LTU:
|
case EQ: case LE: case LT: case LEU: case LTU:
|
||||||
|
case UNORDERED:
|
||||||
/* We have these compares. */
|
/* We have these compares. */
|
||||||
cmp_code = code, code = NE;
|
cmp_code = code, code = NE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case NE:
|
case NE:
|
||||||
/* This must be reversed. */
|
case ORDERED:
|
||||||
cmp_code = EQ, code = EQ;
|
/* These must be reversed. */
|
||||||
|
cmp_code = reverse_condition (code), code = EQ;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GE: case GT: case GEU: case GTU:
|
case GE: case GT: case GEU: case GTU:
|
||||||
|
@ -2598,6 +2600,14 @@ alpha_emit_conditional_move (rtx cmp, enum machine_mode mode)
|
||||||
gcc_unreachable ();
|
gcc_unreachable ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (cmp_mode == DImode)
|
||||||
|
{
|
||||||
|
if (!reg_or_0_operand (op0, DImode))
|
||||||
|
op0 = force_reg (DImode, op0);
|
||||||
|
if (!reg_or_8bit_operand (op1, DImode))
|
||||||
|
op1 = force_reg (DImode, op1);
|
||||||
|
}
|
||||||
|
|
||||||
tem = gen_reg_rtx (cmp_mode);
|
tem = gen_reg_rtx (cmp_mode);
|
||||||
emit_insn (gen_rtx_SET (VOIDmode, tem,
|
emit_insn (gen_rtx_SET (VOIDmode, tem,
|
||||||
gen_rtx_fmt_ee (cmp_code, cmp_mode,
|
gen_rtx_fmt_ee (cmp_code, cmp_mode,
|
||||||
|
@ -2609,6 +2619,14 @@ alpha_emit_conditional_move (rtx cmp, enum machine_mode mode)
|
||||||
local_fast_math = 1;
|
local_fast_math = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (cmp_mode == DImode)
|
||||||
|
{
|
||||||
|
if (!reg_or_0_operand (op0, DImode))
|
||||||
|
op0 = force_reg (DImode, op0);
|
||||||
|
if (!reg_or_8bit_operand (op1, DImode))
|
||||||
|
op1 = force_reg (DImode, op1);
|
||||||
|
}
|
||||||
|
|
||||||
/* We may be able to use a conditional move directly.
|
/* We may be able to use a conditional move directly.
|
||||||
This avoids emitting spurious compares. */
|
This avoids emitting spurious compares. */
|
||||||
if (signed_comparison_operator (cmp, VOIDmode)
|
if (signed_comparison_operator (cmp, VOIDmode)
|
||||||
|
@ -2627,11 +2645,13 @@ alpha_emit_conditional_move (rtx cmp, enum machine_mode mode)
|
||||||
switch (code)
|
switch (code)
|
||||||
{
|
{
|
||||||
case EQ: case LE: case LT: case LEU: case LTU:
|
case EQ: case LE: case LT: case LEU: case LTU:
|
||||||
|
case UNORDERED:
|
||||||
/* We have these compares: */
|
/* We have these compares: */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case NE:
|
case NE:
|
||||||
/* This must be reversed. */
|
case ORDERED:
|
||||||
|
/* These must be reversed. */
|
||||||
code = reverse_condition (code);
|
code = reverse_condition (code);
|
||||||
cmov_code = EQ;
|
cmov_code = EQ;
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue