rs6000.md (movsi_internal1): Add nop mnemonic.
authorDavid Edelsohn <edelsohn@gnu.org>
Sat, 3 Aug 2002 23:23:49 +0000 (23:23 +0000)
committerDavid Edelsohn <dje@gcc.gnu.org>
Sat, 3 Aug 2002 23:23:49 +0000 (19:23 -0400)
        * config/rs6000/rs6000.md (movsi_internal1): Add nop mnemonic.
        (movhi_internal): Same.
        (movqi_internal): Same.
        (movdi_internal64): Same.

        * config/rs6000/t-ppccomm (MULTILIB_MATCHES_FLOAT): Add mcpu=405.

        * config/rs6000/xcoff.h (SKIP_ASM_OP): Define.
        (ASM_OUTPUT_SKIP): Use it.  SIZE unsigned.
        (COMMON_ASM_OP): Define.
        (ASM_OUTPUT_ALIGNED_COMMON): Use it.  SIZE unsigned.
        Use ALIGN parameter.
        (LOCAL_COMMON_ASM_OP): Define.
        (ASM_OUTPUT_LOCAL): Use it.  SIZE unsigned.

From-SVN: r56011

gcc/ChangeLog
gcc/config/rs6000/rs6000.md
gcc/config/rs6000/t-ppccomm
gcc/config/rs6000/xcoff.h

index 53245bad17ef24866e9bcc00ccba341e6510b71f..4fd7becf198571b6313286d16031ecb048c60afd 100644 (file)
@@ -1,3 +1,20 @@
+2002-08-03  David Edelsohn  <edelsohn@gnu.org>
+
+       * config/rs6000/rs6000.md (movsi_internal1): Add nop mnemonic.
+       (movhi_internal): Same.
+       (movqi_internal): Same.
+       (movdi_internal64): Same.
+
+       * config/rs6000/t-ppccomm (MULTILIB_MATCHES_FLOAT): Add mcpu=405.
+
+       * config/rs6000/xcoff.h (SKIP_ASM_OP): Define.
+       (ASM_OUTPUT_SKIP): Use it.  SIZE unsigned.
+       (COMMON_ASM_OP): Define.
+       (ASM_OUTPUT_ALIGNED_COMMON): Use it.  SIZE unsigned.
+       Use ALIGN parameter.
+       (LOCAL_COMMON_ASM_OP): Define.
+       (ASM_OUTPUT_LOCAL): Use it.  SIZE unsigned.
+
 2002-08-03  Roger Sayle  <roger@eyesopen.com>
 
        * builtins.def: Define new builtin functions exp, expf, expl,
index 5aeb34f65e12306a4cba65260639208ef4a40921..dd1cad7353bd0e17579fc7912434d9fa9285d481 100644 (file)
    mt%0 %1
    mt%0 %1
    mt%0 %1
-   cror 0,0,0"
+   {cror 0,0,0|nop}"
   [(set_attr "type" "*,*,load,store,*,*,*,*,*,*,mtjmpr,*,*")
    (set_attr "length" "4,4,4,4,4,4,8,4,4,4,4,4,4")])
 
   ""
   "{ rs6000_emit_move (operands[0], operands[1], HImode); DONE; }")
 
-(define_insn ""
+(define_insn "*movhi_internal"
   [(set (match_operand:HI 0 "nonimmediate_operand" "=r,r,m,r,r,*q,*c*l,*h")
        (match_operand:HI 1 "input_operand" "r,m,r,i,*h,r,r,0"))]
   "gpc_reg_operand (operands[0], HImode)
    mf%1 %0
    mt%0 %1
    mt%0 %1
-   cror 0,0,0"
+   {cror 0,0,0|nop}"
   [(set_attr "type" "*,load,store,*,*,*,mtjmpr,*")])
 
 (define_expand "movqi"
   ""
   "{ rs6000_emit_move (operands[0], operands[1], QImode); DONE; }")
 
-(define_insn ""
+(define_insn "*movqi_internal"
   [(set (match_operand:QI 0 "nonimmediate_operand" "=r,r,m,r,r,*q,*c*l,*h")
        (match_operand:QI 1 "input_operand" "r,m,r,i,*h,r,r,0"))]
   "gpc_reg_operand (operands[0], QImode)
    mf%1 %0
    mt%0 %1
    mt%0 %1
-   cror 0,0,0"
+   {cror 0,0,0|nop}"
   [(set_attr "type" "*,load,store,*,*,*,mtjmpr,*")])
 \f
 ;; Here is how to move condition codes around.  When we store CC data in
    stfd%U0%X0 %1,%0
    mf%1 %0
    mt%0 %1
-   cror 0,0,0"
+   {cror 0,0,0|nop}"
   [(set_attr "type" "*,load,store,*,*,*,*,fp,fpload,fpstore,*,mtjmpr,*")
    (set_attr "length" "4,4,4,4,4,20,4,4,4,4,4,4,4")])
 
index 7570af4c6418ae44c2e13628d2ef55718c3561f9..f4fcdce60a970818d8eb065849ba9aa8d22a1f24 100644 (file)
@@ -27,6 +27,7 @@ tramp.S: $(srcdir)/config/rs6000/tramp.asm
 # Switch synonyms
 MULTILIB_MATCHES_FLOAT = msoft-float=mcpu?401 \
                          msoft-float=mcpu?403 \
+                         msoft-float=mcpu?405 \
                          msoft-float=mcpu?ec603e \
                          msoft-float=mcpu?801 \
                          msoft-float=mcpu?821 \
index 0f70e8c25b52755c6b76c2e670e026448ed94d69..6f968805083c12475a93aff145e337437621325d 100644 (file)
@@ -353,19 +353,26 @@ toc_section ()                                            \
 
 /* This is how to advance the location counter by SIZE bytes.  */
 
+#define SKIP_ASM_OP "\t.space "
+
 #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
-  fprintf (FILE, "\t.space %d\n", (SIZE))
+  fprintf (FILE, "%s%u\n", SKIP_ASM_OP, (SIZE))
 
 /* This says how to output an assembler line
    to define a global common symbol.  */
 
-#define ASM_OUTPUT_ALIGNED_COMMON(FILE, NAME, SIZE, ALIGNMENT) \
-  do { fputs ("\t.comm ", (FILE));                     \
+#define COMMON_ASM_OP "\t.comm "
+
+#define ASM_OUTPUT_ALIGNED_COMMON(FILE, NAME, SIZE, ALIGN)     \
+  do { fputs (COMMON_ASM_OP, (FILE));                  \
        RS6000_OUTPUT_BASENAME ((FILE), (NAME));                \
-       if ( (SIZE) > 4)                                        \
-         fprintf ((FILE), ",%d,3\n", (SIZE));          \
+       if ((ALIGN) > 32)                               \
+        fprintf ((FILE), ",%u,%u\n", (SIZE),           \
+                 exact_log2 ((ALIGN) / BITS_PER_UNIT)); \
+       else if ((SIZE) > 4)                            \
+         fprintf ((FILE), ",%u,3\n", (SIZE));          \
        else                                            \
-        fprintf ((FILE), ",%d\n", (SIZE));             \
+        fprintf ((FILE), ",%u\n", (SIZE));             \
   } while (0)
 
 /* This says how to output an assembler line
@@ -374,10 +381,12 @@ toc_section ()                                            \
    alignment after preceding TOC section if it was aligned
    for 64-bit mode.  */
 
+#define LOCAL_COMMON_ASM_OP "\t.lcomm "
+
 #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)    \
-  do { fputs ("\t.lcomm ", (FILE));                    \
+  do { fputs (LOCAL_COMMON_ASM_OP, (FILE));            \
        RS6000_OUTPUT_BASENAME ((FILE), (NAME));                \
-       fprintf ((FILE), ",%d,%s\n", (TARGET_32BIT ? (SIZE) : (ROUNDED)), \
+       fprintf ((FILE), ",%u,%s\n", (TARGET_32BIT ? (SIZE) : (ROUNDED)), \
                xcoff_bss_section_name);                \
      } while (0)