diff mbox

[i386,AVX-512] Fix operands in mask unpack[si|di] patterns.

Message ID 20150921142704.GE49423@msticlxl57.ims.intel.com
State New
Headers show

Commit Message

Kirill Yukhin Sept. 21, 2015, 2:27 p.m. UTC
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?

--
Thanks, K

commit 433bd69b29c62d0c65e5a0772d564b0d930ee8c5
Author: Kirill Yukhin <kirill.yukhin@intel.com>
Date:   Fri Sep 18 13:51:26 2015 +0300

    AVX-512. Fix patterns for kunpck insns.

Comments

Uros Bizjak Sept. 21, 2015, 3:06 p.m. UTC | #1
On Mon, Sep 21, 2015 at 4:27 PM, Kirill Yukhin <kirill.yukhin@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.yukhin@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")])
diff mbox

Patch

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")])