diff options
Diffstat (limited to 'llvm/test/CodeGen/X86/vselect-minmax.ll')
-rw-r--r-- | llvm/test/CodeGen/X86/vselect-minmax.ll | 454 |
1 files changed, 241 insertions, 213 deletions
diff --git a/llvm/test/CodeGen/X86/vselect-minmax.ll b/llvm/test/CodeGen/X86/vselect-minmax.ll index 9cfb248a86c..d61c4bc40f7 100644 --- a/llvm/test/CodeGen/X86/vselect-minmax.ll +++ b/llvm/test/CodeGen/X86/vselect-minmax.ll @@ -4535,23 +4535,24 @@ define <8 x i64> @test121(<8 x i64> %a, <8 x i64> %b) { ; ; SSE4-LABEL: test121: ; SSE4: # %bb.0: # %entry -; SSE4-NEXT: movdqa %xmm0, %xmm8 +; SSE4-NEXT: movdqa %xmm7, %xmm8 +; SSE4-NEXT: movdqa %xmm0, %xmm7 ; SSE4-NEXT: movdqa %xmm4, %xmm0 -; SSE4-NEXT: pcmpgtq %xmm8, %xmm0 -; SSE4-NEXT: blendvpd %xmm0, %xmm8, %xmm4 +; SSE4-NEXT: pcmpgtq %xmm7, %xmm0 +; SSE4-NEXT: blendvpd %xmm0, %xmm7, %xmm4 ; SSE4-NEXT: movdqa %xmm5, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm1, %xmm0 ; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm5 ; SSE4-NEXT: movdqa %xmm6, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm2, %xmm0 ; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm6 -; SSE4-NEXT: movdqa %xmm7, %xmm0 +; SSE4-NEXT: movdqa %xmm8, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm3, %xmm0 -; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm7 +; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm8 ; SSE4-NEXT: movapd %xmm4, %xmm0 ; SSE4-NEXT: movapd %xmm5, %xmm1 ; SSE4-NEXT: movapd %xmm6, %xmm2 -; SSE4-NEXT: movapd %xmm7, %xmm3 +; SSE4-NEXT: movapd %xmm8, %xmm3 ; SSE4-NEXT: retq ; ; AVX1-LABEL: test121: @@ -4655,23 +4656,24 @@ define <8 x i64> @test122(<8 x i64> %a, <8 x i64> %b) { ; ; SSE4-LABEL: test122: ; SSE4: # %bb.0: # %entry -; SSE4-NEXT: movdqa %xmm0, %xmm8 +; SSE4-NEXT: movdqa %xmm7, %xmm8 +; SSE4-NEXT: movdqa %xmm0, %xmm7 ; SSE4-NEXT: movdqa %xmm4, %xmm0 -; SSE4-NEXT: pcmpgtq %xmm8, %xmm0 -; SSE4-NEXT: blendvpd %xmm0, %xmm8, %xmm4 +; SSE4-NEXT: pcmpgtq %xmm7, %xmm0 +; SSE4-NEXT: blendvpd %xmm0, %xmm7, %xmm4 ; SSE4-NEXT: movdqa %xmm5, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm1, %xmm0 ; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm5 ; SSE4-NEXT: movdqa %xmm6, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm2, %xmm0 ; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm6 -; SSE4-NEXT: movdqa %xmm7, %xmm0 +; SSE4-NEXT: movdqa %xmm8, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm3, %xmm0 -; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm7 +; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm8 ; SSE4-NEXT: movapd %xmm4, %xmm0 ; SSE4-NEXT: movapd %xmm5, %xmm1 ; SSE4-NEXT: movapd %xmm6, %xmm2 -; SSE4-NEXT: movapd %xmm7, %xmm3 +; SSE4-NEXT: movapd %xmm8, %xmm3 ; SSE4-NEXT: retq ; ; AVX1-LABEL: test122: @@ -4775,9 +4777,10 @@ define <8 x i64> @test123(<8 x i64> %a, <8 x i64> %b) { ; ; SSE4-LABEL: test123: ; SSE4: # %bb.0: # %entry -; SSE4-NEXT: movdqa %xmm0, %xmm8 +; SSE4-NEXT: movdqa %xmm7, %xmm8 +; SSE4-NEXT: movdqa %xmm0, %xmm7 ; SSE4-NEXT: pcmpgtq %xmm4, %xmm0 -; SSE4-NEXT: blendvpd %xmm0, %xmm8, %xmm4 +; SSE4-NEXT: blendvpd %xmm0, %xmm7, %xmm4 ; SSE4-NEXT: movdqa %xmm1, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm5, %xmm0 ; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm5 @@ -4785,12 +4788,12 @@ define <8 x i64> @test123(<8 x i64> %a, <8 x i64> %b) { ; SSE4-NEXT: pcmpgtq %xmm6, %xmm0 ; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm6 ; SSE4-NEXT: movdqa %xmm3, %xmm0 -; SSE4-NEXT: pcmpgtq %xmm7, %xmm0 -; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm7 +; SSE4-NEXT: pcmpgtq %xmm8, %xmm0 +; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm8 ; SSE4-NEXT: movapd %xmm4, %xmm0 ; SSE4-NEXT: movapd %xmm5, %xmm1 ; SSE4-NEXT: movapd %xmm6, %xmm2 -; SSE4-NEXT: movapd %xmm7, %xmm3 +; SSE4-NEXT: movapd %xmm8, %xmm3 ; SSE4-NEXT: retq ; ; AVX1-LABEL: test123: @@ -4894,9 +4897,10 @@ define <8 x i64> @test124(<8 x i64> %a, <8 x i64> %b) { ; ; SSE4-LABEL: test124: ; SSE4: # %bb.0: # %entry -; SSE4-NEXT: movdqa %xmm0, %xmm8 +; SSE4-NEXT: movdqa %xmm7, %xmm8 +; SSE4-NEXT: movdqa %xmm0, %xmm7 ; SSE4-NEXT: pcmpgtq %xmm4, %xmm0 -; SSE4-NEXT: blendvpd %xmm0, %xmm8, %xmm4 +; SSE4-NEXT: blendvpd %xmm0, %xmm7, %xmm4 ; SSE4-NEXT: movdqa %xmm1, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm5, %xmm0 ; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm5 @@ -4904,12 +4908,12 @@ define <8 x i64> @test124(<8 x i64> %a, <8 x i64> %b) { ; SSE4-NEXT: pcmpgtq %xmm6, %xmm0 ; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm6 ; SSE4-NEXT: movdqa %xmm3, %xmm0 -; SSE4-NEXT: pcmpgtq %xmm7, %xmm0 -; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm7 +; SSE4-NEXT: pcmpgtq %xmm8, %xmm0 +; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm8 ; SSE4-NEXT: movapd %xmm4, %xmm0 ; SSE4-NEXT: movapd %xmm5, %xmm1 ; SSE4-NEXT: movapd %xmm6, %xmm2 -; SSE4-NEXT: movapd %xmm7, %xmm3 +; SSE4-NEXT: movapd %xmm8, %xmm3 ; SSE4-NEXT: retq ; ; AVX1-LABEL: test124: @@ -5013,36 +5017,39 @@ define <8 x i64> @test125(<8 x i64> %a, <8 x i64> %b) { ; ; SSE4-LABEL: test125: ; SSE4: # %bb.0: # %entry -; SSE4-NEXT: movdqa %xmm0, %xmm9 -; SSE4-NEXT: movdqa {{.*#+}} xmm8 = [9223372036854775808,9223372036854775808] -; SSE4-NEXT: movdqa %xmm0, %xmm10 -; SSE4-NEXT: pxor %xmm8, %xmm10 +; SSE4-NEXT: movdqa %xmm7, %xmm8 +; SSE4-NEXT: movdqa %xmm6, %xmm9 +; SSE4-NEXT: movdqa %xmm5, %xmm10 +; SSE4-NEXT: movdqa %xmm0, %xmm5 +; SSE4-NEXT: movdqa {{.*#+}} xmm7 = [9223372036854775808,9223372036854775808] +; SSE4-NEXT: movdqa %xmm0, %xmm6 +; SSE4-NEXT: pxor %xmm7, %xmm6 ; SSE4-NEXT: movdqa %xmm4, %xmm0 -; SSE4-NEXT: pxor %xmm8, %xmm0 -; SSE4-NEXT: pcmpgtq %xmm10, %xmm0 -; SSE4-NEXT: blendvpd %xmm0, %xmm9, %xmm4 -; SSE4-NEXT: movdqa %xmm1, %xmm9 -; SSE4-NEXT: pxor %xmm8, %xmm9 -; SSE4-NEXT: movdqa %xmm5, %xmm0 -; SSE4-NEXT: pxor %xmm8, %xmm0 -; SSE4-NEXT: pcmpgtq %xmm9, %xmm0 -; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm5 +; SSE4-NEXT: pxor %xmm7, %xmm0 +; SSE4-NEXT: pcmpgtq %xmm6, %xmm0 +; SSE4-NEXT: blendvpd %xmm0, %xmm5, %xmm4 +; SSE4-NEXT: movdqa %xmm1, %xmm5 +; SSE4-NEXT: pxor %xmm7, %xmm5 +; SSE4-NEXT: movdqa %xmm10, %xmm0 +; SSE4-NEXT: pxor %xmm7, %xmm0 +; SSE4-NEXT: pcmpgtq %xmm5, %xmm0 +; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm10 ; SSE4-NEXT: movdqa %xmm2, %xmm1 -; SSE4-NEXT: pxor %xmm8, %xmm1 -; SSE4-NEXT: movdqa %xmm6, %xmm0 -; SSE4-NEXT: pxor %xmm8, %xmm0 +; SSE4-NEXT: pxor %xmm7, %xmm1 +; SSE4-NEXT: movdqa %xmm9, %xmm0 +; SSE4-NEXT: pxor %xmm7, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm1, %xmm0 -; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm6 +; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm9 ; SSE4-NEXT: movdqa %xmm3, %xmm0 -; SSE4-NEXT: pxor %xmm8, %xmm0 -; SSE4-NEXT: pxor %xmm7, %xmm8 -; SSE4-NEXT: pcmpgtq %xmm0, %xmm8 -; SSE4-NEXT: movdqa %xmm8, %xmm0 -; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm7 +; SSE4-NEXT: pxor %xmm7, %xmm0 +; SSE4-NEXT: pxor %xmm8, %xmm7 +; SSE4-NEXT: pcmpgtq %xmm0, %xmm7 +; SSE4-NEXT: movdqa %xmm7, %xmm0 +; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm8 ; SSE4-NEXT: movapd %xmm4, %xmm0 -; SSE4-NEXT: movapd %xmm5, %xmm1 -; SSE4-NEXT: movapd %xmm6, %xmm2 -; SSE4-NEXT: movapd %xmm7, %xmm3 +; SSE4-NEXT: movapd %xmm10, %xmm1 +; SSE4-NEXT: movapd %xmm9, %xmm2 +; SSE4-NEXT: movapd %xmm8, %xmm3 ; SSE4-NEXT: retq ; ; AVX1-LABEL: test125: @@ -5160,36 +5167,39 @@ define <8 x i64> @test126(<8 x i64> %a, <8 x i64> %b) { ; ; SSE4-LABEL: test126: ; SSE4: # %bb.0: # %entry -; SSE4-NEXT: movdqa %xmm0, %xmm9 -; SSE4-NEXT: movdqa {{.*#+}} xmm8 = [9223372036854775808,9223372036854775808] -; SSE4-NEXT: movdqa %xmm0, %xmm10 -; SSE4-NEXT: pxor %xmm8, %xmm10 +; SSE4-NEXT: movdqa %xmm7, %xmm8 +; SSE4-NEXT: movdqa %xmm6, %xmm9 +; SSE4-NEXT: movdqa %xmm5, %xmm10 +; SSE4-NEXT: movdqa %xmm0, %xmm5 +; SSE4-NEXT: movdqa {{.*#+}} xmm7 = [9223372036854775808,9223372036854775808] +; SSE4-NEXT: movdqa %xmm0, %xmm6 +; SSE4-NEXT: pxor %xmm7, %xmm6 ; SSE4-NEXT: movdqa %xmm4, %xmm0 -; SSE4-NEXT: pxor %xmm8, %xmm0 -; SSE4-NEXT: pcmpgtq %xmm10, %xmm0 -; SSE4-NEXT: blendvpd %xmm0, %xmm9, %xmm4 -; SSE4-NEXT: movdqa %xmm1, %xmm9 -; SSE4-NEXT: pxor %xmm8, %xmm9 -; SSE4-NEXT: movdqa %xmm5, %xmm0 -; SSE4-NEXT: pxor %xmm8, %xmm0 -; SSE4-NEXT: pcmpgtq %xmm9, %xmm0 -; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm5 +; SSE4-NEXT: pxor %xmm7, %xmm0 +; SSE4-NEXT: pcmpgtq %xmm6, %xmm0 +; SSE4-NEXT: blendvpd %xmm0, %xmm5, %xmm4 +; SSE4-NEXT: movdqa %xmm1, %xmm5 +; SSE4-NEXT: pxor %xmm7, %xmm5 +; SSE4-NEXT: movdqa %xmm10, %xmm0 +; SSE4-NEXT: pxor %xmm7, %xmm0 +; SSE4-NEXT: pcmpgtq %xmm5, %xmm0 +; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm10 ; SSE4-NEXT: movdqa %xmm2, %xmm1 -; SSE4-NEXT: pxor %xmm8, %xmm1 -; SSE4-NEXT: movdqa %xmm6, %xmm0 -; SSE4-NEXT: pxor %xmm8, %xmm0 +; SSE4-NEXT: pxor %xmm7, %xmm1 +; SSE4-NEXT: movdqa %xmm9, %xmm0 +; SSE4-NEXT: pxor %xmm7, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm1, %xmm0 -; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm6 +; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm9 ; SSE4-NEXT: movdqa %xmm3, %xmm0 -; SSE4-NEXT: pxor %xmm8, %xmm0 -; SSE4-NEXT: pxor %xmm7, %xmm8 -; SSE4-NEXT: pcmpgtq %xmm0, %xmm8 -; SSE4-NEXT: movdqa %xmm8, %xmm0 -; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm7 +; SSE4-NEXT: pxor %xmm7, %xmm0 +; SSE4-NEXT: pxor %xmm8, %xmm7 +; SSE4-NEXT: pcmpgtq %xmm0, %xmm7 +; SSE4-NEXT: movdqa %xmm7, %xmm0 +; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm8 ; SSE4-NEXT: movapd %xmm4, %xmm0 -; SSE4-NEXT: movapd %xmm5, %xmm1 -; SSE4-NEXT: movapd %xmm6, %xmm2 -; SSE4-NEXT: movapd %xmm7, %xmm3 +; SSE4-NEXT: movapd %xmm10, %xmm1 +; SSE4-NEXT: movapd %xmm9, %xmm2 +; SSE4-NEXT: movapd %xmm8, %xmm3 ; SSE4-NEXT: retq ; ; AVX1-LABEL: test126: @@ -5307,35 +5317,38 @@ define <8 x i64> @test127(<8 x i64> %a, <8 x i64> %b) { ; ; SSE4-LABEL: test127: ; SSE4: # %bb.0: # %entry -; SSE4-NEXT: movdqa %xmm0, %xmm9 -; SSE4-NEXT: movdqa {{.*#+}} xmm8 = [9223372036854775808,9223372036854775808] -; SSE4-NEXT: movdqa %xmm4, %xmm10 -; SSE4-NEXT: pxor %xmm8, %xmm10 -; SSE4-NEXT: pxor %xmm8, %xmm0 -; SSE4-NEXT: pcmpgtq %xmm10, %xmm0 -; SSE4-NEXT: blendvpd %xmm0, %xmm9, %xmm4 -; SSE4-NEXT: movdqa %xmm5, %xmm9 -; SSE4-NEXT: pxor %xmm8, %xmm9 +; SSE4-NEXT: movdqa %xmm7, %xmm8 +; SSE4-NEXT: movdqa %xmm6, %xmm9 +; SSE4-NEXT: movdqa %xmm5, %xmm10 +; SSE4-NEXT: movdqa %xmm4, %xmm5 +; SSE4-NEXT: movdqa %xmm0, %xmm6 +; SSE4-NEXT: movdqa {{.*#+}} xmm7 = [9223372036854775808,9223372036854775808] +; SSE4-NEXT: pxor %xmm7, %xmm4 +; SSE4-NEXT: pxor %xmm7, %xmm0 +; SSE4-NEXT: pcmpgtq %xmm4, %xmm0 +; SSE4-NEXT: blendvpd %xmm0, %xmm6, %xmm5 +; SSE4-NEXT: movdqa %xmm10, %xmm4 +; SSE4-NEXT: pxor %xmm7, %xmm4 ; SSE4-NEXT: movdqa %xmm1, %xmm0 -; SSE4-NEXT: pxor %xmm8, %xmm0 -; SSE4-NEXT: pcmpgtq %xmm9, %xmm0 -; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm5 -; SSE4-NEXT: movdqa %xmm6, %xmm1 -; SSE4-NEXT: pxor %xmm8, %xmm1 +; SSE4-NEXT: pxor %xmm7, %xmm0 +; SSE4-NEXT: pcmpgtq %xmm4, %xmm0 +; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm10 +; SSE4-NEXT: movdqa %xmm9, %xmm1 +; SSE4-NEXT: pxor %xmm7, %xmm1 ; SSE4-NEXT: movdqa %xmm2, %xmm0 -; SSE4-NEXT: pxor %xmm8, %xmm0 +; SSE4-NEXT: pxor %xmm7, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm1, %xmm0 -; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm6 -; SSE4-NEXT: movdqa %xmm7, %xmm0 -; SSE4-NEXT: pxor %xmm8, %xmm0 -; SSE4-NEXT: pxor %xmm3, %xmm8 -; SSE4-NEXT: pcmpgtq %xmm0, %xmm8 +; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm9 ; SSE4-NEXT: movdqa %xmm8, %xmm0 -; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm7 -; SSE4-NEXT: movapd %xmm4, %xmm0 -; SSE4-NEXT: movapd %xmm5, %xmm1 -; SSE4-NEXT: movapd %xmm6, %xmm2 -; SSE4-NEXT: movapd %xmm7, %xmm3 +; SSE4-NEXT: pxor %xmm7, %xmm0 +; SSE4-NEXT: pxor %xmm3, %xmm7 +; SSE4-NEXT: pcmpgtq %xmm0, %xmm7 +; SSE4-NEXT: movdqa %xmm7, %xmm0 +; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm8 +; SSE4-NEXT: movapd %xmm5, %xmm0 +; SSE4-NEXT: movapd %xmm10, %xmm1 +; SSE4-NEXT: movapd %xmm9, %xmm2 +; SSE4-NEXT: movapd %xmm8, %xmm3 ; SSE4-NEXT: retq ; ; AVX1-LABEL: test127: @@ -5453,35 +5466,38 @@ define <8 x i64> @test128(<8 x i64> %a, <8 x i64> %b) { ; ; SSE4-LABEL: test128: ; SSE4: # %bb.0: # %entry -; SSE4-NEXT: movdqa %xmm0, %xmm9 -; SSE4-NEXT: movdqa {{.*#+}} xmm8 = [9223372036854775808,9223372036854775808] -; SSE4-NEXT: movdqa %xmm4, %xmm10 -; SSE4-NEXT: pxor %xmm8, %xmm10 -; SSE4-NEXT: pxor %xmm8, %xmm0 -; SSE4-NEXT: pcmpgtq %xmm10, %xmm0 -; SSE4-NEXT: blendvpd %xmm0, %xmm9, %xmm4 -; SSE4-NEXT: movdqa %xmm5, %xmm9 -; SSE4-NEXT: pxor %xmm8, %xmm9 +; SSE4-NEXT: movdqa %xmm7, %xmm8 +; SSE4-NEXT: movdqa %xmm6, %xmm9 +; SSE4-NEXT: movdqa %xmm5, %xmm10 +; SSE4-NEXT: movdqa %xmm4, %xmm5 +; SSE4-NEXT: movdqa %xmm0, %xmm6 +; SSE4-NEXT: movdqa {{.*#+}} xmm7 = [9223372036854775808,9223372036854775808] +; SSE4-NEXT: pxor %xmm7, %xmm4 +; SSE4-NEXT: pxor %xmm7, %xmm0 +; SSE4-NEXT: pcmpgtq %xmm4, %xmm0 +; SSE4-NEXT: blendvpd %xmm0, %xmm6, %xmm5 +; SSE4-NEXT: movdqa %xmm10, %xmm4 +; SSE4-NEXT: pxor %xmm7, %xmm4 ; SSE4-NEXT: movdqa %xmm1, %xmm0 -; SSE4-NEXT: pxor %xmm8, %xmm0 -; SSE4-NEXT: pcmpgtq %xmm9, %xmm0 -; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm5 -; SSE4-NEXT: movdqa %xmm6, %xmm1 -; SSE4-NEXT: pxor %xmm8, %xmm1 +; SSE4-NEXT: pxor %xmm7, %xmm0 +; SSE4-NEXT: pcmpgtq %xmm4, %xmm0 +; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm10 +; SSE4-NEXT: movdqa %xmm9, %xmm1 +; SSE4-NEXT: pxor %xmm7, %xmm1 ; SSE4-NEXT: movdqa %xmm2, %xmm0 -; SSE4-NEXT: pxor %xmm8, %xmm0 +; SSE4-NEXT: pxor %xmm7, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm1, %xmm0 -; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm6 -; SSE4-NEXT: movdqa %xmm7, %xmm0 -; SSE4-NEXT: pxor %xmm8, %xmm0 -; SSE4-NEXT: pxor %xmm3, %xmm8 -; SSE4-NEXT: pcmpgtq %xmm0, %xmm8 +; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm9 ; SSE4-NEXT: movdqa %xmm8, %xmm0 -; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm7 -; SSE4-NEXT: movapd %xmm4, %xmm0 -; SSE4-NEXT: movapd %xmm5, %xmm1 -; SSE4-NEXT: movapd %xmm6, %xmm2 -; SSE4-NEXT: movapd %xmm7, %xmm3 +; SSE4-NEXT: pxor %xmm7, %xmm0 +; SSE4-NEXT: pxor %xmm3, %xmm7 +; SSE4-NEXT: pcmpgtq %xmm0, %xmm7 +; SSE4-NEXT: movdqa %xmm7, %xmm0 +; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm8 +; SSE4-NEXT: movapd %xmm5, %xmm0 +; SSE4-NEXT: movapd %xmm10, %xmm1 +; SSE4-NEXT: movapd %xmm9, %xmm2 +; SSE4-NEXT: movapd %xmm8, %xmm3 ; SSE4-NEXT: retq ; ; AVX1-LABEL: test128: @@ -6977,9 +6993,10 @@ define <8 x i64> @test153(<8 x i64> %a, <8 x i64> %b) { ; ; SSE4-LABEL: test153: ; SSE4: # %bb.0: # %entry -; SSE4-NEXT: movdqa %xmm0, %xmm8 +; SSE4-NEXT: movdqa %xmm7, %xmm8 +; SSE4-NEXT: movdqa %xmm0, %xmm7 ; SSE4-NEXT: pcmpgtq %xmm4, %xmm0 -; SSE4-NEXT: blendvpd %xmm0, %xmm8, %xmm4 +; SSE4-NEXT: blendvpd %xmm0, %xmm7, %xmm4 ; SSE4-NEXT: movdqa %xmm1, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm5, %xmm0 ; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm5 @@ -6987,12 +7004,12 @@ define <8 x i64> @test153(<8 x i64> %a, <8 x i64> %b) { ; SSE4-NEXT: pcmpgtq %xmm6, %xmm0 ; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm6 ; SSE4-NEXT: movdqa %xmm3, %xmm0 -; SSE4-NEXT: pcmpgtq %xmm7, %xmm0 -; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm7 +; SSE4-NEXT: pcmpgtq %xmm8, %xmm0 +; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm8 ; SSE4-NEXT: movapd %xmm4, %xmm0 ; SSE4-NEXT: movapd %xmm5, %xmm1 ; SSE4-NEXT: movapd %xmm6, %xmm2 -; SSE4-NEXT: movapd %xmm7, %xmm3 +; SSE4-NEXT: movapd %xmm8, %xmm3 ; SSE4-NEXT: retq ; ; AVX1-LABEL: test153: @@ -7096,9 +7113,10 @@ define <8 x i64> @test154(<8 x i64> %a, <8 x i64> %b) { ; ; SSE4-LABEL: test154: ; SSE4: # %bb.0: # %entry -; SSE4-NEXT: movdqa %xmm0, %xmm8 +; SSE4-NEXT: movdqa %xmm7, %xmm8 +; SSE4-NEXT: movdqa %xmm0, %xmm7 ; SSE4-NEXT: pcmpgtq %xmm4, %xmm0 -; SSE4-NEXT: blendvpd %xmm0, %xmm8, %xmm4 +; SSE4-NEXT: blendvpd %xmm0, %xmm7, %xmm4 ; SSE4-NEXT: movdqa %xmm1, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm5, %xmm0 ; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm5 @@ -7106,12 +7124,12 @@ define <8 x i64> @test154(<8 x i64> %a, <8 x i64> %b) { ; SSE4-NEXT: pcmpgtq %xmm6, %xmm0 ; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm6 ; SSE4-NEXT: movdqa %xmm3, %xmm0 -; SSE4-NEXT: pcmpgtq %xmm7, %xmm0 -; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm7 +; SSE4-NEXT: pcmpgtq %xmm8, %xmm0 +; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm8 ; SSE4-NEXT: movapd %xmm4, %xmm0 ; SSE4-NEXT: movapd %xmm5, %xmm1 ; SSE4-NEXT: movapd %xmm6, %xmm2 -; SSE4-NEXT: movapd %xmm7, %xmm3 +; SSE4-NEXT: movapd %xmm8, %xmm3 ; SSE4-NEXT: retq ; ; AVX1-LABEL: test154: @@ -7215,23 +7233,24 @@ define <8 x i64> @test155(<8 x i64> %a, <8 x i64> %b) { ; ; SSE4-LABEL: test155: ; SSE4: # %bb.0: # %entry -; SSE4-NEXT: movdqa %xmm0, %xmm8 +; SSE4-NEXT: movdqa %xmm7, %xmm8 +; SSE4-NEXT: movdqa %xmm0, %xmm7 ; SSE4-NEXT: movdqa %xmm4, %xmm0 -; SSE4-NEXT: pcmpgtq %xmm8, %xmm0 -; SSE4-NEXT: blendvpd %xmm0, %xmm8, %xmm4 +; SSE4-NEXT: pcmpgtq %xmm7, %xmm0 +; SSE4-NEXT: blendvpd %xmm0, %xmm7, %xmm4 ; SSE4-NEXT: movdqa %xmm5, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm1, %xmm0 ; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm5 ; SSE4-NEXT: movdqa %xmm6, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm2, %xmm0 ; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm6 -; SSE4-NEXT: movdqa %xmm7, %xmm0 +; SSE4-NEXT: movdqa %xmm8, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm3, %xmm0 -; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm7 +; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm8 ; SSE4-NEXT: movapd %xmm4, %xmm0 ; SSE4-NEXT: movapd %xmm5, %xmm1 ; SSE4-NEXT: movapd %xmm6, %xmm2 -; SSE4-NEXT: movapd %xmm7, %xmm3 +; SSE4-NEXT: movapd %xmm8, %xmm3 ; SSE4-NEXT: retq ; ; AVX1-LABEL: test155: @@ -7335,35 +7354,38 @@ define <8 x i64> @test156(<8 x i64> %a, <8 x i64> %b) { ; ; SSE4-LABEL: test156: ; SSE4: # %bb.0: # %entry -; SSE4-NEXT: movdqa %xmm0, %xmm9 -; SSE4-NEXT: movdqa {{.*#+}} xmm8 = [9223372036854775808,9223372036854775808] -; SSE4-NEXT: movdqa %xmm4, %xmm10 -; SSE4-NEXT: pxor %xmm8, %xmm10 -; SSE4-NEXT: pxor %xmm8, %xmm0 -; SSE4-NEXT: pcmpgtq %xmm10, %xmm0 -; SSE4-NEXT: blendvpd %xmm0, %xmm9, %xmm4 -; SSE4-NEXT: movdqa %xmm5, %xmm9 -; SSE4-NEXT: pxor %xmm8, %xmm9 +; SSE4-NEXT: movdqa %xmm7, %xmm8 +; SSE4-NEXT: movdqa %xmm6, %xmm9 +; SSE4-NEXT: movdqa %xmm5, %xmm10 +; SSE4-NEXT: movdqa %xmm4, %xmm5 +; SSE4-NEXT: movdqa %xmm0, %xmm6 +; SSE4-NEXT: movdqa {{.*#+}} xmm7 = [9223372036854775808,9223372036854775808] +; SSE4-NEXT: pxor %xmm7, %xmm4 +; SSE4-NEXT: pxor %xmm7, %xmm0 +; SSE4-NEXT: pcmpgtq %xmm4, %xmm0 +; SSE4-NEXT: blendvpd %xmm0, %xmm6, %xmm5 +; SSE4-NEXT: movdqa %xmm10, %xmm4 +; SSE4-NEXT: pxor %xmm7, %xmm4 ; SSE4-NEXT: movdqa %xmm1, %xmm0 -; SSE4-NEXT: pxor %xmm8, %xmm0 -; SSE4-NEXT: pcmpgtq %xmm9, %xmm0 -; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm5 -; SSE4-NEXT: movdqa %xmm6, %xmm1 -; SSE4-NEXT: pxor %xmm8, %xmm1 +; SSE4-NEXT: pxor %xmm7, %xmm0 +; SSE4-NEXT: pcmpgtq %xmm4, %xmm0 +; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm10 +; SSE4-NEXT: movdqa %xmm9, %xmm1 +; SSE4-NEXT: pxor %xmm7, %xmm1 ; SSE4-NEXT: movdqa %xmm2, %xmm0 -; SSE4-NEXT: pxor %xmm8, %xmm0 +; SSE4-NEXT: pxor %xmm7, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm1, %xmm0 -; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm6 -; SSE4-NEXT: movdqa %xmm7, %xmm0 -; SSE4-NEXT: pxor %xmm8, %xmm0 -; SSE4-NEXT: pxor %xmm3, %xmm8 -; SSE4-NEXT: pcmpgtq %xmm0, %xmm8 +; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm9 ; SSE4-NEXT: movdqa %xmm8, %xmm0 -; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm7 -; SSE4-NEXT: movapd %xmm4, %xmm0 -; SSE4-NEXT: movapd %xmm5, %xmm1 -; SSE4-NEXT: movapd %xmm6, %xmm2 -; SSE4-NEXT: movapd %xmm7, %xmm3 +; SSE4-NEXT: pxor %xmm7, %xmm0 +; SSE4-NEXT: pxor %xmm3, %xmm7 +; SSE4-NEXT: pcmpgtq %xmm0, %xmm7 +; SSE4-NEXT: movdqa %xmm7, %xmm0 +; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm8 +; SSE4-NEXT: movapd %xmm5, %xmm0 +; SSE4-NEXT: movapd %xmm10, %xmm1 +; SSE4-NEXT: movapd %xmm9, %xmm2 +; SSE4-NEXT: movapd %xmm8, %xmm3 ; SSE4-NEXT: retq ; ; AVX1-LABEL: test156: @@ -7481,36 +7503,39 @@ define <8 x i64> @test159(<8 x i64> %a, <8 x i64> %b) { ; ; SSE4-LABEL: test159: ; SSE4: # %bb.0: # %entry -; SSE4-NEXT: movdqa %xmm0, %xmm9 -; SSE4-NEXT: movdqa {{.*#+}} xmm8 = [9223372036854775808,9223372036854775808] -; SSE4-NEXT: movdqa %xmm0, %xmm10 -; SSE4-NEXT: pxor %xmm8, %xmm10 +; SSE4-NEXT: movdqa %xmm7, %xmm8 +; SSE4-NEXT: movdqa %xmm6, %xmm9 +; SSE4-NEXT: movdqa %xmm5, %xmm10 +; SSE4-NEXT: movdqa %xmm0, %xmm5 +; SSE4-NEXT: movdqa {{.*#+}} xmm7 = [9223372036854775808,9223372036854775808] +; SSE4-NEXT: movdqa %xmm0, %xmm6 +; SSE4-NEXT: pxor %xmm7, %xmm6 ; SSE4-NEXT: movdqa %xmm4, %xmm0 -; SSE4-NEXT: pxor %xmm8, %xmm0 -; SSE4-NEXT: pcmpgtq %xmm10, %xmm0 -; SSE4-NEXT: blendvpd %xmm0, %xmm9, %xmm4 -; SSE4-NEXT: movdqa %xmm1, %xmm9 -; SSE4-NEXT: pxor %xmm8, %xmm9 -; SSE4-NEXT: movdqa %xmm5, %xmm0 -; SSE4-NEXT: pxor %xmm8, %xmm0 -; SSE4-NEXT: pcmpgtq %xmm9, %xmm0 -; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm5 +; SSE4-NEXT: pxor %xmm7, %xmm0 +; SSE4-NEXT: pcmpgtq %xmm6, %xmm0 +; SSE4-NEXT: blendvpd %xmm0, %xmm5, %xmm4 +; SSE4-NEXT: movdqa %xmm1, %xmm5 +; SSE4-NEXT: pxor %xmm7, %xmm5 +; SSE4-NEXT: movdqa %xmm10, %xmm0 +; SSE4-NEXT: pxor %xmm7, %xmm0 +; SSE4-NEXT: pcmpgtq %xmm5, %xmm0 +; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm10 ; SSE4-NEXT: movdqa %xmm2, %xmm1 -; SSE4-NEXT: pxor %xmm8, %xmm1 -; SSE4-NEXT: movdqa %xmm6, %xmm0 -; SSE4-NEXT: pxor %xmm8, %xmm0 +; SSE4-NEXT: pxor %xmm7, %xmm1 +; SSE4-NEXT: movdqa %xmm9, %xmm0 +; SSE4-NEXT: pxor %xmm7, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm1, %xmm0 -; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm6 +; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm9 ; SSE4-NEXT: movdqa %xmm3, %xmm0 -; SSE4-NEXT: pxor %xmm8, %xmm0 -; SSE4-NEXT: pxor %xmm7, %xmm8 -; SSE4-NEXT: pcmpgtq %xmm0, %xmm8 -; SSE4-NEXT: movdqa %xmm8, %xmm0 -; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm7 +; SSE4-NEXT: pxor %xmm7, %xmm0 +; SSE4-NEXT: pxor %xmm8, %xmm7 +; SSE4-NEXT: pcmpgtq %xmm0, %xmm7 +; SSE4-NEXT: movdqa %xmm7, %xmm0 +; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm8 ; SSE4-NEXT: movapd %xmm4, %xmm0 -; SSE4-NEXT: movapd %xmm5, %xmm1 -; SSE4-NEXT: movapd %xmm6, %xmm2 -; SSE4-NEXT: movapd %xmm7, %xmm3 +; SSE4-NEXT: movapd %xmm10, %xmm1 +; SSE4-NEXT: movapd %xmm9, %xmm2 +; SSE4-NEXT: movapd %xmm8, %xmm3 ; SSE4-NEXT: retq ; ; AVX1-LABEL: test159: @@ -7628,36 +7653,39 @@ define <8 x i64> @test160(<8 x i64> %a, <8 x i64> %b) { ; ; SSE4-LABEL: test160: ; SSE4: # %bb.0: # %entry -; SSE4-NEXT: movdqa %xmm0, %xmm9 -; SSE4-NEXT: movdqa {{.*#+}} xmm8 = [9223372036854775808,9223372036854775808] -; SSE4-NEXT: movdqa %xmm0, %xmm10 -; SSE4-NEXT: pxor %xmm8, %xmm10 +; SSE4-NEXT: movdqa %xmm7, %xmm8 +; SSE4-NEXT: movdqa %xmm6, %xmm9 +; SSE4-NEXT: movdqa %xmm5, %xmm10 +; SSE4-NEXT: movdqa %xmm0, %xmm5 +; SSE4-NEXT: movdqa {{.*#+}} xmm7 = [9223372036854775808,9223372036854775808] +; SSE4-NEXT: movdqa %xmm0, %xmm6 +; SSE4-NEXT: pxor %xmm7, %xmm6 ; SSE4-NEXT: movdqa %xmm4, %xmm0 -; SSE4-NEXT: pxor %xmm8, %xmm0 -; SSE4-NEXT: pcmpgtq %xmm10, %xmm0 -; SSE4-NEXT: blendvpd %xmm0, %xmm9, %xmm4 -; SSE4-NEXT: movdqa %xmm1, %xmm9 -; SSE4-NEXT: pxor %xmm8, %xmm9 -; SSE4-NEXT: movdqa %xmm5, %xmm0 -; SSE4-NEXT: pxor %xmm8, %xmm0 -; SSE4-NEXT: pcmpgtq %xmm9, %xmm0 -; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm5 +; SSE4-NEXT: pxor %xmm7, %xmm0 +; SSE4-NEXT: pcmpgtq %xmm6, %xmm0 +; SSE4-NEXT: blendvpd %xmm0, %xmm5, %xmm4 +; SSE4-NEXT: movdqa %xmm1, %xmm5 +; SSE4-NEXT: pxor %xmm7, %xmm5 +; SSE4-NEXT: movdqa %xmm10, %xmm0 +; SSE4-NEXT: pxor %xmm7, %xmm0 +; SSE4-NEXT: pcmpgtq %xmm5, %xmm0 +; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm10 ; SSE4-NEXT: movdqa %xmm2, %xmm1 -; SSE4-NEXT: pxor %xmm8, %xmm1 -; SSE4-NEXT: movdqa %xmm6, %xmm0 -; SSE4-NEXT: pxor %xmm8, %xmm0 +; SSE4-NEXT: pxor %xmm7, %xmm1 +; SSE4-NEXT: movdqa %xmm9, %xmm0 +; SSE4-NEXT: pxor %xmm7, %xmm0 ; SSE4-NEXT: pcmpgtq %xmm1, %xmm0 -; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm6 +; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm9 ; SSE4-NEXT: movdqa %xmm3, %xmm0 -; SSE4-NEXT: pxor %xmm8, %xmm0 -; SSE4-NEXT: pxor %xmm7, %xmm8 -; SSE4-NEXT: pcmpgtq %xmm0, %xmm8 -; SSE4-NEXT: movdqa %xmm8, %xmm0 -; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm7 +; SSE4-NEXT: pxor %xmm7, %xmm0 +; SSE4-NEXT: pxor %xmm8, %xmm7 +; SSE4-NEXT: pcmpgtq %xmm0, %xmm7 +; SSE4-NEXT: movdqa %xmm7, %xmm0 +; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm8 ; SSE4-NEXT: movapd %xmm4, %xmm0 -; SSE4-NEXT: movapd %xmm5, %xmm1 -; SSE4-NEXT: movapd %xmm6, %xmm2 -; SSE4-NEXT: movapd %xmm7, %xmm3 +; SSE4-NEXT: movapd %xmm10, %xmm1 +; SSE4-NEXT: movapd %xmm9, %xmm2 +; SSE4-NEXT: movapd %xmm8, %xmm3 ; SSE4-NEXT: retq ; ; AVX1-LABEL: test160: |