On Mon, Sep 21, 2015 at 4:27 PM, Kirill Yukhin <kirill.yuk...@gmail.com> wrote: > Hello, > This patch fixes operands in kunpck[hi|si|di] insn patterns. > Bootstrapped (regtesting in progress). > > gcc/ > * gcc/config/i386/i386.md (define_insn "kunpckhi"): Fix > operand in pattern. > (define_insn "kunpcksi"): Ditto. > (define_insn "kunpckdi"): Ditto. > > Is it ok for trunk and gcc-5-branch if testing pass?
You know the insn better than I, but the patterns look OK to me. Please note that this change will remove (unneeded due to inherent zero-extending?) zero-extends from the instruction stream, as combine pass will merge zext into the pattern itself. Thanks, Uros. > -- > Thanks, K > > commit 433bd69b29c62d0c65e5a0772d564b0d930ee8c5 > Author: Kirill Yukhin <kirill.yuk...@intel.com> > Date: Fri Sep 18 13:51:26 2015 +0300 > > AVX-512. Fix patterns for kunpck insns. > > diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md > index f7230f0..2f8cdb2 100644 > --- a/gcc/config/i386/i386.md > +++ b/gcc/config/i386/i386.md > @@ -8603,7 +8603,7 @@ > [(set (match_operand:HI 0 "register_operand" "=k") > (ior:HI > (ashift:HI > - (match_operand:HI 1 "register_operand" "k") > + (zero_extend:HI (match_operand:QI 1 "register_operand" "k")) > (const_int 8)) > (zero_extend:HI (match_operand:QI 2 "register_operand" "k"))))] > "TARGET_AVX512F" > @@ -8616,9 +8616,9 @@ > [(set (match_operand:SI 0 "register_operand" "=k") > (ior:SI > (ashift:SI > - (match_operand:SI 1 "register_operand" "k") > + (zero_extend:SI (match_operand:HI 1 "register_operand" "k")) > (const_int 16)) > - (zero_extend:SI (subreg:HI (match_operand:SI 2 "register_operand" > "k") 0))))] > + (zero_extend:SI (match_operand:HI 2 "register_operand" "k"))))] > "TARGET_AVX512BW" > "kunpckwd\t{%2, %1, %0|%0, %1, %2}" > [(set_attr "mode" "SI")]) > @@ -8627,9 +8627,9 @@ > [(set (match_operand:DI 0 "register_operand" "=k") > (ior:DI > (ashift:DI > - (match_operand:DI 1 "register_operand" "k") > + (zero_extend:DI (match_operand:SI 1 "register_operand" "k")) > (const_int 32)) > - (zero_extend:DI (subreg:SI (match_operand:DI 2 "register_operand" > "k") 0))))] > + (zero_extend:DI (match_operand:SI 2 "register_operand" "k"))))] > "TARGET_AVX512BW" > "kunpckdq\t{%2, %1, %0|%0, %1, %2}" > [(set_attr "mode" "DI")])