aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2011-10-13 20:18:14 -0700
committerRichard Henderson <rth@gcc.gnu.org>2011-10-13 20:18:14 -0700
commitf6293442ba64f9225c4643438bb385eb0c34087a (patch)
tree15d2f18bd7b71dfacc5e6cea86f14f4adbe7e6c4
parentcba86444149dde6b3b24e6febf6369c322b41bae (diff)
downloadgcc-f6293442ba64f9225c4643438bb385eb0c34087a.zip
gcc-f6293442ba64f9225c4643438bb385eb0c34087a.tar.gz
gcc-f6293442ba64f9225c4643438bb385eb0c34087a.tar.bz2
spu: Implement vec_permv16qi.
From-SVN: r179954
-rw-r--r--gcc/ChangeLog2
-rw-r--r--gcc/config/spu/spu.md12
2 files changed, 14 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2f0dfe0..9e34eca 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -2,6 +2,8 @@
* config/rs6000/altivec.md (vec_permv16qi): New pattern.
+ * config/rs6000/spu.md (vec_permv16qi): New pattern.
+
2011-10-13 Jakub Jelinek <jakub@redhat.com>
* config/i386/sse.md (vec_set<mode>): Change V_128 iterator mode
diff --git a/gcc/config/spu/spu.md b/gcc/config/spu/spu.md
index 676d54e..00cfaa4 100644
--- a/gcc/config/spu/spu.md
+++ b/gcc/config/spu/spu.md
@@ -4395,6 +4395,18 @@ selb\t%0,%4,%0,%3"
"shufb\t%0,%1,%2,%3"
[(set_attr "type" "shuf")])
+(define_expand "vec_permv16qi"
+ [(set (match_operand:V16QI 0 "spu_reg_operand" "")
+ (unspec:V16QI
+ [(match_operand:V16QI 1 "spu_reg_operand" "")
+ (match_operand:V16QI 2 "spu_reg_operand" "")
+ (match_operand:V16QI 3 "spu_reg_operand" "")]
+ UNSPEC_SHUFB))]
+ ""
+ {
+ operands[3] = gen_lowpart (TImode, operands[3]);
+ })
+
(define_insn "nop"
[(unspec_volatile [(const_int 0)] UNSPECV_NOP)]
""