diff options
Diffstat (limited to 'llvm/test/CodeGen/X86/combine-srl.ll')
| -rw-r--r-- | llvm/test/CodeGen/X86/combine-srl.ll | 66 |
1 files changed, 32 insertions, 34 deletions
diff --git a/llvm/test/CodeGen/X86/combine-srl.ll b/llvm/test/CodeGen/X86/combine-srl.ll index 80dcb29209b..dbc56f906d9 100644 --- a/llvm/test/CodeGen/X86/combine-srl.ll +++ b/llvm/test/CodeGen/X86/combine-srl.ll @@ -347,50 +347,48 @@ define <4 x i32> @combine_vec_lshr_lzcnt_bit1(<4 x i32> %x) { ; SSE-LABEL: combine_vec_lshr_lzcnt_bit1: ; SSE: # %bb.0: ; SSE-NEXT: pand {{.*}}(%rip), %xmm0 +; SSE-NEXT: movdqa {{.*#+}} xmm2 = [4,3,2,2,1,1,1,1,0,0,0,0,0,0,0,0] +; SSE-NEXT: movdqa %xmm2, %xmm3 +; SSE-NEXT: pshufb %xmm0, %xmm3 ; SSE-NEXT: movdqa %xmm0, %xmm1 ; SSE-NEXT: psrlw $4, %xmm1 -; SSE-NEXT: pxor %xmm2, %xmm2 -; SSE-NEXT: movdqa {{.*#+}} xmm3 = [4,3,2,2,1,1,1,1,0,0,0,0,0,0,0,0] -; SSE-NEXT: movdqa %xmm3, %xmm4 -; SSE-NEXT: pshufb %xmm1, %xmm3 -; SSE-NEXT: pcmpeqb %xmm2, %xmm1 -; SSE-NEXT: movdqa {{.*#+}} xmm5 = [15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15] -; SSE-NEXT: pand %xmm0, %xmm5 -; SSE-NEXT: pshufb %xmm5, %xmm4 -; SSE-NEXT: pand %xmm1, %xmm4 -; SSE-NEXT: paddb %xmm4, %xmm3 -; SSE-NEXT: movdqa %xmm0, %xmm1 -; SSE-NEXT: pcmpeqb %xmm2, %xmm1 -; SSE-NEXT: psrlw $8, %xmm1 +; SSE-NEXT: pxor %xmm4, %xmm4 +; SSE-NEXT: pshufb %xmm1, %xmm2 +; SSE-NEXT: pcmpeqb %xmm4, %xmm1 ; SSE-NEXT: pand %xmm3, %xmm1 -; SSE-NEXT: psrlw $8, %xmm3 -; SSE-NEXT: paddw %xmm1, %xmm3 -; SSE-NEXT: pcmpeqw %xmm2, %xmm0 +; SSE-NEXT: paddb %xmm2, %xmm1 +; SSE-NEXT: movdqa %xmm0, %xmm2 +; SSE-NEXT: pcmpeqb %xmm4, %xmm2 +; SSE-NEXT: psrlw $8, %xmm2 +; SSE-NEXT: pand %xmm1, %xmm2 +; SSE-NEXT: psrlw $8, %xmm1 +; SSE-NEXT: paddw %xmm2, %xmm1 +; SSE-NEXT: pcmpeqw %xmm4, %xmm0 ; SSE-NEXT: psrld $16, %xmm0 -; SSE-NEXT: pand %xmm3, %xmm0 -; SSE-NEXT: psrld $16, %xmm3 -; SSE-NEXT: paddd %xmm3, %xmm0 -; SSE-NEXT: psrld $5, %xmm0 +; SSE-NEXT: pand %xmm1, %xmm0 +; SSE-NEXT: psrld $16, %xmm1 +; SSE-NEXT: paddd %xmm0, %xmm1 +; SSE-NEXT: psrld $5, %xmm1 +; SSE-NEXT: movdqa %xmm1, %xmm0 ; SSE-NEXT: retq ; ; AVX-LABEL: combine_vec_lshr_lzcnt_bit1: ; AVX: # %bb.0: ; AVX-NEXT: vpand {{.*}}(%rip), %xmm0, %xmm0 -; AVX-NEXT: vpsrlw $4, %xmm0, %xmm1 -; AVX-NEXT: vpxor %xmm2, %xmm2, %xmm2 -; AVX-NEXT: vpcmpeqb %xmm2, %xmm1, %xmm3 -; AVX-NEXT: vpand {{.*}}(%rip), %xmm0, %xmm4 -; AVX-NEXT: vmovdqa {{.*#+}} xmm5 = [4,3,2,2,1,1,1,1,0,0,0,0,0,0,0,0] -; AVX-NEXT: vpshufb %xmm4, %xmm5, %xmm4 -; AVX-NEXT: vpand %xmm3, %xmm4, %xmm3 -; AVX-NEXT: vpshufb %xmm1, %xmm5, %xmm1 -; AVX-NEXT: vpaddb %xmm1, %xmm3, %xmm1 -; AVX-NEXT: vpcmpeqb %xmm2, %xmm0, %xmm3 -; AVX-NEXT: vpsrlw $8, %xmm3, %xmm3 -; AVX-NEXT: vpand %xmm3, %xmm1, %xmm3 +; AVX-NEXT: vmovdqa {{.*#+}} xmm1 = [4,3,2,2,1,1,1,1,0,0,0,0,0,0,0,0] +; AVX-NEXT: vpshufb %xmm0, %xmm1, %xmm2 +; AVX-NEXT: vpsrlw $4, %xmm0, %xmm3 +; AVX-NEXT: vpxor %xmm4, %xmm4, %xmm4 +; AVX-NEXT: vpcmpeqb %xmm4, %xmm3, %xmm5 +; AVX-NEXT: vpand %xmm5, %xmm2, %xmm2 +; AVX-NEXT: vpshufb %xmm3, %xmm1, %xmm1 +; AVX-NEXT: vpaddb %xmm1, %xmm2, %xmm1 +; AVX-NEXT: vpcmpeqb %xmm4, %xmm0, %xmm2 +; AVX-NEXT: vpsrlw $8, %xmm2, %xmm2 +; AVX-NEXT: vpand %xmm2, %xmm1, %xmm2 ; AVX-NEXT: vpsrlw $8, %xmm1, %xmm1 -; AVX-NEXT: vpaddw %xmm3, %xmm1, %xmm1 -; AVX-NEXT: vpcmpeqw %xmm2, %xmm0, %xmm0 +; AVX-NEXT: vpaddw %xmm2, %xmm1, %xmm1 +; AVX-NEXT: vpcmpeqw %xmm4, %xmm0, %xmm0 ; AVX-NEXT: vpsrld $16, %xmm0, %xmm0 ; AVX-NEXT: vpand %xmm0, %xmm1, %xmm0 ; AVX-NEXT: vpsrld $16, %xmm1, %xmm1 |

