diff options
author | Richard Henderson <rth@redhat.com> | 2011-10-13 20:18:14 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2011-10-13 20:18:14 -0700 |
commit | f6293442ba64f9225c4643438bb385eb0c34087a (patch) | |
tree | 15d2f18bd7b71dfacc5e6cea86f14f4adbe7e6c4 | |
parent | cba86444149dde6b3b24e6febf6369c322b41bae (diff) | |
download | gcc-f6293442ba64f9225c4643438bb385eb0c34087a.zip gcc-f6293442ba64f9225c4643438bb385eb0c34087a.tar.gz gcc-f6293442ba64f9225c4643438bb385eb0c34087a.tar.bz2 |
spu: Implement vec_permv16qi.
From-SVN: r179954
-rw-r--r-- | gcc/ChangeLog | 2 | ||||
-rw-r--r-- | gcc/config/spu/spu.md | 12 |
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)] "" |