]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gcc: xtensa: fix NAND code in xtensa_expand_atomic
authorMax Filippov <jcmvbkbc@gmail.com>
Tue, 4 Sep 2018 17:59:04 +0000 (17:59 +0000)
committerMax Filippov <jcmvbkbc@gcc.gnu.org>
Tue, 4 Sep 2018 17:59:04 +0000 (17:59 +0000)
NAND is ~(a1 & a2), but xtensa_expand_atomic does ~a1 & a2.
That fixes libatomic tests atomic-op-{1,2}.

gcc/
2018-09-04  Max Filippov  <jcmvbkbc@gmail.com>

Backport from mainline
2018-09-04  Max Filippov  <jcmvbkbc@gmail.com>

* config/xtensa/xtensa.c (xtensa_expand_atomic): Reorder AND and
XOR operations in NAND case.

From-SVN: r264090

gcc/ChangeLog
gcc/config/xtensa/xtensa.c

index 5d0115f5f64c8d29cb2ba29c15233cecaca80370..2b1bb83986bafb00a0dffd8e2dad34e13ad39a41 100644 (file)
@@ -1,3 +1,11 @@
+2018-09-04  Max Filippov  <jcmvbkbc@gmail.com>
+
+       Backport from mainline
+       2018-09-04  Max Filippov  <jcmvbkbc@gmail.com>
+
+       * config/xtensa/xtensa.c (xtensa_expand_atomic): Reorder AND and
+       XOR operations in NAND case.
+
 2018-09-04  Jonathan Wakely  <jwakely@redhat.com>
 
        * doc/invoke.texi (Option Summary): Add -Waligned-new.
index 9bdf870a0fd150fd6ebe6b230227c6ef00728111..db561e8feb7854deffc89b07a25965fb8afb6b69 100644 (file)
@@ -1591,9 +1591,9 @@ xtensa_expand_atomic (enum rtx_code code, rtx target, rtx mem, rtx val,
       break;
 
     case MULT: /* NAND */
-      tmp = expand_simple_binop (SImode, XOR, old, ac.modemask,
+      tmp = expand_simple_binop (SImode, AND, old, val,
                                 NULL_RTX, 1, OPTAB_DIRECT);
-      tmp = expand_simple_binop (SImode, AND, tmp, val,
+      tmp = expand_simple_binop (SImode, XOR, tmp, ac.modemask,
                                 new_rtx, 1, OPTAB_DIRECT);
       break;