From: David Edelsohn Date: Sat, 3 Aug 2002 23:23:49 +0000 (+0000) Subject: rs6000.md (movsi_internal1): Add nop mnemonic. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e34eaae5f3c9067a2ad835ba70bccd7e001ba058;p=gcc.git rs6000.md (movsi_internal1): Add nop mnemonic. * 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 53245bad17e..4fd7becf198 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,20 @@ +2002-08-03 David Edelsohn + + * 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 * builtins.def: Define new builtin functions exp, expf, expl, diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index 5aeb34f65e1..dd1cad7353b 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -8197,7 +8197,7 @@ 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")]) @@ -8250,7 +8250,7 @@ "" "{ 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) @@ -8263,7 +8263,7 @@ 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" @@ -8272,7 +8272,7 @@ "" "{ 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) @@ -8285,7 +8285,7 @@ mf%1 %0 mt%0 %1 mt%0 %1 - cror 0,0,0" + {cror 0,0,0|nop}" [(set_attr "type" "*,load,store,*,*,*,mtjmpr,*")]) ;; Here is how to move condition codes around. When we store CC data in @@ -8967,7 +8967,7 @@ 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")]) diff --git a/gcc/config/rs6000/t-ppccomm b/gcc/config/rs6000/t-ppccomm index 7570af4c641..f4fcdce60a9 100644 --- a/gcc/config/rs6000/t-ppccomm +++ b/gcc/config/rs6000/t-ppccomm @@ -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 \ diff --git a/gcc/config/rs6000/xcoff.h b/gcc/config/rs6000/xcoff.h index 0f70e8c25b5..6f968805083 100644 --- a/gcc/config/rs6000/xcoff.h +++ b/gcc/config/rs6000/xcoff.h @@ -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)