From 9b3cd879a9645d5709eb8c316da30dc4822b0527 Mon Sep 17 00:00:00 2001 From: jasonwucj Date: Sun, 27 May 2018 06:52:48 +0000 Subject: [PATCH] [NDS32] Implement bswapsi2 and bswaphi2 patterns. gcc/ * config/nds32/nds32.md (bswapsi2, bswaphi2): New patterns. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@260804 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 4 ++++ gcc/config/nds32/nds32.md | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 73c578165f3..293856b0888 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 2018-05-27 Chung-Ju Wu + * config/nds32/nds32.md (bswapsi2, bswaphi2): New patterns. + +2018-05-27 Chung-Ju Wu + * config/nds32/nds32.c (nds32_attribute_table): Add "no_prologue". (nds32_init_machine_status): Initialize machine->attr_naked_p and machine->attr_no_prologue_p. diff --git a/gcc/config/nds32/nds32.md b/gcc/config/nds32/nds32.md index 63e4efe23da..66ef03327f4 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 -- 2.11.4.GIT