; SSE: # %bb.0:
; SSE-NEXT: pcmpeqd %xmm3, %xmm3
; SSE-NEXT: pxor %xmm3, %xmm0
-; SSE-NEXT: movdqa {{.*#+}} xmm2 = [1,1,1,4294967295]
-; SSE-NEXT: paddd %xmm0, %xmm2
+; SSE-NEXT: movdqa %xmm0, %xmm2
+; SSE-NEXT: psubd %xmm3, %xmm2
; SSE-NEXT: pmaxud %xmm2, %xmm0
; SSE-NEXT: pcmpeqd %xmm2, %xmm0
; SSE-NEXT: pxor %xmm3, %xmm0
; AVX: # %bb.0:
; AVX-NEXT: vpcmpeqd %xmm2, %xmm2, %xmm2
; AVX-NEXT: vpxor %xmm2, %xmm0, %xmm0
-; AVX-NEXT: vpaddd {{.*}}(%rip), %xmm0, %xmm3
+; AVX-NEXT: vpsubd %xmm2, %xmm0, %xmm3
; AVX-NEXT: vpmaxud %xmm0, %xmm3, %xmm0
; AVX-NEXT: vpcmpeqd %xmm0, %xmm3, %xmm0
; AVX-NEXT: vpxor %xmm2, %xmm0, %xmm0
; AVX-NEXT: vblendvps %xmm0, %xmm1, %xmm3, %xmm0
; AVX-NEXT: retq
%1 = xor <4 x i32> %a0, <i32 -1, i32 -1, i32 -1, i32 -1>
- %2 = call {<4 x i32>, <4 x i1>} @llvm.uadd.with.overflow.v4i32(<4 x i32> %1, <4 x i32> <i32 1, i32 1, i32 1, i32 -1>)
+ %2 = call {<4 x i32>, <4 x i1>} @llvm.uadd.with.overflow.v4i32(<4 x i32> %1, <4 x i32> <i32 1, i32 1, i32 1, i32 1>)
%3 = extractvalue {<4 x i32>, <4 x i1>} %2, 0
%4 = extractvalue {<4 x i32>, <4 x i1>} %2, 1
%5 = select <4 x i1> %4, <4 x i32> %a1, <4 x i32> %3