From: Kyrylo Tkachov Date: Fri, 18 Nov 2022 14:29:36 +0000 (+0000) Subject: aarch64: Fix LDAPURS assembly output X-Git-Tag: basepoints/gcc-14~3066 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=92905f614e206a94d4ba72a4d425f78859ead418;p=thirdparty%2Fgcc.git 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_rcpc_sext): Use for destination format. * config/aarch64/iterators.md (w_sz): Delete. gcc/testsuite/ChangeLog: * gcc.target/aarch64/ldapr-sext.c: Adjust expected output. --- diff --git a/gcc/config/aarch64/atomics.md b/gcc/config/aarch64/atomics.md index b6eac4e31fbc..5407cf7be499 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 && ( > )" - "ldapurs\t%0, %1" + "ldapurs\t%0, %1" ) (define_insn "atomic_store" diff --git a/gcc/config/aarch64/iterators.md b/gcc/config/aarch64/iterators.md index a3e40758e7be..7c7fcbbc24b9 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 292c55d9e6a4..f57c09d05806 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 */