+; SSE2-LABEL: test128:
+; SSE2: # BB#0: # %entry
+; SSE2-NEXT: movdqa %xmm7, %xmm11
+; SSE2-NEXT: movdqa %xmm11, -{{[0-9]+}}(%rsp) # 16-byte Spill
+; SSE2-NEXT: movdqa %xmm3, %xmm7
+; SSE2-NEXT: movdqa %xmm2, %xmm3
+; SSE2-NEXT: movdqa %xmm1, %xmm2
+; SSE2-NEXT: movdqa %xmm0, %xmm9
+; SSE2-NEXT: movdqa {{.*#+}} xmm10 = [2147483648,2147483648,2147483648,2147483648]
+; SSE2-NEXT: movdqa %xmm7, %xmm8
+; SSE2-NEXT: pxor %xmm10, %xmm8
+; SSE2-NEXT: movdqa %xmm11, %xmm0
+; SSE2-NEXT: pxor %xmm10, %xmm0
+; SSE2-NEXT: movdqa %xmm0, %xmm11
+; SSE2-NEXT: pcmpgtd %xmm8, %xmm11
+; SSE2-NEXT: pshufd {{.*#+}} xmm12 = xmm11[0,0,2,2]
+; SSE2-NEXT: pcmpeqd %xmm8, %xmm0
+; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
+; SSE2-NEXT: pand %xmm12, %xmm0
+; SSE2-NEXT: pshufd {{.*#+}} xmm12 = xmm11[1,1,3,3]
+; SSE2-NEXT: por %xmm0, %xmm12
+; SSE2-NEXT: pcmpeqd %xmm1, %xmm1
+; SSE2-NEXT: movdqa %xmm12, %xmm8
+; SSE2-NEXT: pxor %xmm1, %xmm8
+; SSE2-NEXT: movdqa %xmm3, %xmm11
+; SSE2-NEXT: pxor %xmm10, %xmm11
+; SSE2-NEXT: movdqa %xmm6, %xmm13
+; SSE2-NEXT: pxor %xmm10, %xmm13
+; SSE2-NEXT: movdqa %xmm13, %xmm14
+; SSE2-NEXT: pcmpgtd %xmm11, %xmm14
+; SSE2-NEXT: pshufd {{.*#+}} xmm15 = xmm14[0,0,2,2]
+; SSE2-NEXT: pcmpeqd %xmm11, %xmm13
+; SSE2-NEXT: pshufd {{.*#+}} xmm11 = xmm13[1,1,3,3]
+; SSE2-NEXT: pand %xmm15, %xmm11
+; SSE2-NEXT: pshufd {{.*#+}} xmm13 = xmm14[1,1,3,3]
+; SSE2-NEXT: por %xmm11, %xmm13
+; SSE2-NEXT: movdqa %xmm2, %xmm11
+; SSE2-NEXT: pxor %xmm10, %xmm11
+; SSE2-NEXT: movdqa %xmm5, %xmm14
+; SSE2-NEXT: pxor %xmm10, %xmm14
+; SSE2-NEXT: movdqa %xmm14, %xmm15
+; SSE2-NEXT: pcmpgtd %xmm11, %xmm15
+; SSE2-NEXT: pcmpeqd %xmm11, %xmm14
+; SSE2-NEXT: pshufd {{.*#+}} xmm11 = xmm15[0,0,2,2]
+; SSE2-NEXT: pshufd {{.*#+}} xmm14 = xmm14[1,1,3,3]
+; SSE2-NEXT: pand %xmm11, %xmm14
+; SSE2-NEXT: pshufd {{.*#+}} xmm15 = xmm15[1,1,3,3]
+; SSE2-NEXT: por %xmm14, %xmm15
+; SSE2-NEXT: movdqa %xmm9, %xmm11
+; SSE2-NEXT: pxor %xmm10, %xmm11
+; SSE2-NEXT: pxor %xmm4, %xmm10
+; SSE2-NEXT: movdqa %xmm10, %xmm14
+; SSE2-NEXT: pcmpgtd %xmm11, %xmm14
+; SSE2-NEXT: pcmpeqd %xmm11, %xmm10
+; SSE2-NEXT: pshufd {{.*#+}} xmm11 = xmm14[0,0,2,2]
+; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm10[1,1,3,3]
+; SSE2-NEXT: pand %xmm11, %xmm0
+; SSE2-NEXT: movdqa %xmm13, %xmm10
+; SSE2-NEXT: pxor %xmm1, %xmm10
+; SSE2-NEXT: pshufd {{.*#+}} xmm14 = xmm14[1,1,3,3]
+; SSE2-NEXT: por %xmm0, %xmm14
+; SSE2-NEXT: movdqa %xmm15, %xmm11
+; SSE2-NEXT: pxor %xmm1, %xmm11
+; SSE2-NEXT: pxor %xmm14, %xmm1
+; SSE2-NEXT: pandn %xmm9, %xmm14
+; SSE2-NEXT: pandn %xmm4, %xmm1
+; SSE2-NEXT: por %xmm14, %xmm1
+; SSE2-NEXT: pandn %xmm2, %xmm15
+; SSE2-NEXT: pandn %xmm5, %xmm11
+; SSE2-NEXT: por %xmm15, %xmm11
+; SSE2-NEXT: pandn %xmm3, %xmm13
+; SSE2-NEXT: pandn %xmm6, %xmm10
+; SSE2-NEXT: por %xmm13, %xmm10
+; SSE2-NEXT: pandn %xmm7, %xmm12
+; SSE2-NEXT: pandn -{{[0-9]+}}(%rsp), %xmm8 # 16-byte Folded Reload
+; SSE2-NEXT: por %xmm12, %xmm8
+; SSE2-NEXT: movdqa %xmm1, %xmm0
+; SSE2-NEXT: movdqa %xmm11, %xmm1
+; SSE2-NEXT: movdqa %xmm10, %xmm2
+; SSE2-NEXT: movdqa %xmm8, %xmm3
+; SSE2-NEXT: retq
+;
+; SSE4-LABEL: test128:
+; SSE4: # BB#0: # %entry
+; SSE4-NEXT: movdqa %xmm0, %xmm9
+; SSE4-NEXT: movdqa {{.*#+}} xmm0 = [9223372036854775808,9223372036854775808]
+; SSE4-NEXT: movdqa %xmm3, %xmm10
+; SSE4-NEXT: pxor %xmm0, %xmm10
+; SSE4-NEXT: movdqa %xmm7, %xmm8
+; SSE4-NEXT: pxor %xmm0, %xmm8
+; SSE4-NEXT: pcmpgtq %xmm10, %xmm8
+; SSE4-NEXT: pcmpeqd %xmm12, %xmm12
+; SSE4-NEXT: pxor %xmm12, %xmm8
+; SSE4-NEXT: movdqa %xmm2, %xmm11
+; SSE4-NEXT: pxor %xmm0, %xmm11
+; SSE4-NEXT: movdqa %xmm6, %xmm10
+; SSE4-NEXT: pxor %xmm0, %xmm10
+; SSE4-NEXT: pcmpgtq %xmm11, %xmm10
+; SSE4-NEXT: pxor %xmm12, %xmm10
+; SSE4-NEXT: movdqa %xmm1, %xmm13
+; SSE4-NEXT: pxor %xmm0, %xmm13
+; SSE4-NEXT: movdqa %xmm5, %xmm11
+; SSE4-NEXT: pxor %xmm0, %xmm11
+; SSE4-NEXT: pcmpgtq %xmm13, %xmm11
+; SSE4-NEXT: pxor %xmm12, %xmm11
+; SSE4-NEXT: movdqa %xmm9, %xmm13
+; SSE4-NEXT: pxor %xmm0, %xmm13
+; SSE4-NEXT: pxor %xmm4, %xmm0
+; SSE4-NEXT: pcmpgtq %xmm13, %xmm0
+; SSE4-NEXT: pxor %xmm12, %xmm0
+; SSE4-NEXT: blendvpd %xmm9, %xmm4
+; SSE4-NEXT: movdqa %xmm11, %xmm0
+; SSE4-NEXT: blendvpd %xmm1, %xmm5
+; SSE4-NEXT: movdqa %xmm10, %xmm0
+; SSE4-NEXT: blendvpd %xmm2, %xmm6
+; SSE4-NEXT: movdqa %xmm8, %xmm0
+; SSE4-NEXT: blendvpd %xmm3, %xmm7
+; SSE4-NEXT: movapd %xmm4, %xmm0
+; SSE4-NEXT: movapd %xmm5, %xmm1
+; SSE4-NEXT: movapd %xmm6, %xmm2
+; SSE4-NEXT: movapd %xmm7, %xmm3
+; SSE4-NEXT: retq
+;
+; AVX1-LABEL: test128:
+; AVX1: # BB#0: # %entry
+; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm4
+; AVX1-NEXT: vmovaps {{.*#+}} xmm5 = [9223372036854775808,9223372036854775808]
+; AVX1-NEXT: vxorps %xmm5, %xmm4, %xmm4
+; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm6
+; AVX1-NEXT: vxorps %xmm5, %xmm6, %xmm6
+; AVX1-NEXT: vpcmpgtq %xmm4, %xmm6, %xmm4
+; AVX1-NEXT: vpcmpeqd %xmm8, %xmm8, %xmm8
+; AVX1-NEXT: vpxor %xmm8, %xmm4, %xmm4
+; AVX1-NEXT: vxorps %xmm5, %xmm1, %xmm7
+; AVX1-NEXT: vxorps %xmm5, %xmm3, %xmm6
+; AVX1-NEXT: vpcmpgtq %xmm7, %xmm6, %xmm6
+; AVX1-NEXT: vpxor %xmm8, %xmm6, %xmm6
+; AVX1-NEXT: vinsertf128 $1, %xmm4, %ymm6, %ymm4
+; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm6
+; AVX1-NEXT: vxorps %xmm5, %xmm6, %xmm6
+; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm7
+; AVX1-NEXT: vxorps %xmm5, %xmm7, %xmm7
+; AVX1-NEXT: vpcmpgtq %xmm6, %xmm7, %xmm6
+; AVX1-NEXT: vpxor %xmm8, %xmm6, %xmm6
+; AVX1-NEXT: vxorps %xmm5, %xmm0, %xmm7
+; AVX1-NEXT: vxorps %xmm5, %xmm2, %xmm5
+; AVX1-NEXT: vpcmpgtq %xmm7, %xmm5, %xmm5
+; AVX1-NEXT: vpxor %xmm8, %xmm5, %xmm5
+; AVX1-NEXT: vinsertf128 $1, %xmm6, %ymm5, %ymm5
+; AVX1-NEXT: vblendvpd %ymm5, %ymm0, %ymm2, %ymm0
+; AVX1-NEXT: vblendvpd %ymm4, %ymm1, %ymm3, %ymm1
+; AVX1-NEXT: retq
+;
+; AVX2-LABEL: test128:
+; AVX2: # BB#0: # %entry
+; AVX2-NEXT: vpbroadcastq {{.*}}(%rip), %ymm4
+; AVX2-NEXT: vpxor %ymm4, %ymm1, %ymm5
+; AVX2-NEXT: vpxor %ymm4, %ymm3, %ymm6
+; AVX2-NEXT: vpcmpgtq %ymm5, %ymm6, %ymm5
+; AVX2-NEXT: vpcmpeqd %ymm6, %ymm6, %ymm6
+; AVX2-NEXT: vpxor %ymm6, %ymm5, %ymm5
+; AVX2-NEXT: vpxor %ymm4, %ymm0, %ymm7
+; AVX2-NEXT: vpxor %ymm4, %ymm2, %ymm4
+; AVX2-NEXT: vpcmpgtq %ymm7, %ymm4, %ymm4
+; AVX2-NEXT: vpxor %ymm6, %ymm4, %ymm4
+; AVX2-NEXT: vblendvpd %ymm4, %ymm0, %ymm2, %ymm0
+; AVX2-NEXT: vblendvpd %ymm5, %ymm1, %ymm3, %ymm1
+; AVX2-NEXT: retq
+;
+; AVX512F-LABEL: test128:
+; AVX512F: # BB#0: # %entry
+; AVX512F-NEXT: vpmaxuq %zmm1, %zmm0, %zmm0
+; AVX512F-NEXT: retq