]> granicus.if.org Git - llvm/commitdiff
[AVX-512] Fix mistake in the immediate swizzle for some of the VPTERNLOG patterns.
authorCraig Topper <craig.topper@gmail.com>
Mon, 20 Feb 2017 07:00:34 +0000 (07:00 +0000)
committerCraig Topper <craig.topper@gmail.com>
Mon, 20 Feb 2017 07:00:34 +0000 (07:00 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@295638 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86InstrAVX512.td
test/CodeGen/X86/avx512-vpternlog-commute.ll

index 484ace999ce754c167f59a13b9d61048e09a242f..b3b8452067cef7fd3cfbc6da75bb640372a38bd2 100644 (file)
@@ -8899,8 +8899,8 @@ def VPTERNLOG213_imm8 : SDNodeXForm<imm, [{
   uint8_t Imm = N->getZExtValue();
   // Swap bits 2/4 and 3/5.
   uint8_t NewImm = Imm & 0xc3;
-  if (Imm & 0x02) NewImm |= 0x10;
-  if (Imm & 0x10) NewImm |= 0x02;
+  if (Imm & 0x04) NewImm |= 0x10;
+  if (Imm & 0x10) NewImm |= 0x04;
   if (Imm & 0x08) NewImm |= 0x20;
   if (Imm & 0x20) NewImm |= 0x08;
   return getI8Imm(NewImm, SDLoc(N));
index cc89ee54c1beb69c89b4a01a5941e790e3d206d7..547250a717f636a9543e7b272f51c481da8fdd08 100644 (file)
@@ -190,7 +190,7 @@ define <16 x i32> @vpternlog_v16i32_012_mask1(<16 x i32> %x0, <16 x i32> %x1, <1
 ; CHECK-LABEL: vpternlog_v16i32_012_mask1:
 ; CHECK:       ## BB#0:
 ; CHECK-NEXT:    kmovw %edi, %k1
-; CHECK-NEXT:    vpternlogd $90, %zmm2, %zmm0, %zmm1 {%k1}
+; CHECK-NEXT:    vpternlogd $78, %zmm2, %zmm0, %zmm1 {%k1}
 ; CHECK-NEXT:    vmovdqa64 %zmm1, %zmm0
 ; CHECK-NEXT:    retq
   %res = call <16 x i32> @llvm.x86.avx512.mask.pternlog.d.512(<16 x i32> %x0, <16 x i32> %x1, <16 x i32> %x2, i32 114, i16 -1)