On Sun, Apr 22, 2007 at 11:14:20PM +0300, Dorit Nuzman wrote:
> "H. J. Lu" <[EMAIL PROTECTED]> wrote on 20/04/2007 18:02:09:
>
> > Hi Dorit,
> >
> > SSE4 has vector zero/sign-extensions like:
> >
> > (define_insn "sse4_1_zero_extendv2siv2di2"
> > [(set (match_operand:V2DI 0 "register_operand" "=x")
> > (zero_extend:V2DI
> > (vec_select:V2SI
> > (match_operand:V4SI 1 "nonimmediate_operand" "xm")
> > (parallel [(const_int 0)
> > (const_int 1)]))))]
> > "TARGET_SSE4_1"
> > "pmovzxdq\t{%1, %0|%0, %1}"
> > [(set_attr "type" "ssemov")
> > (set_attr "mode" "TI")])
> >
> > Does vectorizer support them?
> >
>
> (sorry, I was away from email during Friday-Saturday) -
>
> so this looks like a vec_unpacku_hi_v4si (or _lo?), i.e. what is now
> modeled as follows in sse.md:
>
> (define_expand "vec_unpacku_hi_v4si"
> [(match_operand:V2DI 0 "register_operand" "")
> (match_operand:V4SI 1 "register_operand" "")]
> "TARGET_SSE2"
> {
> ix86_expand_sse_unpack (operands, true, true);
> DONE;
> })
>
I am not sure if they are the same since SSE4.1 instructions
extend the first 2 elements in the vector, not the high/low
parts.
H.J.