Re: [PATCH] S/390: Change 2-byte NOPs

2017-03-06 Thread Andreas Krebbel
> gcc/ChangeLog:
> 
> 2017-03-02  Robin Dapp  
> 
>   * config/s390/s390.c (s390_asm_output_function_label): Use nopr %r0.
>   * config/s390/s390.md: Likewise.
> 
> gcc/testsuite/ChangeLog:
> 
> 2017-03-02  Robin Dapp  
> 
>   * gcc.target/s390/hotpatch-1.c: Check for nopr %r0.
>   * 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.
>   * gcc.target/s390/hotpatch-2.c: Likewise.
>   * gcc.target/s390/hotpatch-26.c: Likewise.
>   * gcc.target/s390/hotpatch-27.c: Likewise.
>   * gcc.target/s390/hotpatch-28.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.

Applied. Thanks!

-Andreas-




[PATCH] S/390: Change 2-byte NOPs

2017-03-01 Thread Robin Dapp
Hi,

the following patch changes "nopr %r7" to "nopr %r0" which is
advantageous from a hardware perspective. It will only be emitted for
hotpatching and should not impact normal code.

Bootstrapped and regression tested on s390 and s390x.

Regards
 Robin

gcc/ChangeLog:

2017-03-02  Robin Dapp  

* config/s390/s390.c (s390_asm_output_function_label): Use nopr %r0.
* config/s390/s390.md: Likewise.

gcc/testsuite/ChangeLog:

2017-03-02  Robin Dapp  

* gcc.target/s390/hotpatch-1.c: Check for nopr %r0.
* 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.
* gcc.target/s390/hotpatch-2.c: Likewise.
* gcc.target/s390/hotpatch-26.c: Likewise.
* gcc.target/s390/hotpatch-27.c: Likewise.
* gcc.target/s390/hotpatch-28.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.
diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
index f98eee7..e8265c6 100644
--- a/gcc/config/s390/s390.c
+++ b/gcc/config/s390/s390.c
@@ -7218,11 +7218,11 @@ s390_asm_output_function_label (FILE *asm_out_file, const char *fname,
   /* Add a trampoline code area before the function label and initialize it
 	 with two-byte nop instructions.  This area can be overwritten with code
 	 that jumps to a patched version of the function.  */
-  asm_fprintf (asm_out_file, "\tnopr\t%%r7"
+  asm_fprintf (asm_out_file, "\tnopr\t%%r0"
 		   "\t# pre-label NOPs for hotpatch (%d halfwords)\n",
 		   hw_before);
   for (i = 1; i < hw_before; i++)
-	fputs ("\tnopr\t%r7\n", asm_out_file);
+	fputs ("\tnopr\t%r0\n", asm_out_file);
 
   /* Note:  The function label must be aligned so that (a) the bytes of the
 	 following nop do not cross a cacheline boundary, and (b) a jump address
diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md
index cbf8c0a..e86525b 100644
--- a/gcc/config/s390/s390.md
+++ b/gcc/config/s390/s390.md
@@ -10371,7 +10371,7 @@
 (define_insn "nop_2_byte"
   [(unspec_volatile [(const_int 0)] UNSPECV_NOP_2_BYTE)]
   ""
-  "nopr\t%%r7"
+  "nopr\t%%r0"
   [(set_attr "op_type" "RR")])
 
 (define_insn "nop_4_byte"
diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-1.c b/gcc/testsuite/gcc.target/s390/hotpatch-1.c
index 55088b8..5f0f2e1 100644
--- a/gcc/testsuite/gcc.target/s390/hotpatch-1.c
+++ b/gcc/testsuite/gcc.target/s390/hotpatch-1.c
@@ -13,7 +13,7 @@ void hp1(void)
 /* Check number of occurences of certain instructions.  */
 /* { dg-final { scan-assembler-not "pre-label NOPs" } } */
 /* { dg-final { scan-assembler-not "post-label NOPs" } } */
-/* { dg-final { scan-assembler-not "nopr\t%r7" } } */
+/* { dg-final { scan-assembler-not "nopr\t%r0" } } */
 /* { dg-final { scan-assembler-not "nop\t0" } } */
 /* { dg-final { scan-assembler-not "brcl\t0, 0" } } */
 /* { dg-final { scan-assembler-not "alignment for hotpatch" } } */
diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-10.c b/gcc/testsuite/gcc.target/s390/hotpatch-10.c
index d2cb9a2..2308d33 100644
--- a/gcc/testsuite/gcc.target/s390/hotpatch-10.c
+++ b/gcc/testsuite/gcc.target/s390/hotpatch-10.c
@@ -13,7 +13,7 @@ void hp1(void)
 /* Check number of occurences of certain instructions.  */
 /* { dg-final { scan-assembler-not "pre-label NOPs" } } */
 /* { dg-final { scan-assembler-not "post-label NOPs" } } */
-/* { dg-final { scan-assembler-not "nopr\t%r7" } } */
+/* { dg-final { scan-assembler-not "nopr\t%r0" } } */
 /* { dg-final { scan-assembler-not "nop\t0" } } */
 /* { dg-final { scan-assembler-not "brcl\t0, 0" } } */
 /* { dg-final { scan-assembler-not "alignment for hotpatch" } } */
diff --git a/gcc/testsuite/gcc.target/s390/hotpatch-11.c b/gcc/testsuite/gcc.target/s390/hotpatch-11.c
index cabb9d26..56b3596 100644
--- a/gcc/testsuite/gcc.target/s390/hotpatch-11.c
+++ b/gcc/testsuite/gcc.target/s390/hotpatch-11.c
@@ -13,6 +13,6 @@ void hp1(void)
 /* Check number of occurences of certain instructions.  */
 /* { dg-final { scan-assembler "pre-label.*(1 halfwords)" } } */
 /* { dg-final { scan-assembler-not "post-label NOPs" } } */
-/* { dg-final { scan-assembler-times "nopr\t%r7" 1 } } */
+/* { dg-final { scan-assembler-times "nopr\t%r0" 1 } } */
 /* { dg-final { scan-assembler-not "nop\t0" } }