diff options
author | Chung-Ju Wu <jasonwucj@gmail.com> | 2018-05-27 06:52:48 +0000 |
---|---|---|
committer | Chung-Ju Wu <jasonwucj@gcc.gnu.org> | 2018-05-27 06:52:48 +0000 |
commit | 0be3bad7054256f009a066cce34b4cca12f3b86f (patch) | |
tree | ef45cccf4b3b15ca135af787b314642fb43dec35 /gcc/config/nds32 | |
parent | 54c537e66c26882d8b3202a3e72a6fb9464d9969 (diff) | |
download | gcc-0be3bad7054256f009a066cce34b4cca12f3b86f.zip gcc-0be3bad7054256f009a066cce34b4cca12f3b86f.tar.gz gcc-0be3bad7054256f009a066cce34b4cca12f3b86f.tar.bz2 |
[NDS32] Implement bswapsi2 and bswaphi2 patterns.
gcc/
* config/nds32/nds32.md (bswapsi2, bswaphi2): New patterns.
From-SVN: r260804
Diffstat (limited to 'gcc/config/nds32')
-rw-r--r-- | gcc/config/nds32/nds32.md | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/gcc/config/nds32/nds32.md b/gcc/config/nds32/nds32.md index 63e4efe..66ef033 100644 --- a/gcc/config/nds32/nds32.md +++ b/gcc/config/nds32/nds32.md @@ -2180,6 +2180,26 @@ [(set_attr "type" "alu") (set_attr "length" "4")] ) + +(define_expand "bswapsi2" + [(set (match_operand:SI 0 "register_operand" "=r") + (bswap:SI (match_operand:SI 1 "register_operand" "r")))] + "" +{ + emit_insn (gen_unspec_wsbh (operands[0], operands[1])); + emit_insn (gen_rotrsi3 (operands[0], operands[0], GEN_INT (16))); + DONE; +}) + +(define_insn "bswaphi2" + [(set (match_operand:HI 0 "register_operand" "=r") + (bswap:HI (match_operand:HI 1 "register_operand" "r")))] + "" + "wsbh\t%0, %1" + [(set_attr "type" "alu") + (set_attr "length" "4")] +) + ;; ---------------------------------------------------------------------------- ;; Patterns for exception handling |