Revert accidental checkin of the FCOMI patch that I was testing.
authorJeff Law <law@gcc.gnu.org>
Fri, 16 Apr 1999 00:15:01 +0000 (18:15 -0600)
committerJeff Law <law@gcc.gnu.org>
Fri, 16 Apr 1999 00:15:01 +0000 (18:15 -0600)
From-SVN: r26486

gcc/config/i386/i386.c

index 1270226bdd826c201f9c720155fcec4d2ca6294d..843c84c8fd52907d3c45b097f827ed9bc6c2eece 100644 (file)
@@ -3139,8 +3139,7 @@ put_jump_code (code, reverse, file)
      FILE *file;
 {
   int flags = cc_prev_status.flags;
-  int ieee = (TARGET_IEEE_FP && (flags & CC_IN_80387)
-             && !(cc_prev_status.flags & CC_FCOMI));
+  int ieee = (TARGET_IEEE_FP && (flags & CC_IN_80387));
   const char *suffix;
 
   if (flags & CC_Z_IN_NOT_C)
@@ -3897,7 +3896,7 @@ notice_update_cc (exp)
           if (stack_regs_mentioned_p (SET_SRC (XVECEXP (exp, 0, 0))))
            {
               cc_status.flags |= CC_IN_80387;
-             if (TARGET_CMOVE && stack_regs_mentioned_p
+             if (0 && TARGET_CMOVE && stack_regs_mentioned_p
                  (XEXP (SET_SRC (XVECEXP (exp, 0, 0)), 1)))
                cc_status.flags |= CC_FCOMI;
            }
@@ -4255,7 +4254,7 @@ output_float_compare (insn, operands)
   int unordered_compare = GET_MODE (SET_SRC (body)) == CCFPEQmode;
   rtx tmp;
 
-  if (TARGET_CMOVE && STACK_REG_P (operands[1]))
+  if (0 && TARGET_CMOVE && STACK_REG_P (operands[1]))
     {
       cc_status.flags |= CC_FCOMI;
       cc_prev_status.flags &= ~CC_TEST_AX;
@@ -4289,8 +4288,7 @@ output_float_compare (insn, operands)
            {
              output_asm_insn (AS2 (fucomip,%y1,%0), operands);
              output_asm_insn (AS1 (fstp, %y0), operands);
-             if (!TARGET_IEEE_FP)
-               return "";
+             return "";
            }
          else
            output_asm_insn ("fucompp", operands);
@@ -4326,8 +4324,7 @@ output_float_compare (insn, operands)
       if (cc_status.flags & CC_FCOMI)
        {
          output_asm_insn (strcat (buf, AS2 (%z1,%y1,%0)), operands);
-         if (!TARGET_IEEE_FP)
-           return "";
+         return "";
        }
       else
         output_asm_insn (strcat (buf, AS1 (%z1,%y1)), operands);
@@ -4351,19 +4348,17 @@ output_fp_cc0_set (insn)
   rtx next;
   enum rtx_code code;
 
-  if (!(cc_status.flags & CC_FCOMI))
-    {
-      xops[0] = gen_rtx_REG (HImode, 0);
-      output_asm_insn (AS1 (fnsts%W0,%0), xops);
-    }
+  xops[0] = gen_rtx_REG (HImode, 0);
+  output_asm_insn (AS1 (fnsts%W0,%0), xops);
 
   if (! TARGET_IEEE_FP)
     {
       if (!(cc_status.flags & CC_REVERSED))
         {
           next = next_cc0_user (insn);
-  
-          if (GET_CODE (PATTERN (next)) == SET
+
+          if (GET_CODE (next) == JUMP_INSN
+              && GET_CODE (PATTERN (next)) == SET
               && SET_DEST (PATTERN (next)) == pc_rtx
               && GET_CODE (SET_SRC (PATTERN (next))) == IF_THEN_ELSE)
            code = GET_CODE (XEXP (SET_SRC (PATTERN (next)), 0));
@@ -4388,7 +4383,8 @@ output_fp_cc0_set (insn)
   if (next == NULL_RTX)
     abort ();
 
-  if (GET_CODE (PATTERN (next)) == SET
+  if (GET_CODE (next) == JUMP_INSN
+      && GET_CODE (PATTERN (next)) == SET
       && SET_DEST (PATTERN (next)) == pc_rtx
       && GET_CODE (SET_SRC (PATTERN (next))) == IF_THEN_ELSE)
     code = GET_CODE (XEXP (SET_SRC (PATTERN (next)), 0));
@@ -4411,103 +4407,61 @@ output_fp_cc0_set (insn)
   else
     abort ();
 
-  if (cc_status.flags & CC_FCOMI)
-    {
-      /* It is very tricky. We have to do it right. */
-
-      xops [0] = gen_rtx_REG (QImode, 0);
-
-      switch (code)
-       {
-       case GT:
-       case GE:
-         break;
-
-       case LT:
-         output_asm_insn (AS1 (setb,%b0), xops);
-         output_asm_insn (AS1 (setp,%h0), xops);
-         output_asm_insn (AS2 (cmp%B0,%b0,%h0), xops);
-         break;
+  xops[0] = gen_rtx_REG (QImode, 0);
 
-       case LE:
-         output_asm_insn (AS1 (setbe,%b0), xops);
-         output_asm_insn (AS1 (setnp,%h0), xops);
-         output_asm_insn (AS2 (xor%B0,%b0,%h0), xops);
-         break;
-
-       case EQ:
-       case NE:
-         output_asm_insn (AS1 (setne,%b0), xops);
-         output_asm_insn (AS1 (setp,%h0), xops);
-         output_asm_insn (AS2 (or%B0,%b0,%h0), xops);
-         break;
-
-       case GTU:
-       case LTU:
-       case GEU:
-       case LEU:
-       default:
-         abort ();
-       }
-    }
-  else
+  switch (code)
     {
-      xops[0] = gen_rtx_REG (QImode, 0);
-
-      switch (code)
-       {
-       case GT:
-         xops[1] = GEN_INT (0x45);
-         output_asm_insn (AS2 (and%B0,%1,%h0), xops);
-         /* je label */
-         break;
+    case GT:
+      xops[1] = GEN_INT (0x45);
+      output_asm_insn (AS2 (and%B0,%1,%h0), xops);
+      /* je label */
+      break;
 
-       case LT:
-         xops[1] = GEN_INT (0x45);
-         xops[2] = GEN_INT (0x01);
-         output_asm_insn (AS2 (and%B0,%1,%h0), xops);
-         output_asm_insn (AS2 (cmp%B0,%2,%h0), xops);
-         /* je label */
-         break;
+    case LT:
+      xops[1] = GEN_INT (0x45);
+      xops[2] = GEN_INT (0x01);
+      output_asm_insn (AS2 (and%B0,%1,%h0), xops);
+      output_asm_insn (AS2 (cmp%B0,%2,%h0), xops);
+      /* je label */
+      break;
 
-       case GE:
-         xops[1] = GEN_INT (0x05);
-         output_asm_insn (AS2 (and%B0,%1,%h0), xops);
-         /* je label */
-         break;
+    case GE:
+      xops[1] = GEN_INT (0x05);
+      output_asm_insn (AS2 (and%B0,%1,%h0), xops);
+      /* je label */
+      break;
 
-       case LE:
-         xops[1] = GEN_INT (0x45);
-         xops[2] = GEN_INT (0x40);
-         output_asm_insn (AS2 (and%B0,%1,%h0), xops);
-         output_asm_insn (AS1 (dec%B0,%h0), xops);
-         output_asm_insn (AS2 (cmp%B0,%2,%h0), xops);
-         /* jb label */
-         break;
+    case LE:
+      xops[1] = GEN_INT (0x45);
+      xops[2] = GEN_INT (0x40);
+      output_asm_insn (AS2 (and%B0,%1,%h0), xops);
+      output_asm_insn (AS1 (dec%B0,%h0), xops);
+      output_asm_insn (AS2 (cmp%B0,%2,%h0), xops);
+      /* jb label */
+      break;
 
-       case EQ:
-         xops[1] = GEN_INT (0x45);
-         xops[2] = GEN_INT (0x40);
-         output_asm_insn (AS2 (and%B0,%1,%h0), xops);
-         output_asm_insn (AS2 (cmp%B0,%2,%h0), xops);
-         /* je label */
-         break;
+    case EQ:
+      xops[1] = GEN_INT (0x45);
+      xops[2] = GEN_INT (0x40);
+      output_asm_insn (AS2 (and%B0,%1,%h0), xops);
+      output_asm_insn (AS2 (cmp%B0,%2,%h0), xops);
+      /* je label */
+      break;
 
-       case NE:
-         xops[1] = GEN_INT (0x44);
-         xops[2] = GEN_INT (0x40);
-         output_asm_insn (AS2 (and%B0,%1,%h0), xops);
-         output_asm_insn (AS2 (xor%B0,%2,%h0), xops);
-         /* jne label */
-         break;
+    case NE:
+      xops[1] = GEN_INT (0x44);
+      xops[2] = GEN_INT (0x40);
+      output_asm_insn (AS2 (and%B0,%1,%h0), xops);
+      output_asm_insn (AS2 (xor%B0,%2,%h0), xops);
+      /* jne label */
+      break;
 
-       case GTU:
-       case LTU:
-       case GEU:
-       case LEU:
-       default:
-         abort ();
-       }
+    case GTU:
+    case LTU:
+    case GEU:
+    case LEU:
+    default:
+      abort ();
     }
 
   return "";