diff options
-rw-r--r-- | llvm/lib/Target/X86/X86ISelLowering.cpp | 3 | ||||
-rw-r--r-- | llvm/test/CodeGen/X86/avx512-skx-insert-subvec.ll | 8 |
2 files changed, 6 insertions, 5 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index bcffa72afea..716b5edc474 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -5099,7 +5099,8 @@ static SDValue insert1BitVector(SDValue Op, SelectionDAG &DAG, // Zero upper bits of the Vec WideSubVec = DAG.getNode(X86ISD::KSHIFTL, dl, WideOpVT, WideSubVec, DAG.getConstant(IdxVal, dl, MVT::i8)); - SDValue ShiftBits = DAG.getConstant(SubVecNumElems, dl, MVT::i8); + NumElems = WideOpVT.getVectorNumElements(); + SDValue ShiftBits = DAG.getConstant(NumElems - IdxVal, dl, MVT::i8); Vec = DAG.getNode(ISD::INSERT_SUBVECTOR, dl, WideOpVT, Undef, Vec, ZeroIdx); Vec = DAG.getNode(X86ISD::KSHIFTL, dl, WideOpVT, Vec, ShiftBits); Vec = DAG.getNode(X86ISD::KSHIFTR, dl, WideOpVT, Vec, ShiftBits); diff --git a/llvm/test/CodeGen/X86/avx512-skx-insert-subvec.ll b/llvm/test/CodeGen/X86/avx512-skx-insert-subvec.ll index 4c650903e47..4421fc09673 100644 --- a/llvm/test/CodeGen/X86/avx512-skx-insert-subvec.ll +++ b/llvm/test/CodeGen/X86/avx512-skx-insert-subvec.ll @@ -79,8 +79,8 @@ define <4 x i1> @test5(<2 x i1> %a, <2 x i1>%b) { ; CHECK-NEXT: vpsllq $63, %xmm1, %xmm0 ; CHECK-NEXT: vptestmq %xmm0, %xmm0, %k1 ; CHECK-NEXT: kshiftlb $2, %k1, %k1 -; CHECK-NEXT: kshiftlb $2, %k0, %k0 -; CHECK-NEXT: kshiftrb $2, %k0, %k0 +; CHECK-NEXT: kshiftlb $6, %k0, %k0 +; CHECK-NEXT: kshiftrb $6, %k0, %k0 ; CHECK-NEXT: korb %k1, %k0, %k0 ; CHECK-NEXT: vpmovm2d %k0, %xmm0 ; CHECK-NEXT: retq @@ -97,8 +97,8 @@ define <16 x i1> @test6(<2 x i1> %a, <2 x i1>%b) { ; CHECK-NEXT: vpsllq $63, %xmm1, %xmm0 ; CHECK-NEXT: vptestmq %xmm0, %xmm0, %k1 ; CHECK-NEXT: kshiftlb $2, %k1, %k1 -; CHECK-NEXT: kshiftlb $2, %k0, %k0 -; CHECK-NEXT: kshiftrb $2, %k0, %k0 +; CHECK-NEXT: kshiftlb $6, %k0, %k0 +; CHECK-NEXT: kshiftrb $6, %k0, %k0 ; CHECK-NEXT: korb %k1, %k0, %k0 ; CHECK-NEXT: vpmovm2b %k0, %xmm0 ; CHECK-NEXT: retq |