re PR target/68633 ([i386, AVX-512] Spec2006/434.zeus miscompares when executed on KNL)

PR target/68633

gcc/
	* config/i386/sse.md (define_insn "kunpckhi"): Fix operands order.
	(define_insn "kunpcksi"): Ditto.
	(define_insn "kunpckdi"): Ditto.
gcc/testsuite
	* gcc.target/i386/pr68633.c: New test.

From-SVN: r231359
This commit is contained in:
Kirill Yukhin 2015-12-07 11:05:40 +00:00 committed by Kirill Yukhin
parent 1bf2ca0b75
commit fc2e8e423f
4 changed files with 39 additions and 3 deletions

View File

@ -1,3 +1,10 @@
2015-12-07 Kirill Yukhin <kirill.yukhin@intel.com>
PR target/68633
* config/i386/sse.md (define_insn "kunpckhi"): Fix operands order.
(define_insn "kunpcksi"): Ditto.
(define_insn "kunpckdi"): Ditto.
2015-12-06 Kaz Kojima <kkojima@gcc.gnu.org>
* config/sh/sh.md (rsqrtsf2): Adjust for canonical form with unspec.

View File

@ -8803,7 +8803,7 @@
(const_int 8))
(zero_extend:HI (match_operand:QI 2 "register_operand" "k"))))]
"TARGET_AVX512F"
"kunpckbw\t{%2, %1, %0|%0, %1, %2}"
"kunpckbw\t{%1, %2, %0|%0, %2, %1}"
[(set_attr "mode" "HI")
(set_attr "type" "msklog")
(set_attr "prefix" "vex")])
@ -8816,7 +8816,7 @@
(const_int 16))
(zero_extend:SI (match_operand:HI 2 "register_operand" "k"))))]
"TARGET_AVX512BW"
"kunpckwd\t{%2, %1, %0|%0, %1, %2}"
"kunpckwd\t{%1, %2, %0|%0, %2, %1}"
[(set_attr "mode" "SI")])
(define_insn "kunpckdi"
@ -8827,7 +8827,7 @@
(const_int 32))
(zero_extend:DI (match_operand:SI 2 "register_operand" "k"))))]
"TARGET_AVX512BW"
"kunpckdq\t{%2, %1, %0|%0, %1, %2}"
"kunpckdq\t{%1, %2, %0|%0, %2, %1}"
[(set_attr "mode" "DI")])
;; See comment for addsi_1_zext why we do use nonimmediate_operand

View File

@ -1,3 +1,8 @@
2015-12-07 Kirill Yukhin <kirill.yukhin@intel.com>
PR target/68633
* gcc.target/i386/pr68633.c: New test.
2015-12-06 Victoria Stepanyan <victoria.stepanyan@amd.com>
* gcc.target/i386/clzero.c: New.

View File

@ -0,0 +1,24 @@
/* { dg-do run } */
/* { dg-options "-Ofast -mavx512f" } */
/* { dg-require-effective-target avx512f } */
#include <immintrin.h>
#define AVX512F
#include "avx512f-helper.h"
void abort ();
void
TEST ()
{
__mmask16 k1, k2, k3;
__asm__( "kmovw %1, %0" : "=k" (k1) : "r" (1) );
__asm__( "kmovw %1, %0" : "=k" (k2) : "r" (2) );
k3 = _mm512_kunpackb (k1, k2);
if (k3 != 0x201)
abort ();
}