From: Richard Henderson Date: Fri, 14 Oct 2011 03:18:14 +0000 (-0700) Subject: spu: Implement vec_permv16qi. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=f6293442ba64f9225c4643438bb385eb0c34087a;p=gcc.git spu: Implement vec_permv16qi. From-SVN: r179954 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2f0dfe058be..9e34eca7909 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 * config/i386/sse.md (vec_set): Change V_128 iterator mode diff --git a/gcc/config/spu/spu.md b/gcc/config/spu/spu.md index 676d54e8de0..00cfaa4be55 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)] ""