]> granicus.if.org Git - llvm/commitdiff
AVX-512: Fixed a bug in kortest.z intrinsic
authorElena Demikhovsky <elena.demikhovsky@intel.com>
Wed, 14 Sep 2016 08:06:54 +0000 (08:06 +0000)
committerElena Demikhovsky <elena.demikhovsky@intel.com>
Wed, 14 Sep 2016 08:06:54 +0000 (08:06 +0000)
Lowering was wrong - X86ISD::SETCC node should return i8 type.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281446 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86ISelLowering.cpp
test/CodeGen/X86/avx512-intrinsics.ll

index 5f7dbb68f83efb6de2bcd37b2a78b5858538ac47..dc7617d7b983d18da6d22792dd82515c1bdbe204 100644 (file)
@@ -18336,7 +18336,7 @@ static SDValue LowerINTRINSIC_WO_CHAIN(SDValue Op, const X86Subtarget &Subtarget
     SDValue RHS = DAG.getBitcast(MVT::v16i1, Op.getOperand(2));
     SDValue CC = DAG.getConstant(X86CC, dl, MVT::i8);
     SDValue Test = DAG.getNode(X86ISD::KORTEST, dl, MVT::i32, LHS, RHS);
-    SDValue SetCC = DAG.getNode(X86ISD::SETCC, dl, MVT::i1, CC, Test);
+    SDValue SetCC = DAG.getNode(X86ISD::SETCC, dl, MVT::i8, CC, Test);
     return DAG.getNode(ISD::ZERO_EXTEND, dl, MVT::i32, SetCC);
   }
 
index d9a1bfb5d52cf9f2c3de9e471f606be72610cb10..0e8e9f4212cd3be68a6820bbc9b01562fd29c757 100644 (file)
@@ -7,11 +7,9 @@ define i32 @test_kortestz(i16 %a0, i16 %a1) {
 ; CHECK:       ## BB#0:
 ; CHECK-NEXT:    kmovw %esi, %k0
 ; CHECK-NEXT:    kmovw %edi, %k1
+; CHECK-NEXT:    xorl %eax, %eax
 ; CHECK-NEXT:    kortestw %k0, %k1
 ; CHECK-NEXT:    sete %al
-; CHECK-NEXT:    kmovw %eax, %k0
-; CHECK-NEXT:    kmovw %k0, %eax
-; CHECK-NEXT:    andl $1, %eax
 ; CHECK-NEXT:    retq
   %res = call i32 @llvm.x86.avx512.kortestz.w(i16 %a0, i16 %a1)
   ret i32 %res