@@ -53,9 +53,7 @@ define i1 @test-same-operands-sub-add-nsw-nuw-icmp-eq(i8 %a, i8 %b) {
53
53
define i1 @test-same-operands-sub-add-nsw-icmp-eq (i8 %a , i8 %b ) {
54
54
; CHECK-LABEL: define i1 @test-same-operands-sub-add-nsw-icmp-eq(
55
55
; CHECK-SAME: i8 [[A:%.*]], i8 [[B:%.*]]) {
56
- ; CHECK-NEXT: [[SUB:%.*]] = sub nsw i8 [[A]], [[B]]
57
- ; CHECK-NEXT: [[ADD:%.*]] = add nsw i8 [[A]], [[B]]
58
- ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i8 [[SUB]], [[ADD]]
56
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i8 [[B]], 0
59
57
; CHECK-NEXT: ret i1 [[CMP]]
60
58
;
61
59
%sub = sub nsw i8 %a , %b
@@ -64,10 +62,13 @@ define i1 @test-same-operands-sub-add-nsw-icmp-eq(i8 %a, i8 %b) {
64
62
ret i1 %cmp
65
63
}
66
64
65
+ ; Should floded by foldICmpCommutative in the future
67
66
define i1 @test-add-sub-nsw-icmp-sgt (i8 %a , i8 %b ) {
68
67
; CHECK-LABEL: define i1 @test-add-sub-nsw-icmp-sgt(
69
68
; CHECK-SAME: i8 [[A:%.*]], i8 [[B:%.*]]) {
70
- ; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i8 [[B]], 0
69
+ ; CHECK-NEXT: [[SUB:%.*]] = sub nsw i8 [[A]], [[B]]
70
+ ; CHECK-NEXT: [[ADD:%.*]] = add nsw i8 [[A]], [[B]]
71
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i8 [[ADD]], [[SUB]]
71
72
; CHECK-NEXT: ret i1 [[CMP]]
72
73
;
73
74
%sub = sub nsw i8 %a , %b
@@ -76,10 +77,14 @@ define i1 @test-add-sub-nsw-icmp-sgt(i8 %a, i8 %b) {
76
77
ret i1 %cmp
77
78
}
78
79
80
+ ; Should floded by foldICmpCommutative in the future
79
81
define i1 @test-add-sub-nuw-icmp-uge (i8 %a , i8 %b ) {
80
82
; CHECK-LABEL: define i1 @test-add-sub-nuw-icmp-uge(
81
83
; CHECK-SAME: i8 [[A:%.*]], i8 [[B:%.*]]) {
82
- ; CHECK-NEXT: ret i1 true
84
+ ; CHECK-NEXT: [[SUB:%.*]] = sub nuw i8 [[A]], [[B]]
85
+ ; CHECK-NEXT: [[ADD:%.*]] = add nuw i8 [[A]], [[B]]
86
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp uge i8 [[ADD]], [[SUB]]
87
+ ; CHECK-NEXT: ret i1 [[CMP]]
83
88
;
84
89
%sub = sub nuw i8 %a , %b
85
90
%add = add nuw i8 %a , %b
@@ -102,10 +107,14 @@ define i1 @test-add-sub-nuw-icmp-sge(i8 %a, i8 %b) {
102
107
ret i1 %cmp
103
108
}
104
109
110
+ ; Should floded by foldICmpCommutative in the future
105
111
define i1 @test-add-swap-sub-nuw-icmp-uge (i8 %a , i8 %b ) {
106
112
; CHECK-LABEL: define i1 @test-add-swap-sub-nuw-icmp-uge(
107
113
; CHECK-SAME: i8 [[A:%.*]], i8 [[B:%.*]]) {
108
- ; CHECK-NEXT: ret i1 true
114
+ ; CHECK-NEXT: [[SUB:%.*]] = sub nuw i8 [[A]], [[B]]
115
+ ; CHECK-NEXT: [[ADD:%.*]] = add nuw i8 [[B]], [[A]]
116
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp uge i8 [[ADD]], [[SUB]]
117
+ ; CHECK-NEXT: ret i1 [[CMP]]
109
118
;
110
119
%sub = sub nuw i8 %a , %b
111
120
%add = add nuw i8 %b , %a
0 commit comments