aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorSebastian Perta <sebastian.perta@renesas.com>2018-01-22 20:20:28 +0000
committerSebastian Perta <sebastianperta@gcc.gnu.org>2018-01-22 20:20:28 +0000
commit4101250d9ef042fd6a5f24228510162e1203dce9 (patch)
tree339809ccada511e2a2520dc95680cfc5eca5ff19 /gcc
parent10cd6ec51a5153ca92d2912d2611d4038374626e (diff)
downloadgcc-4101250d9ef042fd6a5f24228510162e1203dce9.zip
gcc-4101250d9ef042fd6a5f24228510162e1203dce9.tar.gz
gcc-4101250d9ef042fd6a5f24228510162e1203dce9.tar.bz2
rl78-expand.md: New define_expand "bswaphi2"
2018-01-22 Sebastian Perta <sebastian.perta@renesas.com> * config/rl78/rl78-expand.md: New define_expand "bswaphi2" * config/rl78/rl78-virt.md: New define_insn "*bswaphi2_virt" * config/rl78/rl78-real.md: New define_insn "*bswaphi2_real" From-SVN: r256961
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/rl78/rl78-expand.md8
-rw-r--r--gcc/config/rl78/rl78-real.md9
-rw-r--r--gcc/config/rl78/rl78-virt.md8
4 files changed, 31 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c565758..8ba03d6 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
+ * config/rl78/rl78-expand.md: New define_expand "bswaphi2"
+ * config/rl78/rl78-virt.md: New define_insn "*bswaphi2_virt"
+ * config/rl78/rl78-real.md: New define_insn "*bswaphi2_real"
+
+2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
+
* config/rl78/rl78-protos.h: New function declaration rl78_split_movdi
* config/rl78/rl78.md: New define_expand "movdi"
* config/rl78/rl78.c: New function definition rl78_split_movdi
diff --git a/gcc/config/rl78/rl78-expand.md b/gcc/config/rl78/rl78-expand.md
index 71e2715..7b5033e 100644
--- a/gcc/config/rl78/rl78-expand.md
+++ b/gcc/config/rl78/rl78-expand.md
@@ -105,6 +105,14 @@
[(set_attr "valloc" "op1")]
)
+(define_expand "bswaphi2"
+ [(set (match_operand:HI 0 "nonimmediate_operand")
+ (bswap:HI (match_operand:HI 1 "general_operand")))]
+ ""
+ "if (rl78_force_nonfar_2 (operands, gen_bswaphi2))
+ DONE;"
+)
+
;;---------- Conversions ------------------------
(define_expand "zero_extendqihi2"
diff --git a/gcc/config/rl78/rl78-real.md b/gcc/config/rl78/rl78-real.md
index 682fa61..d1c3089 100644
--- a/gcc/config/rl78/rl78-real.md
+++ b/gcc/config/rl78/rl78-real.md
@@ -90,6 +90,15 @@
movw\t%0, %1"
)
+(define_insn "*bswaphi2_real"
+ [(set (match_operand:HI 0 "rl78_nonfar_nonimm_operand" "=A,A")
+ (bswap:HI (match_operand:HI 1 "general_operand" "0,viU")))]
+ "rl78_real_insns_ok ()"
+ "@
+ xch\ta, x
+ movw\tax, %1\n\txch\ta, x"
+)
+
;;---------- Conversions ------------------------
(define_insn "*zero_extendqihi2_real"
diff --git a/gcc/config/rl78/rl78-virt.md b/gcc/config/rl78/rl78-virt.md
index 05b201f..b9c8b83 100644
--- a/gcc/config/rl78/rl78-virt.md
+++ b/gcc/config/rl78/rl78-virt.md
@@ -65,6 +65,14 @@
[(set_attr "valloc" "op1")]
)
+(define_insn "*bswaphi2_virt"
+ [(set (match_operand:HI 0 "rl78_nonfar_nonimm_operand" "=vm")
+ (bswap:HI (match_operand:HI 1 "general_operand" "vim")))]
+ "rl78_virt_insns_ok ()"
+ "v.bswaphi\t%0, %1"
+ [(set_attr "valloc" "op1")]
+)
+
;;---------- Conversions ------------------------
(define_insn "*zero_extendqihi2_virt"