diff options
author | Kyrylo Tkachov <kyrylo.tkachov@arm.com> | 2022-11-18 14:29:36 +0000 |
---|---|---|
committer | Kyrylo Tkachov <kyrylo.tkachov@arm.com> | 2022-11-18 14:29:36 +0000 |
commit | 92905f614e206a94d4ba72a4d425f78859ead418 (patch) | |
tree | 73333eb512865b2dfeca07f02aa8eaf494957835 /gcc | |
parent | 20d2a8c24f3ca487ffd35fefcc9b1562bb10b609 (diff) | |
download | gcc-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.md | 2 | ||||
-rw-r--r-- | gcc/config/aarch64/iterators.md | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/aarch64/ldapr-sext.c | 4 |
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 */ |