gas/
authorPeter Bergner <bergner@vnet.ibm.com>
Wed, 1 Apr 2009 01:41:07 +0000 (01:41 +0000)
committerPeter Bergner <bergner@vnet.ibm.com>
Wed, 1 Apr 2009 01:41:07 +0000 (01:41 +0000)
* config/tc-ppc.c (ppc_handle_align): Handle power7's group ending nop.

gas/testsuite/
* gas/ppc/power7.d ("ori", ".p2align"): Add tests for group ending nop.
* gas/ppc/power7.s: Likewise.
* gas/ppc/power6.d: Likewise.
* gas/ppc/power6.s: Likewise.

gas/ChangeLog
gas/config/tc-ppc.c
gas/testsuite/ChangeLog
gas/testsuite/gas/ppc/power6.d
gas/testsuite/gas/ppc/power6.s
gas/testsuite/gas/ppc/power7.d
gas/testsuite/gas/ppc/power7.s

index 3957744150762ccab481691570dcd2a1ba710452..fee4807f91bb5c4c11d1acd06c0d57cc8a6c0f2a 100644 (file)
@@ -1,3 +1,7 @@
+2009-03-31  Peter Bergner  <bergner@vnet.ibm.com>
+
+       * config/tc-ppc.c (ppc_handle_align): Handle power7's group ending nop.
+
 2009-03-31  Dave Korn  <dave.korn.cygwin@gmail.com>
 
        * doc/internals.texi:  Fix trivial syntax errors.
index 537b676be7e5d234801ca7fecfa2a43cc0c9bc28..0b0edbd97fc870947197c7ee72e8c0e14aaefb6b 100644 (file)
@@ -5687,13 +5687,14 @@ ppc_handle_align (struct frag *fragP)
       fragP->fr_var = 4;
       md_number_to_chars (dest, 0x60000000, 4);
 
-      if ((ppc_cpu & PPC_OPCODE_POWER6) != 0)
+      if ((ppc_cpu & PPC_OPCODE_POWER6) != 0
+         || (ppc_cpu & PPC_OPCODE_POWER7) != 0)
        {
-         /* For power6, we want the last nop to be a group terminating
-            one, "ori 1,1,0".  Do this by inserting an rs_fill frag
-            immediately after this one, with its address set to the last
-            nop location.  This will automatically reduce the number of
-            nops in the current frag by one.  */
+         /* For power6 and power7, we want the last nop to be a group
+            terminating one.  Do this by inserting an rs_fill frag immediately
+            after this one, with its address set to the last nop location.
+            This will automatically reduce the number of nops in the current
+            frag by one.  */
          if (count > 4)
            {
              struct frag *group_nop = xmalloc (SIZEOF_STRUCT_FRAG + 4);
@@ -5707,7 +5708,12 @@ ppc_handle_align (struct frag *fragP)
              dest = group_nop->fr_literal;
            }
 
-         md_number_to_chars (dest, 0x60210000, 4);
+         if ((ppc_cpu & PPC_OPCODE_POWER7) != 0)
+           /* power7 group terminating nop: "ori 2,2,0".  */
+           md_number_to_chars (dest, 0x60420000, 4);
+         else
+           /* power6 group terminating nop: "ori 1,1,0".  */
+           md_number_to_chars (dest, 0x60210000, 4);
        }
     }
 }
index b881c61482eff6dea0b026985a6db6cf958f1ba4..82db4f0f47505d78afdc1841d05affbec8ba3e76 100644 (file)
@@ -1,3 +1,10 @@
+2009-03-31  Peter Bergner  <bergner@vnet.ibm.com>
+
+       * gas/ppc/power7.d ("ori", ".p2align"): Add tests for group ending nop.
+       * gas/ppc/power7.s: Likewise.
+       * gas/ppc/power6.d: Likewise.
+       * gas/ppc/power6.s: Likewise.
+
 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
 
        * gas/arm/mapsecs.d, gas/arm/mapsecs.s: New.
index c4d1ff0c0e91389b5965faa0e6ba698371af8584..bf75982a279b9429b80318b2b98c481b2d8d6997 100644 (file)
@@ -69,3 +69,5 @@ Disassembly of section \.text:
   ec:  7d 6a 02 74     cbcdtd  r10,r11
   f0:  7d 6a 02 34     cdtbcd  r10,r11
   f4:  7d 4b 60 94     addg6s  r10,r11,r12
+  f8:  60 21 00 00     ori     r1,r1,0
+  fc:  60 21 00 00     ori     r1,r1,0
index 9f5cde15c6ceffed3dcb7f500b9722f056e86e34..106468f17d46ebc7da5cdb087fbab6790ddff3f5 100644 (file)
@@ -64,3 +64,5 @@ start:
        cbcdtd  10,11
        cdtbcd  10,11
        addg6s  10,11,12
+       ori     1,1,0
+       .p2align 4,,15
index b8dae904d48f3c67c204aeca17cc21f63ac4ca6a..b97418374e00a9380bacbe15d5b8f5ea1063f305 100644 (file)
@@ -111,3 +111,7 @@ Disassembly of section \.text:
  194:  ed c0 78 34     frsqrtes f14,f15
  198:  ed c0 78 35     frsqrtes\. f14,f15
  19c:  7c 43 27 1e     isel    r2,r3,r4,28
+ 1a0:  60 42 00 00     ori     r2,r2,0
+ 1a4:  60 00 00 00     nop
+ 1a8:  60 00 00 00     nop
+ 1ac:  60 42 00 00     ori     r2,r2,0
index 2e2448abec6945b25c77069c6a60f0da5ed8d7fc..773645253cf47a177a6bee7c9f1b39238d1d7d3b 100644 (file)
@@ -104,3 +104,5 @@ power7:
        frsqrtes  14,15
        frsqrtes. 14,15
        isel      2,3,4,28
+       ori       2,2,0
+       .p2align 4,,15