@@ -654,26 +654,25 @@ define <4 x i32> @vec_add_of_not_with_undef(<4 x i32> %x, <4 x i32> %y) {
654
654
define <4 x i32 > @vec_add_of_not_with_undef_decrement (<4 x i32 > %x , <4 x i32 > %y ) {
655
655
; X86-LABEL: vec_add_of_not_with_undef_decrement:
656
656
; X86: # %bb.0:
657
- ; X86-NEXT: psubd %xmm1 , %xmm0
658
- ; X86-NEXT: pcmpeqd %xmm1, %xmm1
659
- ; X86-NEXT: psubd %xmm1 , %xmm0
657
+ ; X86-NEXT: pcmpeqd %xmm2 , %xmm2
658
+ ; X86-NEXT: pxor %xmm1, %xmm2
659
+ ; X86-NEXT: paddd %xmm2 , %xmm0
660
660
; X86-NEXT: retl
661
661
;
662
662
; X64-LIN-LABEL: vec_add_of_not_with_undef_decrement:
663
663
; X64-LIN: # %bb.0:
664
- ; X64-LIN-NEXT: psubd %xmm1 , %xmm0
665
- ; X64-LIN-NEXT: pcmpeqd %xmm1, %xmm1
666
- ; X64-LIN-NEXT: psubd %xmm1 , %xmm0
664
+ ; X64-LIN-NEXT: pcmpeqd %xmm2 , %xmm2
665
+ ; X64-LIN-NEXT: pxor %xmm1, %xmm2
666
+ ; X64-LIN-NEXT: paddd %xmm2 , %xmm0
667
667
; X64-LIN-NEXT: retq
668
668
;
669
669
; X64-WIN-LABEL: vec_add_of_not_with_undef_decrement:
670
670
; X64-WIN: # %bb.0:
671
- ; X64-WIN-NEXT: movdqa (%rcx), %xmm0
672
- ; X64-WIN-NEXT: psubd (%rdx), %xmm0
673
- ; X64-WIN-NEXT: pcmpeqd %xmm1, %xmm1
674
- ; X64-WIN-NEXT: psubd %xmm1, %xmm0
671
+ ; X64-WIN-NEXT: pcmpeqd %xmm0, %xmm0
672
+ ; X64-WIN-NEXT: pxor (%rdx), %xmm0
673
+ ; X64-WIN-NEXT: paddd (%rcx), %xmm0
675
674
; X64-WIN-NEXT: retq
676
675
%t0 = sub <4 x i32 > %x , %y
677
- %r = add <4 x i32 > %t0 , <i32 1 , i32 undef , i32 1 , i32 1 >
676
+ %r = sub <4 x i32 > %t0 , <i32 1 , i32 undef , i32 1 , i32 1 >
678
677
ret <4 x i32 > %r
679
678
}
0 commit comments