On Thu, Sep 25, 2014 at 11:42 AM, Kirill Yukhin <kirill.yuk...@gmail.com> wrote:
> Hello,
> As suggested, this is splitted out part of [52/n] patch,
> which introduces new vec2mask and mask2vec insn patterns.
>
> As suggested, I've got rid off use of UNSPEC_CVTINT2MASK
> unspec. Unfortunatelly, only partially.
> I suppose, that vec2mask generic RTX will be too complex:
> get most significant bit of each vec elt & compare it
> with zero setting destination mask register accordingly.
> If this approach is preferrable: I ready to do that.

No, we won't benefit anything from overly-complex patterns. Combine is
not _that_ smart.

> Testing in progress.
> Is it ok for trunk if pass?
>
> gcc/
>         * config/i386/predicates.md (define_predicate "constm1_operand"): New.
>         * config/i386/sse.md
>         (define_c_enum "unspec"): Add UNSPEC_CVTINT2MASK.
>         (define_insn "<avx512>_cvt<ssemodesuffix>2mask<VI12_AVX512VL:mode>"): 
> New.
>         (define_insn "<avx512>_cvt<ssemodesuffix>2mask<VI48_AVX512VL:mode>"): 
> Ditto.
>         (define_expand 
> "<avx512>_cvtmask2<ssemodesuffix><VI12_AVX512VL:mode>"): Ditto.
>         (define_insn 
> "*<avx512>_cvtmask2<ssemodesuffix><VI12_AVX512VL:mode>"): Ditto.
>         (define_expand 
> "<avx512>_cvtmask2<ssemodesuffix><VI48_AVX512VL:mode>"): Ditto.
>         (define_insn 
> "*<avx512>_cvtmask2<ssemodesuffix><VI48_AVX512VL:mode>"): Ditto.

Looks reasonable.

Updated patch is OK for mainline.

Thanks,
Uros.

Reply via email to