aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorKyrylo Tkachov <kyrylo.tkachov@arm.com>2022-11-18 14:29:36 +0000
committerKyrylo Tkachov <kyrylo.tkachov@arm.com>2022-11-18 14:29:36 +0000
commit92905f614e206a94d4ba72a4d425f78859ead418 (patch)
tree73333eb512865b2dfeca07f02aa8eaf494957835 /gcc
parent20d2a8c24f3ca487ffd35fefcc9b1562bb10b609 (diff)
downloadgcc-92905f614e206a94d4ba72a4d425f78859ead418.zip
gcc-92905f614e206a94d4ba72a4d425f78859ead418.tar.gz
gcc-92905f614e206a94d4ba72a4d425f78859ead418.tar.bz2
aarch64: Fix LDAPURS assembly output
... And another follow-up once I realised that the sign-extending load, of course, needs to have strictly an X-reg as a destination for DImode extensions and a W-reg for SImode ones. Tested on aarch64-none-linux. gcc/ChangeLog: * config/aarch64/atomics.md (*aarch64_atomic_load<ALLX:mode>_rcpc_sext): Use <GPI:w> for destination format. * config/aarch64/iterators.md (w_sz): Delete. gcc/testsuite/ChangeLog: * gcc.target/aarch64/ldapr-sext.c: Adjust expected output.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/aarch64/atomics.md2
-rw-r--r--gcc/config/aarch64/iterators.md4
-rw-r--r--gcc/testsuite/gcc.target/aarch64/ldapr-sext.c4
3 files changed, 3 insertions, 7 deletions
diff --git a/gcc/config/aarch64/atomics.md b/gcc/config/aarch64/atomics.md
index b6eac4e..5407cf7 100644
--- a/gcc/config/aarch64/atomics.md
+++ b/gcc/config/aarch64/atomics.md
@@ -723,7 +723,7 @@
(match_operand:SI 2 "const_int_operand")] ;; model
UNSPECV_LDAP)))]
"TARGET_RCPC2 && (<GPI:sizen> > <ALLX:sizen>)"
- "ldapurs<ALLX:size>\t%<ALLX:w_sx>0, %1"
+ "ldapurs<ALLX:size>\t%<GPI:w>0, %1"
)
(define_insn "atomic_store<mode>"
diff --git a/gcc/config/aarch64/iterators.md b/gcc/config/aarch64/iterators.md
index a3e4075..7c7fcbb 100644
--- a/gcc/config/aarch64/iterators.md
+++ b/gcc/config/aarch64/iterators.md
@@ -1012,10 +1012,6 @@
;; 32-bit version and "%x0" in the 64-bit version.
(define_mode_attr w [(QI "w") (HI "w") (SI "w") (DI "x") (SF "s") (DF "d")])
-;; Similar to w above, but used for sign-extending loads where we want to
-;; use %x0 for SImode.
-(define_mode_attr w_sx [(QI "w") (HI "w") (SI "x")])
-
;; The size of access, in bytes.
(define_mode_attr ldst_sz [(SI "4") (DI "8")])
;; Likewise for load/store pair.
diff --git a/gcc/testsuite/gcc.target/aarch64/ldapr-sext.c b/gcc/testsuite/gcc.target/aarch64/ldapr-sext.c
index 292c55d..f57c09d 100644
--- a/gcc/testsuite/gcc.target/aarch64/ldapr-sext.c
+++ b/gcc/testsuite/gcc.target/aarch64/ldapr-sext.c
@@ -24,7 +24,7 @@ test_##name (void) \
/*
**test_s8_s64:
**...
-** ldapursb w0, \[x[0-9]+\]
+** ldapursb x0, \[x[0-9]+\]
** ret
*/
@@ -33,7 +33,7 @@ TEST(s8_s64, s8, long long)
/*
**test_s16_s64:
**...
-** ldapursh w0, \[x[0-9]+\]
+** ldapursh x0, \[x[0-9]+\]
** ret
*/