rl78-expand.md: New define_expand "bswaphi2"
authorSebastian Perta <sebastian.perta@renesas.com>
Mon, 22 Jan 2018 20:20:28 +0000 (20:20 +0000)
committerSebastian Perta <sebastianperta@gcc.gnu.org>
Mon, 22 Jan 2018 20:20:28 +0000 (20:20 +0000)
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

gcc/ChangeLog
gcc/config/rl78/rl78-expand.md
gcc/config/rl78/rl78-real.md
gcc/config/rl78/rl78-virt.md

index c565758523879e8a48c04027b6869afd8fa9bf70..8ba03d6c19bbc33e041a8be591b39e424e21fe1d 100644 (file)
@@ -1,3 +1,9 @@
+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
index 71e271510a40cafb325d6e42f6efad663d620205..7b5033e72e84ba29d4934edb7736719ad7d2c7c2 100644 (file)
   [(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"
index 682fa61a70b66951700195533590030db09d718b..d1c3089fb8d76766a6f11d8d72bc7313afbe36f0 100644 (file)
    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"
index 05b201fc3b3ada874a3fb3a5cb721ad839b2c0ee..b9c8b831881517c1411fc30acf87a25fdd96c0b6 100644 (file)
   [(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"