aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKelvin Nilsen <kelvin@gcc.gnu.org>2019-11-06 23:10:51 +0000
committerKelvin Nilsen <kelvin@gcc.gnu.org>2019-11-06 23:10:51 +0000
commit7b88f66de61f4533bbd7ae0124c4260c2959f1e0 (patch)
treebeab47295c9aedfab7a1de6d9ade869a00861a4b
parente69ed8dc39abea60755b147541b31ad06ee229a9 (diff)
downloadgcc-7b88f66de61f4533bbd7ae0124c4260c2959f1e0.zip
gcc-7b88f66de61f4533bbd7ae0124c4260c2959f1e0.tar.gz
gcc-7b88f66de61f4533bbd7ae0124c4260c2959f1e0.tar.bz2
vsx.md (xxswapd_<mode>): Add support for V2DF and V2DI modes.
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
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/rs6000/vsx.md11
2 files changed, 16 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f451b1f..c3dc5b3 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/rs6000/vsx.md b/gcc/config/rs6000/vsx.md
index fc61ae1..aa13b20 100644
--- a/gcc/config/rs6000/vsx.md
+++ b/gcc/config/rs6000/vsx.md
@@ -2987,6 +2987,17 @@
"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>"