S/390: Hotpatching fixes.
authorDominik Vogt <vogt@linux.vnet.ibm.com>
Thu, 12 Mar 2015 11:13:40 +0000 (11:13 +0000)
committerAndreas Krebbel <krebbel@gcc.gnu.org>
Thu, 12 Mar 2015 11:13:40 +0000 (11:13 +0000)
2015-03-02  Dominik Vogt  <vogt@linux.vnet.ibm.com>

    * config/s390/s390.c (s390_reorg): Move code to output nops after label
    to s390_reorg ().
    (s390_asm_output_function_label): Likewise.
    * config/s390/s390.c (s390_asm_output_function_label):
    Fix function label alignment with -mhtopatch.
    * config/s390/s390.md ("unspecv"): New values UNSPECV_NOP_2_BYTE,
    UNSPECV_NOP_4_BYTE and UNSPECV_NOP_6_BYTE
    ("nop_2_byte"): New define_insn.
    ("nop_4_byte"): Likewise.
    ("nop_6_byte"): Likewise.
    * doc/extend.texi (hotpatch): hotpatch attribute doc fixes.
    * doc/invoke.texi (-mhotpatch): -mhotpatch doc fixes.

2015-03-02  Dominik Vogt  <vogt@linux.vnet.ibm.com>

    * gcc.target/s390/hotpatch-21.c: New test for hotpatch alignment.
    * gcc.target/s390/hotpatch-22.c: Likewise.
    * gcc.target/s390/hotpatch-23.c: Likewise.
    * gcc.target/s390/hotpatch-24.c: Likewise.
    * gcc.target/s390/hotpatch-2.c: Also check hotpatch alignment.
    * gcc.target/s390/hotpatch-1.c: Update expected output.
    * gcc.target/s390/hotpatch-2.c: Likewise.
    * gcc.target/s390/hotpatch-3.c: Likewise.
    * gcc.target/s390/hotpatch-4.c: Likewise.
    * gcc.target/s390/hotpatch-5.c: Likewise.
    * gcc.target/s390/hotpatch-6.c: Likewise.
    * gcc.target/s390/hotpatch-7.c: Likewise.
    * gcc.target/s390/hotpatch-8.c: Likewise.
    * gcc.target/s390/hotpatch-9.c: Likewise.
    * gcc.target/s390/hotpatch-10.c: Likewise.
    * gcc.target/s390/hotpatch-11.c: Likewise.
    * gcc.target/s390/hotpatch-12.c: Likewise.
    * gcc.target/s390/hotpatch-13.c: Likewise.
    * gcc.target/s390/hotpatch-14.c: Likewise.
    * gcc.target/s390/hotpatch-15.c: Likewise.
    * gcc.target/s390/hotpatch-16.c: Likewise.
    * gcc.target/s390/hotpatch-17.c: Likewise.
    * gcc.target/s390/hotpatch-18.c: Likewise.
    * gcc.target/s390/hotpatch-19.c: Likewise.

From-SVN: r221381

28 files changed:
gcc/ChangeLog
gcc/config/s390/s390.c
gcc/config/s390/s390.md
gcc/doc/invoke.texi
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/s390/hotpatch-1.c
gcc/testsuite/gcc.target/s390/hotpatch-10.c
gcc/testsuite/gcc.target/s390/hotpatch-11.c
gcc/testsuite/gcc.target/s390/hotpatch-12.c
gcc/testsuite/gcc.target/s390/hotpatch-13.c
gcc/testsuite/gcc.target/s390/hotpatch-14.c
gcc/testsuite/gcc.target/s390/hotpatch-15.c
gcc/testsuite/gcc.target/s390/hotpatch-16.c
gcc/testsuite/gcc.target/s390/hotpatch-17.c
gcc/testsuite/gcc.target/s390/hotpatch-18.c
gcc/testsuite/gcc.target/s390/hotpatch-19.c
gcc/testsuite/gcc.target/s390/hotpatch-2.c
gcc/testsuite/gcc.target/s390/hotpatch-21.c [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/hotpatch-22.c [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/hotpatch-23.c [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/hotpatch-24.c [new file with mode: 0644]
gcc/testsuite/gcc.target/s390/hotpatch-3.c
gcc/testsuite/gcc.target/s390/hotpatch-4.c
gcc/testsuite/gcc.target/s390/hotpatch-5.c
gcc/testsuite/gcc.target/s390/hotpatch-6.c
gcc/testsuite/gcc.target/s390/hotpatch-7.c
gcc/testsuite/gcc.target/s390/hotpatch-8.c
gcc/testsuite/gcc.target/s390/hotpatch-9.c

index 43d67175732b78c762e7c74857ade38c79babff6..590099891206ebc8cd9ff54a601e3988559e4a4d 100644 (file)
@@ -1,3 +1,18 @@
+2015-03-12  Dominik Vogt  <vogt@linux.vnet.ibm.com>
+
+       * config/s390/s390.c (s390_reorg): Move code to output nops after label
+       to s390_reorg ().
+       (s390_asm_output_function_label): Likewise.
+       * config/s390/s390.c (s390_asm_output_function_label):
+       Fix function label alignment with -mhtopatch.
+       * config/s390/s390.md ("unspecv"): New values UNSPECV_NOP_2_BYTE,
+       UNSPECV_NOP_4_BYTE and UNSPECV_NOP_6_BYTE
+       ("nop_2_byte"): New define_insn.
+       ("nop_4_byte"): Likewise.
+       ("nop_6_byte"): Likewise.
+       * doc/extend.texi (hotpatch): hotpatch attribute doc fixes.
+       * doc/invoke.texi (-mhotpatch): -mhotpatch doc fixes.
+
 2015-03-12  Ilya Enkovich  <ilya.enkovich@intel.com>
 
        PR target/65103
index 593c0cc8ee2d3a27d2872c16b2215c2fe656b799..d2b87046b3a4b39dd90e2962097cd4381a06c3ff 100644 (file)
@@ -5295,6 +5295,7 @@ s390_asm_output_function_label (FILE *asm_out_file, const char *fname,
 
   if (hotpatch_p)
     {
+      unsigned int function_alignment;
       int i;
 
       /* Add a trampoline code area before the function label and initialize it
@@ -5308,34 +5309,14 @@ s390_asm_output_function_label (FILE *asm_out_file, const char *fname,
         stored directly before the label without crossing a cacheline
         boundary.  All this is necessary to make sure the trampoline code can
         be changed atomically.  */
+      function_alignment = MAX (8, DECL_ALIGN (decl) / BITS_PER_UNIT);
+      if (! DECL_USER_ALIGN (decl))
+       function_alignment = MAX (function_alignment,
+                                 (unsigned int) align_functions);
+      ASM_OUTPUT_ALIGN (asm_out_file, floor_log2 (function_alignment));
     }
 
   ASM_OUTPUT_LABEL (asm_out_file, fname);
-
-  /* Output a series of NOPs after the function label.  */
-  if (hotpatch_p)
-    {
-      while (hw_after > 0)
-       {
-         if (hw_after >= 3 && TARGET_CPU_ZARCH)
-           {
-             asm_fprintf (asm_out_file, "\tbrcl\t\t0,0\n");
-             hw_after -= 3;
-           }
-         else if (hw_after >= 2)
-           {
-             gcc_assert (hw_after == 2 || !TARGET_CPU_ZARCH);
-             asm_fprintf (asm_out_file, "\tnop\t0\n");
-             hw_after -= 2;
-           }
-         else
-           {
-             gcc_assert (hw_after == 1);
-             asm_fprintf (asm_out_file, "\tnopr\t%%r7\n");
-             hw_after -= 1;
-           }
-       }
-    }
 }
 
 /* Output machine-dependent UNSPECs occurring in address constant X
@@ -11368,6 +11349,7 @@ static void
 s390_reorg (void)
 {
   bool pool_overflow = false;
+  int hw_before, hw_after;
 
   /* Make sure all splits have been performed; splits after
      machine_dependent_reorg might confuse insn length counts.  */
@@ -11503,6 +11485,40 @@ s390_reorg (void)
       if (insn_added_p)
        shorten_branches (get_insns ());
     }
+
+  s390_function_num_hotpatch_hw (current_function_decl, &hw_before, &hw_after);
+  if (hw_after > 0)
+    {
+      rtx_insn *insn;
+
+      /* Inject nops for hotpatching. */
+      for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
+       {
+         if (NOTE_P (insn) && NOTE_KIND (insn) == NOTE_INSN_FUNCTION_BEG)
+           break;
+       }
+      gcc_assert (insn);
+      /* Output a series of NOPs after the NOTE_INSN_FUNCTION_BEG.  */
+      while (hw_after > 0)
+       {
+         if (hw_after >= 3 && TARGET_CPU_ZARCH)
+           {
+             insn = emit_insn_after (gen_nop_6_byte (), insn);
+             hw_after -= 3;
+           }
+         else if (hw_after >= 2)
+           {
+             insn = emit_insn_after (gen_nop_4_byte (), insn);
+             hw_after -= 2;
+           }
+         else
+           {
+             insn = emit_insn_after (gen_nop_2_byte (), insn);
+             hw_after -= 1;
+           }
+       }
+      gcc_assert (hw_after == 0);
+    }
 }
 
 /* Return true if INSN is a fp load insn writing register REGNO.  */
index bf698b1cf81c7d748d3d5a555b5dfee84e4c938b..76dca0a68aef11a5e9466d36156d3ab85bb2617f 100644 (file)
    UNSPECV_CAS
    UNSPECV_ATOMIC_OP
 
+   ; Hotpatching (unremovable NOPs)
+   UNSPECV_NOP_2_BYTE
+   UNSPECV_NOP_4_BYTE
+   UNSPECV_NOP_6_BYTE
+
    ; Transactional Execution support
    UNSPECV_TBEGIN
    UNSPECV_TBEGIN_TDB
   "lr\t1,1"
   [(set_attr "op_type" "RR")])
 
+;;- Undeletable nops (used for hotpatching)
+
+(define_insn "nop_2_byte"
+  [(unspec_volatile [(const_int 0)] UNSPECV_NOP_2_BYTE)]
+  ""
+  "nopr\t%%r7"
+  [(set_attr "op_type" "RR")])
+
+(define_insn "nop_4_byte"
+  [(unspec_volatile [(const_int 0)] UNSPECV_NOP_4_BYTE)]
+  ""
+  "nop\t0"
+  [(set_attr "op_type" "RX")])
+
+(define_insn "nop_6_byte"
+  [(unspec_volatile [(const_int 0)] UNSPECV_NOP_6_BYTE)]
+  "TARGET_CPU_ZARCH"
+  "brcl\t0, 0"
+  [(set_attr "op_type" "RIL")])
+
 
 ;
 ; Special literal pool access instruction pattern(s).
index 1534ed93b3d9c8e1c86d22cea3b64939ce88740d..08ce074c2606f7a57e4c1f9ffa255948976c355d 100644 (file)
@@ -20216,9 +20216,9 @@ The @var{stack-guard} option can only be used in conjunction with @var{stack-siz
 If the hotpatch option is enabled, a ``hot-patching'' function
 prologue is generated for all functions in the compilation unit.
 The funtion label is prepended with the given number of two-byte
-Nop instructions (@var{pre-halfwords}, maximum 1000000).  After
+NOP instructions (@var{pre-halfwords}, maximum 1000000).  After
 the label, 2 * @var{post-halfwords} bytes are appended, using the
-larges nop like instructions the architecture allows (maximum
+largest NOP like instructions the architecture allows (maximum
 1000000).
 
 If both arguments are zero, hotpatching is disabled.
index 4bd7f0e7211223429bc4f732292f6ac3763b33ff..baf5f426f5cbc77cd07fd13a8f4ba4eababc03d9 100644 (file)
@@ -1,3 +1,30 @@
+2015-03-12  Dominik Vogt  <vogt@linux.vnet.ibm.com>
+
+       * gcc.target/s390/hotpatch-21.c: New test for hotpatch alignment.
+       * gcc.target/s390/hotpatch-22.c: Likewise.
+       * gcc.target/s390/hotpatch-23.c: Likewise.
+       * gcc.target/s390/hotpatch-24.c: Likewise.
+       * gcc.target/s390/hotpatch-2.c: Also check hotpatch alignment.
+       * gcc.target/s390/hotpatch-1.c: Update expected output.
+       * gcc.target/s390/hotpatch-2.c: Likewise.
+       * gcc.target/s390/hotpatch-3.c: Likewise.
+       * gcc.target/s390/hotpatch-4.c: Likewise.
+       * gcc.target/s390/hotpatch-5.c: Likewise.
+       * gcc.target/s390/hotpatch-6.c: Likewise.
+       * gcc.target/s390/hotpatch-7.c: Likewise.
+       * gcc.target/s390/hotpatch-8.c: Likewise.
+       * gcc.target/s390/hotpatch-9.c: Likewise.
+       * gcc.target/s390/hotpatch-10.c: Likewise.
+       * gcc.target/s390/hotpatch-11.c: Likewise.
+       * gcc.target/s390/hotpatch-12.c: Likewise.
+       * gcc.target/s390/hotpatch-13.c: Likewise.
+       * gcc.target/s390/hotpatch-14.c: Likewise.
+       * gcc.target/s390/hotpatch-15.c: Likewise.
+       * gcc.target/s390/hotpatch-16.c: Likewise.
+       * gcc.target/s390/hotpatch-17.c: Likewise.
+       * gcc.target/s390/hotpatch-18.c: Likewise.
+       * gcc.target/s390/hotpatch-19.c: Likewise.
+
 2015-03-12  Ilya Enkovich  <ilya.enkovich@intel.com>
 
        PR target/65103
index 61d8f39f52ad580b066f3995ad928898ecbdff17..4e29817991eb04d5f79b70e5e15e6e69b24910fe 100644 (file)
@@ -13,4 +13,4 @@ void hp1(void)
 /* Check number of occurences of certain instructions.  */
 /* { dg-final { scan-assembler-not "nopr\t%r7" } } */
 /* { dg-final { scan-assembler-not "nop\t0" } } */
-/* { dg-final { scan-assembler-not "brcl\t\t0,0" } } */
+/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */
index 1097ab437bb8619045cdf7cda61b12847270aa45..352c9d500d708ca4b5533b105f059cebc7f067b0 100644 (file)
@@ -13,4 +13,4 @@ void hp1(void)
 /* Check number of occurences of certain instructions.  */
 /* { dg-final { scan-assembler-not "nopr\t%r7" } } */
 /* { dg-final { scan-assembler-not "nop\t0" } } */
-/* { dg-final { scan-assembler-not "brcl\t\t0,0" } } */
+/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */
index be08acc7922c8dc35e3fa4afaaf325e768c21550..beb8738c653a58ffa15478778014f7111bd0f6dd 100644 (file)
@@ -13,4 +13,4 @@ void hp1(void)
 /* Check number of occurences of certain instructions.  */
 /* { dg-final { scan-assembler-times "nopr\t%r7" 1 } } */
 /* { dg-final { scan-assembler-not "nop\t0" } } */
-/* { dg-final { scan-assembler-not "brcl\t\t0,0" } } */
+/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */
index 6e909c0ec48e713bf916dbcb1a910731b4e5a729..d109478b04f509096923193c58cd18f4e2d6aa48 100644 (file)
@@ -13,4 +13,4 @@ void hp1(void)
 /* Check number of occurences of certain instructions.  */
 /* { dg-final { scan-assembler-times "nopr\t%r7" 999 } } */
 /* { dg-final { scan-assembler-not "nop\t0" } } */
-/* { dg-final { scan-assembler-not "brcl\t\t0,0" } } */
+/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */
index 959789cf13db731536f2816ad0ce661be9ff3ce5..9ac9f842d63396961da130ea363ed366d7997b5b 100644 (file)
@@ -14,4 +14,4 @@ void hp1(void)
 /* Check number of occurences of certain instructions.  */
 /* { dg-final { scan-assembler-times "nopr\t%r7" 1 } } */
 /* { dg-final { scan-assembler-not "nop\t0" } } */
-/* { dg-final { scan-assembler-not "brcl\t\t0,0" } } */
+/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */
index 0f1f41f2502420b91efe8f73672fc9c6b1118b3d..209e4ac5e47a3ba727f7d4e603d681871ba0e3e3 100644 (file)
@@ -14,4 +14,4 @@ void hp1(void)
 /* Check number of occurences of certain instructions.  */
 /* { dg-final { scan-assembler-not "nopr\t%r7" } } */
 /* { dg-final { scan-assembler-times "nop\t0" 1 } } */
-/* { dg-final { scan-assembler-not "brcl\t\t0,0" } } */
+/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */
index e3064953c322ddb804d0ead4b754aa52b2fbbf8e..109034ef019b78d625a18a62fb5ddda9c350cd5d 100644 (file)
@@ -14,4 +14,4 @@ void hp1(void)
 /* Check number of occurences of certain instructions.  */
 /* { dg-final { scan-assembler-times "nopr\t%r7" 1 } } */
 /* { dg-final { scan-assembler-times "nop\t0" 1 } } */
-/* { dg-final { scan-assembler-not "brcl\t\t0,0" } } */
+/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */
index 66f13fe3c5c8e1af7037ec7c1b4d075faaa11816..b01c1c32254497b0a7901375d9b2060bf1b70174 100644 (file)
@@ -14,4 +14,4 @@ void hp1(void)
 /* Check number of occurences of certain instructions.  */
 /* { dg-final { scan-assembler-times "nopr\t%r7" 1 } } */
 /* { dg-final { scan-assembler-times "nop\t0" 1 } } */
-/* { dg-final { scan-assembler-not "brcl\t\t0,0" } } */
+/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */
index b301c5cd294e1579bcf75828721c7ce428f6f7e8..ce0b950f8d3a5d57f1521216d3733b75629229c8 100644 (file)
@@ -14,4 +14,4 @@ void hp1(void)
 /* Check number of occurences of certain instructions.  */
 /* { dg-final { scan-assembler-not "nopr\t%r7" } } */
 /* { dg-final { scan-assembler-not "nop\t0" } } */
-/* { dg-final { scan-assembler-not "brcl\t\t0,0" } } */
+/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */
index 1c06783f4bcdd4d3fcd6ac528064a1c9eae72fd0..9a24d5e6a776edaf49d9c85e4ed6ea2d4e61a851 100644 (file)
@@ -13,4 +13,4 @@ void hp1(void)
 /* Check number of occurences of certain instructions.  */
 /* { dg-final { scan-assembler-not "nopr\t%r7" } } */
 /* { dg-final { scan-assembler-not "nop\t0" } } */
-/* { dg-final { scan-assembler-not "brcl\t\t0,0" } } */
+/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */
index a1ec9c76c8b2bb55af6f1532a9f48b7ccc79b101..3586da29a896e5d5edf8cbd8f012a1295a8d9ff0 100644 (file)
@@ -20,4 +20,4 @@ void hp1(void)
 /* Check number of occurences of certain instructions.  */
 /* { dg-final { scan-assembler-times "nopr\t%r7" 1 } } */
 /* { dg-final { scan-assembler-times "nop\t0" 1 } } */
-/* { dg-final { scan-assembler-not "brcl\t\t0,0" } } */
+/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */
index 0c82a5a966c8879c80ad64b19d0403db9fe95f3f..18be5aa23831a7e13ae6efaa3b561175546e346b 100644 (file)
@@ -13,4 +13,5 @@ void hp1(void)
 /* Check number of occurences of certain instructions.  */
 /* { dg-final { scan-assembler-times "nopr\t%r7" 1 } } */
 /* { dg-final { scan-assembler-not "nop\t0" } } */
-/* { dg-final { scan-assembler-not "brcl\t\t0,0" } } */
+/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */
+/* { dg-final { scan-assembler-times "\.align\t8" 2 } } */
diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-21.c b/gcc/testsuite/gcc.target/s390/hotpatch-21.c
new file mode 100644 (file)
index 0000000..d72dee3
--- /dev/null
@@ -0,0 +1,14 @@
+/* Functional tests for the function hotpatching feature.  */
+
+/* { dg-do compile } */
+/* { dg-options "-O3 -mzarch -mhotpatch=0,1" } */
+
+#include <stdio.h>
+
+void __attribute__ ((aligned(512))) hp1(void)
+{
+  printf("hello, world!\n");
+}
+
+/* Check number of occurences of certain instructions.  */
+/* { dg-final { scan-assembler-times "\.align\t512" 2 } } */
diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-22.c b/gcc/testsuite/gcc.target/s390/hotpatch-22.c
new file mode 100644 (file)
index 0000000..6507466
--- /dev/null
@@ -0,0 +1,14 @@
+/* Functional tests for the function hotpatching feature.  */
+
+/* { dg-do compile } */
+/* { dg-options "-O3 -mzarch -mhotpatch=0,1 -falign-functions=1024" } */
+
+#include <stdio.h>
+
+void hp1(void)
+{
+  printf("hello, world!\n");
+}
+
+/* Check number of occurences of certain instructions.  */
+/* { dg-final { scan-assembler-times "\.align\t1024" 2 } } */
diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-23.c b/gcc/testsuite/gcc.target/s390/hotpatch-23.c
new file mode 100644 (file)
index 0000000..7dce5b8
--- /dev/null
@@ -0,0 +1,14 @@
+/* Functional tests for the function hotpatching feature.  */
+
+/* { dg-do compile } */
+/* { dg-options "-O3 -mzarch -mhotpatch=0,1 -falign-functions=4096" } */
+
+#include <stdio.h>
+
+void __attribute__ ((aligned(2048))) hp1(void)
+{
+  printf("hello, world!\n");
+}
+
+/* Check number of occurences of certain instructions.  */
+/* { dg-final { scan-assembler-times "\.align\t2048" 2 } } */
diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-24.c b/gcc/testsuite/gcc.target/s390/hotpatch-24.c
new file mode 100644 (file)
index 0000000..4d6815c
--- /dev/null
@@ -0,0 +1,14 @@
+/* Functional tests for the function hotpatching feature.  */
+
+/* { dg-do compile } */
+/* { dg-options "-O3 -mzarch -mhotpatch=0,1 -falign-functions=2048" } */
+
+#include <stdio.h>
+
+void __attribute__ ((aligned(4096))) hp1(void)
+{
+  printf("hello, world!\n");
+}
+
+/* Check number of occurences of certain instructions.  */
+/* { dg-final { scan-assembler-times "\.align\t4096" 2 } } */
index 041ef9ce83c5dc8afeb9d7909bcc9f0b7e534cf2..8a2ab538e8dccff0e1aec9b0f6f131065a9e5d34 100644 (file)
@@ -13,4 +13,4 @@ void hp1(void)
 /* Check number of occurences of certain instructions.  */
 /* { dg-final { scan-assembler-not "nopr\t%r7" } } */
 /* { dg-final { scan-assembler-times "nop\t0" 1 } } */
-/* { dg-final { scan-assembler-not "brcl\t\t0,0" } } */
+/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */
index 050a0651406d8eb0d4d0ba3399dddfa67d3e7d11..9a69459797e27e6d32689845cbc262793cdbd0d7 100644 (file)
@@ -13,4 +13,4 @@ void hp1(void)
 /* Check number of occurences of certain instructions.  */
 /* { dg-final { scan-assembler-not "nopr\t%r7" } } */
 /* { dg-final { scan-assembler-not "nop\t0" } } */
-/* { dg-final { scan-assembler-times "brcl\t\t0,0" 1 } } */
+/* { dg-final { scan-assembler-times "brcl\t0, 0" 1 } } */
index 785dba7066fb6eb40ba030e3eacca113a8cd7179..b3d990f499a3fb3f5306ac7b1e9ecca2376a3243 100644 (file)
@@ -13,4 +13,4 @@ void hp1(void)
 /* Check number of occurences of certain instructions.  */
 /* { dg-final { scan-assembler-times "nopr\t%r7" 1 } } */
 /* { dg-final { scan-assembler-not "nop\t0" } } */
-/* { dg-final { scan-assembler-times "brcl\t\t0,0" 1 } } */
+/* { dg-final { scan-assembler-times "brcl\t0, 0" 1 } } */
index da96e4368afeee46fd539d6c6993858cf13f36da..10ba5580b0d4c4427e363ff616fb3d79113aa53e 100644 (file)
@@ -13,4 +13,4 @@ void hp1(void)
 /* Check number of occurences of certain instructions.  */
 /* { dg-final { scan-assembler-not "nopr\t%r7" } } */
 /* { dg-final { scan-assembler-times "nop\t0" 1 } } */
-/* { dg-final { scan-assembler-times "brcl\t\t0,0" 1 } } */
+/* { dg-final { scan-assembler-times "brcl\t0, 0" 1 } } */
index b7c19d7d6fe0a7287d27b231444ed612070ae33c..edf67d3e22ec29d2b12c11bcfbdf79d5f2c83cc7 100644 (file)
@@ -13,4 +13,4 @@ void hp1(void)
 /* Check number of occurences of certain instructions.  */
 /* { dg-final { scan-assembler-not "nopr\t%r7" } } */
 /* { dg-final { scan-assembler-not "nop\t0" } } */
-/* { dg-final { scan-assembler-times "brcl\t\t0,0" 2 } } */
+/* { dg-final { scan-assembler-times "brcl\t0, 0" 2 } } */
index 25edd9b0ed224306ef41ce00a0a4f056aea17b9c..a179c4a633cbbecad366c6e1865913d559d1d00a 100644 (file)
@@ -13,4 +13,4 @@ void hp1(void)
 /* Check number of occurences of certain instructions.  */
 /* { dg-final { scan-assembler-times "nopr\t%r7" 1 } } */
 /* { dg-final { scan-assembler-times "nop\t0" 1 } } */
-/* { dg-final { scan-assembler-not "brcl\t\t0,0" } } */
+/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */
index 2143f9d42803ac9d13ddcd6860860121ac2518c2..c4e21f2d3defdd86e3acd0d54642c14202f421dc 100644 (file)
@@ -13,4 +13,4 @@ void hp1(void)
 /* Check number of occurences of certain instructions.  */
 /* { dg-final { scan-assembler-not "nopr\t%r7" } } */
 /* { dg-final { scan-assembler-times "nop\t0" 2 } } */
-/* { dg-final { scan-assembler-not "brcl\t\t0,0" } } */
+/* { dg-final { scan-assembler-not "brcl\t0, 0" } } */