]> gcc.gnu.org Git - gcc.git/commitdiff
xtensa: fix PR target/94584
authorMax Filippov <jcmvbkbc@gmail.com>
Mon, 13 Apr 2020 20:26:04 +0000 (13:26 -0700)
committerMax Filippov <jcmvbkbc@gmail.com>
Tue, 14 Apr 2020 23:55:40 +0000 (16:55 -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-14  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 e88c0e13d15ff10cc6129a0b014ed2f0074976b6..3c6a45e8fe702b8bbadda88b2f9c39e6c0863ea9 100644 (file)
@@ -1,3 +1,9 @@
+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-14  Aaron Sawdey  <acsawdey@linux.ibm.com>
 
        PR target/94542
index 5b803d3cbe65ad8dac79f896ffe0fd8332991f0e..749fe477d562562e12616bd1e65a0794545597ab 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 3a3a1c5946512b2c9c87caa80b493d4408c2cb9b..69f9b93cd499a84dcfd568413fa05d85b96869ca 100644 (file)
@@ -1,3 +1,8 @@
+2020-04-13  Max Filippov  <jcmvbkbc@gmail.com>
+
+       PR target/94584
+       * gcc.target/xtensa/pr94584.c: New test.
+
 2020-04-14  Iain Sandoe  <iain@sandoe.co.uk>
 
        PR c++/94359
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 } } */
This page took 0.127408 seconds and 5 git commands to generate.