vsx.md (xxswapd_<mode>): Add support for V2DF and V2DI modes.
authorKelvin Nilsen <kelvin@gcc.gnu.org>
Wed, 6 Nov 2019 23:10:51 +0000 (23:10 +0000)
committerKelvin Nilsen <kelvin@gcc.gnu.org>
Wed, 6 Nov 2019 23:10:51 +0000 (23:10 +0000)
gcc/ChangeLog:

2019-11-06  Kelvin Nilsen  <kelvin@gcc.gnu.org>

* config/rs6000/vsx.md (xxswapd_<mode>): Add support for V2DF and
V2DI modes.

From-SVN: r277893

gcc/ChangeLog
gcc/config/rs6000/vsx.md

index f451b1f91b77eada0522eb903bdb9f20d7d3da05..c3dc5b333dfdbbaa7910f8b7abb87d01eb9c93c2 100644 (file)
@@ -1,3 +1,8 @@
+2019-11-06  Kelvin Nilsen  <kelvin@gcc.gnu.org>
+
+       * config/rs6000/vsx.md (xxswapd_<mode>): Add support for V2DF and
+       V2DI modes.
+
 2019-11-06  Jan Hubicka  <jh@suse.cz>
 
        * ggc-common.c (ggc_prune_overhead_list): Do not delete surviving
index fc61ae1e7b32a8a5dc20f15b226dc46e1741996c..aa13b20f574e8f7ebea51376fe74a894362e17f0 100644 (file)
   "xxpermdi %x0,%x1,%x1,2"
   [(set_attr "type" "vecperm")])
 
+(define_insn "xxswapd_<mode>"
+  [(set (match_operand:VSX_D 0 "vsx_register_operand" "=wa")
+       (vec_select:VSX_D
+         (match_operand:VSX_D 1 "vsx_register_operand" "wa")
+         (parallel [(const_int 1) (const_int 0)])))]
+  "TARGET_VSX"
+;; AIX does not support extended mnemonic xxswapd.  Use the basic
+;; mnemonic xxpermdi instead.
+  "xxpermdi %x0,%x1,%x1,2"
+  [(set_attr "type" "vecperm")])
+
 ;; lxvd2x for little endian loads.  We need several of
 ;; these since the form of the PARALLEL differs by mode.
 (define_insn "*vsx_lxvd2x2_le_<mode>"