aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>2022-05-29 19:44:32 +0900
committerMax Filippov <jcmvbkbc@gmail.com>2022-06-09 15:07:08 -0700
commit2fcc69d8ce4eddf6dea878a5383254d366e1bb14 (patch)
tree048f9813c17e714554202ce7140616c43caee545
parent645848634526c52aa641e57173597728d096aeef (diff)
downloadgcc-2fcc69d8ce4eddf6dea878a5383254d366e1bb14.zip
gcc-2fcc69d8ce4eddf6dea878a5383254d366e1bb14.tar.gz
gcc-2fcc69d8ce4eddf6dea878a5383254d366e1bb14.tar.bz2
xtensa: Implement bswaphi2 insn pattern
This patch adds bswaphi2 insn pattern that is one instruction less than the default expansion. gcc/ChangeLog: * config/xtensa/xtensa.md (bswaphi2): New insn pattern.
-rw-r--r--gcc/config/xtensa/xtensa.md10
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/config/xtensa/xtensa.md b/gcc/config/xtensa/xtensa.md
index 8a11903..abf4ad1 100644
--- a/gcc/config/xtensa/xtensa.md
+++ b/gcc/config/xtensa/xtensa.md
@@ -471,6 +471,16 @@
;; Byte swap.
+(define_insn "bswaphi2"
+ [(set (match_operand:HI 0 "register_operand" "=a")
+ (bswap:HI (match_operand:HI 1 "register_operand" "r")))
+ (clobber (match_scratch:HI 2 "=&a"))]
+ ""
+ "extui\t%2, %1, 8, 8\;slli\t%0, %1, 8\;or\t%0, %0, %2"
+ [(set_attr "type" "arith")
+ (set_attr "mode" "HI")
+ (set_attr "length" "9")])
+
(define_expand "bswapsi2"
[(set (match_operand:SI 0 "register_operand" "")
(bswap:SI (match_operand:SI 1 "register_operand" "")))]