]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
xtensa: backport fix for PR target/94584
authorMax Filippov <jcmvbkbc@gmail.com>
Mon, 13 Apr 2020 20:26:04 +0000 (13:26 -0700)
committerMax Filippov <jcmvbkbc@gmail.com>
Wed, 15 Apr 2020 21:14:02 +0000 (14:14 -0700)
Patterns zero_extendhisi2, zero_extendqisi2 and extendhisi2_internal can
load value from memory, but they don't treat volatile memory correctly.
Add %v1 before load instructions to emit 'memw' instruction when
-mserialize-volatile is in effect.

2020-04-15  Max Filippov  <jcmvbkbc@gmail.com>
gcc/
* config/xtensa/xtensa.md (zero_extendhisi2, zero_extendqisi2)
(extendhisi2_internal): Add %v1 before the load instructions.

gcc/testsuite/
* gcc.target/xtensa/pr94584.c: New test.

gcc/ChangeLog
gcc/config/xtensa/xtensa.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/xtensa/pr94584.c [new file with mode: 0644]

index 478bd086276780c4f603605400356062560b57d1..a7c340e60bc03f6ce2de7118ecb96f47aa13535a 100644 (file)
@@ -1,3 +1,12 @@
+2020-04-15  Max Filippov  <jcmvbkbc@gmail.com>
+
+       Backport from mainline.
+       2020-04-14  Max Filippov  <jcmvbkbc@gmail.com>
+
+       PR target/94584
+       * config/xtensa/xtensa.md (zero_extendhisi2, zero_extendqisi2)
+       (extendhisi2_internal): Add %v1 before the load instructions.
+
 2020-04-15  Max Filippov  <jcmvbkbc@gmail.com>
 
        Backport from mainline.
index 362e5ff3c1f552d14b7300c4f891c4b7c49b172d..673ddad2eae184661fd389269090a1e410bb39a3 100644 (file)
   ""
   "@
    extui\t%0, %1, 0, 16
-   l16ui\t%0, %1"
+   %v1l16ui\t%0, %1"
   [(set_attr "type"    "arith,load")
    (set_attr "mode"    "SI")
    (set_attr "length"  "3,3")])
   ""
   "@
    extui\t%0, %1, 0, 8
-   l8ui\t%0, %1"
+   %v1l8ui\t%0, %1"
   [(set_attr "type"    "arith,load")
    (set_attr "mode"    "SI")
    (set_attr "length"  "3,3")])
   ""
   "@
    sext\t%0, %1, 15
-   l16si\t%0, %1"
+   %v1l16si\t%0, %1"
   [(set_attr "type"    "arith,load")
    (set_attr "mode"    "SI")
    (set_attr "length"  "3,3")])
index b322f4bec34f7b6fb230621cc2998ffeb9aa49fb..d1d586a9fc4fe192fff9b79ae8b694633918cafe 100644 (file)
@@ -1,3 +1,11 @@
+2020-04-15  Max Filippov  <jcmvbkbc@gmail.com>
+
+       Backport from mainline.
+       2020-04-13  Max Filippov  <jcmvbkbc@gmail.com>
+
+       PR target/94584
+       * gcc.target/xtensa/pr94584.c: New test.
+
 2020-04-15  Max Filippov  <jcmvbkbc@gmail.com>
 
        Backport from mainline.
diff --git a/gcc/testsuite/gcc.target/xtensa/pr94584.c b/gcc/testsuite/gcc.target/xtensa/pr94584.c
new file mode 100644 (file)
index 0000000..1577285
--- /dev/null
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mserialize-volatile" } */
+
+unsigned long load32 (volatile unsigned long *s)
+{
+  return *s;
+}
+
+short load16s (volatile short *s)
+{
+  return *s;
+}
+
+unsigned short load16u (volatile unsigned short *s)
+{
+  return *s;
+}
+
+unsigned char load8 (volatile unsigned char *s)
+{
+  return *s;
+}
+
+/* { dg-final { scan-assembler-times "memw" 4 } } */