Skip to content

Commit ffc0f37

Browse files
committed
Swap to fix regressions
1 parent 9220ec1 commit ffc0f37

File tree

3 files changed

+15
-14
lines changed

3 files changed

+15
-14
lines changed

llvm/lib/CodeGen/CodeGenPrepare.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2265,10 +2265,10 @@ bool CodeGenPrepare::optimizeCmp(CmpInst *Cmp, ModifyDT &ModifiedDT) {
22652265
if (sinkCmpExpression(Cmp, *TLI))
22662266
return true;
22672267

2268-
if (combineToUAddWithOverflow(Cmp, ModifiedDT))
2268+
if (combineToUSubWithOverflow(Cmp, ModifiedDT))
22692269
return true;
22702270

2271-
if (combineToUSubWithOverflow(Cmp, ModifiedDT))
2271+
if (combineToUAddWithOverflow(Cmp, ModifiedDT))
22722272
return true;
22732273

22742274
if (unfoldPowerOf2Test(Cmp))

llvm/test/CodeGen/X86/lack-of-signed-truncation-check.ll

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -506,17 +506,15 @@ define i1 @add_ugecmp_bad_i16_i8_cmp(i16 %x, i16 %y) nounwind {
506506
define i1 @add_ugecmp_bad_i8_i16(i16 %x) nounwind {
507507
; X86-LABEL: add_ugecmp_bad_i8_i16:
508508
; X86: # %bb.0:
509-
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
510-
; X86-NEXT: subl $-128, %eax
511-
; X86-NEXT: cmpw $127, %ax
512-
; X86-NEXT: seta %al
509+
; X86-NEXT: movw $128, %ax
510+
; X86-NEXT: addw {{[0-9]+}}(%esp), %ax
511+
; X86-NEXT: setae %al
513512
; X86-NEXT: retl
514513
;
515514
; X64-LABEL: add_ugecmp_bad_i8_i16:
516515
; X64: # %bb.0:
517-
; X64-NEXT: subl $-128, %edi
518-
; X64-NEXT: cmpw $127, %di
519-
; X64-NEXT: seta %al
516+
; X64-NEXT: addw $128, %di
517+
; X64-NEXT: setae %al
520518
; X64-NEXT: retq
521519
%tmp0 = add i16 %x, 128 ; 1U << (8-1)
522520
%tmp1 = icmp uge i16 %tmp0, 128 ; 1U << (8-1)

llvm/test/CodeGen/X86/setcc-combine.ll

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -664,8 +664,9 @@ define <4 x i32> @cmp_sge_not_with_vec(<4 x i32> %a, <4 x i32> %b) {
664664
define i64 @cmp_uge_not(i64 %a, i64 %b) {
665665
; CHECK-LABEL: cmp_uge_not:
666666
; CHECK: # %bb.0:
667+
; CHECK-NEXT: notq %rsi
667668
; CHECK-NEXT: xorl %eax, %eax
668-
; CHECK-NEXT: cmpq %rdi, %rsi
669+
; CHECK-NEXT: addq %rdi, %rsi
669670
; CHECK-NEXT: adcq $-1, %rax
670671
; CHECK-NEXT: retq
671672
%na = xor i64 %a, -1
@@ -679,8 +680,8 @@ define i64 @cmp_uge_not_with_constant(i64 %a) {
679680
; CHECK-LABEL: cmp_uge_not_with_constant:
680681
; CHECK: # %bb.0:
681682
; CHECK-NEXT: xorl %eax, %eax
682-
; CHECK-NEXT: cmpq $-42, %rdi
683-
; CHECK-NEXT: sbbq %rax, %rax
683+
; CHECK-NEXT: addq $42, %rdi
684+
; CHECK-NEXT: adcq $-1, %rax
684685
; CHECK-NEXT: retq
685686
%na = xor i64 %a, -1
686687
%c = icmp uge i64 %na, 42
@@ -850,8 +851,9 @@ define <4 x i32> @cmp_ult_not_with_vec(<4 x i32> %a, <4 x i32> %b) {
850851
define i64 @cmp_ule_not(i64 %a, i64 %b) {
851852
; CHECK-LABEL: cmp_ule_not:
852853
; CHECK: # %bb.0:
854+
; CHECK-NEXT: notq %rdi
853855
; CHECK-NEXT: xorl %eax, %eax
854-
; CHECK-NEXT: cmpq %rsi, %rdi
856+
; CHECK-NEXT: addq %rsi, %rdi
855857
; CHECK-NEXT: adcq $-1, %rax
856858
; CHECK-NEXT: retq
857859
%na = xor i64 %a, -1
@@ -983,8 +985,9 @@ define <4 x i32> @cmp_ne_not_with_vec(<4 x i32> %a, <4 x i32> %b) {
983985
define i64 @cmp_uge_not_commute(i64 %b, i64 %a) {
984986
; CHECK-LABEL: cmp_uge_not_commute:
985987
; CHECK: # %bb.0:
988+
; CHECK-NEXT: notq %rdi
986989
; CHECK-NEXT: xorl %eax, %eax
987-
; CHECK-NEXT: cmpq %rsi, %rdi
990+
; CHECK-NEXT: addq %rsi, %rdi
988991
; CHECK-NEXT: adcq $-1, %rax
989992
; CHECK-NEXT: retq
990993
%na = xor i64 %a, -1

0 commit comments

Comments
 (0)