(movsicc, case NE): Don't generate unrecognizable insn.
authorDoug Evans <dje@gnu.org>
Mon, 15 May 1995 01:32:32 +0000 (01:32 +0000)
committerDoug Evans <dje@gnu.org>
Mon, 15 May 1995 01:32:32 +0000 (01:32 +0000)
(movdicc, case NE): Likewise.

From-SVN: r9685

gcc/config/alpha/alpha.md

index 4f46a13..aa745ab 100644 (file)
   "
 {
   rtx op0,op1;
-  enum rtx_code code = GET_CODE (operands[1]);
+  enum rtx_code code = GET_CODE (operands[1]), code2 = NE;
 
   if (alpha_compare_fp_p)
     FAIL;
   switch (code)
     {
-    case EQ: case NE: case LE: case LT:
+    case EQ: case LE: case LT:
+      op0 = alpha_compare_op0;
+      op1 = alpha_compare_op1;
+      break;
+    case NE:
+      code = code2 = EQ;
       op0 = alpha_compare_op0;
       op1 = alpha_compare_op1;
       break;
     }
   operands[1] = gen_rtx (code, DImode, op0, op1);
   operands[4] = gen_reg_rtx (DImode);
-  operands[5] = gen_rtx (NE, VOIDmode, operands[4], CONST0_RTX (DImode));
+  operands[5] = gen_rtx (code2, VOIDmode, operands[4], CONST0_RTX (DImode));
 }")
 
 (define_expand "movdicc"
   "
 {
   rtx op0,op1;
-  enum rtx_code code = GET_CODE (operands[1]);
+  enum rtx_code code = GET_CODE (operands[1]), code2 = NE;
 
   if (alpha_compare_fp_p)
     FAIL;
   switch (code)
     {
-    case EQ: case NE: case LE: case LT:
+    case EQ: case LE: case LT:
+      op0 = alpha_compare_op0;
+      op1 = alpha_compare_op1;
+      break;
+    case NE:
+      code = code2 = EQ;
       op0 = alpha_compare_op0;
       op1 = alpha_compare_op1;
       break;
     }
   operands[1] = gen_rtx (code, DImode, op0, op1);
   operands[4] = gen_reg_rtx (DImode);
-  operands[5] = gen_rtx (NE, VOIDmode, operands[4], CONST0_RTX (DImode));
+  operands[5] = gen_rtx (code2, VOIDmode, operands[4], CONST0_RTX (DImode));
 }")
 
 (define_expand "movsfcc"