]> gcc.gnu.org Git - gcc.git/commitdiff
re PR c/5972 (produces wrong assembly code when -march=pentiumpro and optimization...
authorJakub Jelinek <jakub@gcc.gnu.org>
Wed, 20 Mar 2002 21:47:07 +0000 (22:47 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Wed, 20 Mar 2002 21:47:07 +0000 (22:47 +0100)
PR c/5972
* config/i386/i386.md (movdicc_c_rex64, movsicc_noc, movhicc_noc,
movsfcc_1, movdfcc_1): Add %O2.
* config/i386/i386.c (print_operand): Handle %ON.
Print . before float condition codes in Sun as cmov syntax.
* config/i386/sol2.h (CMOV_SUN_AS_SYNTAX): Define for Sun as.
* config.gcc (i[34567]86-*-solaris2*): Remove comment which is
no longer true.

From-SVN: r51086

gcc/ChangeLog
gcc/config.gcc
gcc/config/i386/i386.c
gcc/config/i386/i386.md
gcc/config/i386/sol2.h

index f441576f18bf4fd095bfb6f943316c4e2b0ea950..1e3bb435d8d2b5c8745f56b59075becfba45eb1c 100644 (file)
@@ -1,3 +1,14 @@
+2002-03-20  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c/5972
+       * config/i386/i386.md (movdicc_c_rex64, movsicc_noc, movhicc_noc,
+       movsfcc_1, movdfcc_1): Add %O2.
+       * config/i386/i386.c (print_operand): Handle %ON.
+       Print . before float condition codes in Sun as cmov syntax.
+       * config/i386/sol2.h (CMOV_SUN_AS_SYNTAX): Define for Sun as.
+       * config.gcc (i[34567]86-*-solaris2*): Remove comment which is
+       no longer true.
+
 2002-03-20  Philip Blundell  <pb@nexus.co.uk>
 
        * config/arm/arm.c (arm_output_epilogue): Don't generate separate
@@ -8,7 +19,7 @@
        * config/xtensa/xtensa.md: Remove unused type attributes.
        (adddi_carry, subddi_carry): Change type attribute to "multi".
 
-2002-03-19 Dale Johannesen  <dalej@apple.com>
+2002-03-19  Dale Johannesen  <dalej@apple.com>
 
        PR optimization/5999, middle-end/5731
        * expr.c (expand_expr) [RDIV_EXPR]: Only convert real divisions into
index 4b59903f66b1cef97f34bfdd39a6580475a43c8c..8337baf2c84c216fd4059e93de14fe8a72178afa 100644 (file)
@@ -1333,7 +1333,6 @@ i[34567]86-*-solaris2*)
        xm_defines="POSIX SMALL_ARG_MAX"
        tm_file="${tm_file} i386/att.h dbxelf.h elfos.h svr4.h i386/sysv4.h i386/sol2.h"
        if test x$gas = xyes; then
-               # Only needed if gas does not support -s
                tm_file="i386/sol2gas.h ${tm_file}"
        fi
        tmake_file="i386/t-sol2 t-svr4"
index 2d0649944d6e23b7aaadfabec68081c5337a77b6..17a10c8f47e0e93af3249d077a9632e78a4a156e 100644 (file)
@@ -5640,6 +5640,8 @@ print_reg (x, code, file)
    C -- print opcode suffix for set/cmov insn.
    c -- like C, but print reversed condition
    F,f -- likewise, but for floating-point.
+   O -- if CMOV_SUN_AS_SYNTAX, expand to "w.", "l." or "q.", otherwise
+        nothing
    R -- print the prefix for register names.
    z -- print the opcode suffix for the size of the current operand.
    * -- print a star (in certain assembler syntax)
@@ -5837,10 +5839,31 @@ print_operand (file, x, code)
              break;
            }
          return;
+       case 'O':
+#ifdef CMOV_SUN_AS_SYNTAX
+         if (ASSEMBLER_DIALECT == ASM_ATT)
+           {
+             switch (GET_MODE (x))
+               {
+               case HImode: putc ('w', file); break;
+               case SImode:
+               case SFmode: putc ('l', file); break;
+               case DImode:
+               case DFmode: putc ('q', file); break;
+               default: abort ();
+               }
+             putc ('.', file);
+           }
+#endif
+         return;
        case 'C':
          put_condition_code (GET_CODE (x), GET_MODE (XEXP (x, 0)), 0, 0, file);
          return;
        case 'F':
+#ifdef CMOV_SUN_AS_SYNTAX
+         if (ASSEMBLER_DIALECT == ASM_ATT)
+           putc ('.', file);
+#endif
          put_condition_code (GET_CODE (x), GET_MODE (XEXP (x, 0)), 0, 1, file);
          return;
 
@@ -5856,6 +5879,10 @@ print_operand (file, x, code)
          put_condition_code (GET_CODE (x), GET_MODE (XEXP (x, 0)), 1, 0, file);
          return;
        case 'f':
+#ifdef CMOV_SUN_AS_SYNTAX
+         if (ASSEMBLER_DIALECT == ASM_ATT)
+           putc ('.', file);
+#endif
          put_condition_code (GET_CODE (x), GET_MODE (XEXP (x, 0)), 1, 1, file);
          return;
        case '+':
index 41d864977fd024d4d360d14dd469c298bd6a5d0e..079dfc03e09c177e51c63105add6c080dd8cd24a 100644 (file)
   "TARGET_64BIT && TARGET_CMOVE
    && (GET_CODE (operands[2]) != MEM || GET_CODE (operands[3]) != MEM)"
   "@
-   cmov%C1\t{%2, %0|%0, %2}
-   cmov%c1\t{%3, %0|%0, %3}"
+   cmov%O2%C1\t{%2, %0|%0, %2}
+   cmov%O2%c1\t{%3, %0|%0, %3}"
   [(set_attr "type" "icmov")
    (set_attr "mode" "DI")])
 
   "TARGET_CMOVE
    && (GET_CODE (operands[2]) != MEM || GET_CODE (operands[3]) != MEM)"
   "@
-   cmov%C1\t{%2, %0|%0, %2}
-   cmov%c1\t{%3, %0|%0, %3}"
+   cmov%O2%C1\t{%2, %0|%0, %2}
+   cmov%O2%c1\t{%3, %0|%0, %3}"
   [(set_attr "type" "icmov")
    (set_attr "mode" "SI")])
 
   "TARGET_CMOVE
    && (GET_CODE (operands[2]) != MEM || GET_CODE (operands[3]) != MEM)"
   "@
-   cmov%C1\t{%2, %0|%0, %2}
-   cmov%c1\t{%3, %0|%0, %3}"
+   cmov%O2%C1\t{%2, %0|%0, %2}
+   cmov%O2%c1\t{%3, %0|%0, %3}"
   [(set_attr "type" "icmov")
    (set_attr "mode" "HI")])
 
   "@
    fcmov%F1\t{%2, %0|%0, %2}
    fcmov%f1\t{%3, %0|%0, %3}
-   cmov%C1\t{%2, %0|%0, %2}
-   cmov%c1\t{%3, %0|%0, %3}"
+   cmov%O2%C1\t{%2, %0|%0, %2}
+   cmov%O2%c1\t{%3, %0|%0, %3}"
   [(set_attr "type" "fcmov,fcmov,icmov,icmov")
    (set_attr "mode" "SF,SF,SI,SI")])
 
   "@
    fcmov%F1\t{%2, %0|%0, %2}
    fcmov%f1\t{%3, %0|%0, %3}
-   cmov%C1\t{%2, %0|%0, %2}
-   cmov%c1\t{%3, %0|%0, %3}"
+   cmov%O2%C1\t{%2, %0|%0, %2}
+   cmov%O2%c1\t{%3, %0|%0, %3}"
   [(set_attr "type" "fcmov,fcmov,icmov,icmov")
    (set_attr "mode" "DF")])
 
index 6fb2eb598f0bb3299f2bd5de3ead147c689768cf..79c9ea8327f3d37e1069a89c00780933cdf0ab90 100644 (file)
@@ -39,6 +39,8 @@ Boston, MA 02111-1307, USA.  */
 #define ASM_SPEC \
   "%{v:-V} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Wa,*:%*} -s"
 
+#define CMOV_SUN_AS_SYNTAX 1
+
 #else /* GAS_REJECTS_MINUS_S */
 
 /* Same as above, except for -s, unsupported by GNU as.  */
This page took 0.108364 seconds and 5 git commands to generate.