xtensa: Improve bswap[sd]i2 insn patterns
authorTakayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
Fri, 13 May 2022 13:33:59 +0000 (22:33 +0900)
committerMax Filippov <jcmvbkbc@gmail.com>
Fri, 27 May 2022 04:55:01 +0000 (21:55 -0700)
commit9aad2b22436d5346fa224e5c14439dcef36cf3dd
treee6ff7162be5e9985613ebdbe41d859fe692a1613
parent6454b4a8f5d90dd355c3c7e31a592a439223b645
xtensa: Improve bswap[sd]i2 insn patterns

This patch makes bswap[sd]i2 better register allocation, and reconstructs
bswapsi2 in order to take advantage of GIMPLE manual byte-swapping
recognition.

gcc/ChangeLog:

* config/xtensa/xtensa.md (bswapsi2): New expansion pattern.
(bswapsi2_internal): Revise the template and condition, and add
detection code for preceding the same insn in order to omit a
"SSAI 8" instruction of the latter.
(bswapdi2): Suppress built-in insn expansion with the corresponding
library call when optimizing for size.

gcc/testsuite/ChangeLog:

* gcc.target/xtensa/bswap.c: Remove test.
* gcc.target/xtensa/bswap-O1.c: New.
* gcc.target/xtensa/bswap-O2.c: Ditto.
* gcc.target/xtensa/bswap-Os.c: Ditto.
gcc/config/xtensa/xtensa.md
gcc/testsuite/gcc.target/xtensa/bswap-O1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/xtensa/bswap-O2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/xtensa/bswap-Os.c [new file with mode: 0644]
gcc/testsuite/gcc.target/xtensa/bswap.c [deleted file]