From: Simon Pilgrim Date: Thu, 11 Apr 2019 14:26:32 +0000 (+0000) Subject: [X86][AVX] Add X86ISD::VPERMV demandedelts test X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2d199db3b4017b0bba731a77e7898554814dcc9a;p=llvm [X86][AVX] Add X86ISD::VPERMV demandedelts test git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358173 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/test/CodeGen/X86/vector-shuffle-combining-avx2.ll b/test/CodeGen/X86/vector-shuffle-combining-avx2.ll index bedf6823277..f2f45fc6700 100644 --- a/test/CodeGen/X86/vector-shuffle-combining-avx2.ll +++ b/test/CodeGen/X86/vector-shuffle-combining-avx2.ll @@ -342,6 +342,28 @@ define <8 x float> @combine_permps_as_permpd(<8 x float> %a) { ret <8 x float> %1 } +define <8 x float> @combine_permps_as_vpermilps(<8 x float> %a, i32 %a1) { +; X86-LABEL: combine_permps_as_vpermilps: +; X86: # %bb.0: +; X86-NEXT: vmovss {{.*#+}} xmm1 = mem[0],zero,zero,zero +; X86-NEXT: vblendps {{.*#+}} ymm1 = ymm1[0],mem[1,2,3,4,5,6,7] +; X86-NEXT: vpermps %ymm0, %ymm1, %ymm0 +; X86-NEXT: vpermilps {{.*#+}} ymm0 = ymm0[1,1,2,3,4,5,6,7] +; X86-NEXT: retl +; +; X64-LABEL: combine_permps_as_vpermilps: +; X64: # %bb.0: +; X64-NEXT: vmovd %edi, %xmm1 +; X64-NEXT: vpblendd {{.*#+}} ymm1 = ymm1[0],mem[1,2,3,4,5,6,7] +; X64-NEXT: vpermd %ymm0, %ymm1, %ymm0 +; X64-NEXT: vpermilps {{.*#+}} ymm0 = ymm0[1,1,2,3,4,5,6,7] +; X64-NEXT: retq + %1 = insertelement <8 x i32> , i32 %a1, i32 0 + %2 = call <8 x float> @llvm.x86.avx2.permps(<8 x float> %a, <8 x i32> %1) + %3 = shufflevector <8 x float> %2, <8 x float> undef, <8 x i32> + ret <8 x float> %3 +} + define <4 x i64> @combine_pshufb_as_zext(<32 x i8> %a0) { ; CHECK-LABEL: combine_pshufb_as_zext: ; CHECK: # %bb.0: