aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorChristophe Lyon <christophe.lyon@linaro.org>2023-05-31 09:23:16 +0000
committerChristophe Lyon <christophe.lyon@linaro.org>2023-05-31 13:26:49 +0000
commit070d651c6db37c3658be0a5274f44265045428e6 (patch)
treea94d21554cf1509dd6be41b16ce3410a6541a2ea /gcc
parent5a07b3b8bb9ce20849d6269e1601ead0ad3b8f75 (diff)
downloadgcc-070d651c6db37c3658be0a5274f44265045428e6.zip
gcc-070d651c6db37c3658be0a5274f44265045428e6.tar.gz
gcc-070d651c6db37c3658be0a5274f44265045428e6.tar.bz2
aarch64: Add pattern for bswap + rotate [PR 110039]
After commit g:d8545fb2c71683f407bfd96706103297d4d6e27b, we missed a pattern to match the new GIMPLE form. With this patch, gcc.target/aarch64/rev16_2.c passes again. 2023-05-31 Christophe Lyon <christophe.lyon@linaro.org> PR target/110039 gcc/ * config/aarch64/aarch64.md (aarch64_rev16si2_alt3): New pattern.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/aarch64/aarch64.md10
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md
index f26d11c..c2ba726 100644
--- a/gcc/config/aarch64/aarch64.md
+++ b/gcc/config/aarch64/aarch64.md
@@ -6249,6 +6249,16 @@
[(set_attr "type" "rev")]
)
+;; Similar pattern to match (rotate (bswap) 16)
+(define_insn "aarch64_rev16si2_alt3"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (rotate:SI (bswap:SI (match_operand:SI 1 "register_operand" "r"))
+ (const_int 16)))]
+ ""
+ "rev16\\t%w0, %w1"
+ [(set_attr "type" "rev")]
+)
+
;; zero_extend version of above
(define_insn "*bswapsi2_uxtw"
[(set (match_operand:DI 0 "register_operand" "=r")