aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/nds32
diff options
context:
space:
mode:
authorChung-Ju Wu <jasonwucj@gmail.com>2018-05-27 06:52:48 +0000
committerChung-Ju Wu <jasonwucj@gcc.gnu.org>2018-05-27 06:52:48 +0000
commit0be3bad7054256f009a066cce34b4cca12f3b86f (patch)
treeef45cccf4b3b15ca135af787b314642fb43dec35 /gcc/config/nds32
parent54c537e66c26882d8b3202a3e72a6fb9464d9969 (diff)
downloadgcc-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.md20
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