2000-12-14 Richard Henderson <rth@redhat.com>
+ * config/alpha/alpha.c (alpha_emit_conditional_move): Do not swap
+ comparison operands when that would create non-canonical rtl.
+
* config/i386/i386.md (umulsi3_highpart): Remove * from name.
(smulsi3_highpart): Likewise.
case GE: case GT: case GEU: case GTU:
/* These must be swapped. */
- cmp_code = swap_condition (code);
- code = NE;
- tem = op0, op0 = op1, op1 = tem;
+ if (op1 == CONST0_RTX (cmp_mode))
+ cmp_code = code, code = NE;
+ else
+ {
+ cmp_code = swap_condition (code);
+ code = NE;
+ tem = op0, op0 = op1, op1 = tem;
+ }
break;
default:
case GE: case GT: case GEU: case GTU:
/* These must be swapped. */
- code = swap_condition (code);
- tem = op0, op0 = op1, op1 = tem;
+ if (op1 != CONST0_RTX (cmp_mode))
+ {
+ code = swap_condition (code);
+ tem = op0, op0 = op1, op1 = tem;
+ }
break;
default: