@@ -187,11 +187,7 @@ define i8 @signed_add_neg5(i32 %a, i32 %b) {
187187define i8 @signed_add_ge_le (i32 %a , i32 %b ) {
188188; CHECK-LABEL: define i8 @signed_add_ge_le(
189189; CHECK-SAME: i32 [[A:%.*]], i32 [[B:%.*]]) {
190- ; CHECK-NEXT: [[LE:%.*]] = icmp sle i32 [[A]], [[B]]
191- ; CHECK-NEXT: [[LE8:%.*]] = sext i1 [[LE]] to i8
192- ; CHECK-NEXT: [[GE:%.*]] = icmp sge i32 [[A]], [[B]]
193- ; CHECK-NEXT: [[GE8:%.*]] = zext i1 [[GE]] to i8
194- ; CHECK-NEXT: [[R:%.*]] = add nsw i8 [[LE8]], [[GE8]]
190+ ; CHECK-NEXT: [[R:%.*]] = call i8 @llvm.scmp.i8.i32(i32 [[A]], i32 [[B]])
195191; CHECK-NEXT: ret i8 [[R]]
196192;
197193 %le = icmp sle i32 %a , %b
@@ -206,11 +202,7 @@ define i8 @signed_add_ge_le(i32 %a, i32 %b) {
206202define i8 @unsigned_add_ge_le (i32 %a , i32 %b ) {
207203; CHECK-LABEL: define i8 @unsigned_add_ge_le(
208204; CHECK-SAME: i32 [[A:%.*]], i32 [[B:%.*]]) {
209- ; CHECK-NEXT: [[LE:%.*]] = icmp ule i32 [[A]], [[B]]
210- ; CHECK-NEXT: [[LE8:%.*]] = sext i1 [[LE]] to i8
211- ; CHECK-NEXT: [[GE:%.*]] = icmp uge i32 [[A]], [[B]]
212- ; CHECK-NEXT: [[GE8:%.*]] = zext i1 [[GE]] to i8
213- ; CHECK-NEXT: [[R:%.*]] = add nsw i8 [[LE8]], [[GE8]]
205+ ; CHECK-NEXT: [[R:%.*]] = call i8 @llvm.ucmp.i8.i32(i32 [[A]], i32 [[B]])
214206; CHECK-NEXT: ret i8 [[R]]
215207;
216208 %le = icmp ule i32 %a , %b
@@ -225,11 +217,7 @@ define i8 @unsigned_add_ge_le(i32 %a, i32 %b) {
225217define i8 @signed_sub_ge_le (i32 %a , i32 %b ) {
226218; CHECK-LABEL: define i8 @signed_sub_ge_le(
227219; CHECK-SAME: i32 [[A:%.*]], i32 [[B:%.*]]) {
228- ; CHECK-NEXT: [[LE:%.*]] = icmp sle i32 [[A]], [[B]]
229- ; CHECK-NEXT: [[LE8_NEG:%.*]] = sext i1 [[LE]] to i8
230- ; CHECK-NEXT: [[GE:%.*]] = icmp sge i32 [[A]], [[B]]
231- ; CHECK-NEXT: [[GE8:%.*]] = zext i1 [[GE]] to i8
232- ; CHECK-NEXT: [[R:%.*]] = add nsw i8 [[LE8_NEG]], [[GE8]]
220+ ; CHECK-NEXT: [[R:%.*]] = call i8 @llvm.scmp.i8.i32(i32 [[A]], i32 [[B]])
233221; CHECK-NEXT: ret i8 [[R]]
234222;
235223 %le = icmp sle i32 %a , %b
@@ -244,11 +232,7 @@ define i8 @signed_sub_ge_le(i32 %a, i32 %b) {
244232define i8 @unsigned_sub_ge_le (i32 %a , i32 %b ) {
245233; CHECK-LABEL: define i8 @unsigned_sub_ge_le(
246234; CHECK-SAME: i32 [[A:%.*]], i32 [[B:%.*]]) {
247- ; CHECK-NEXT: [[LE:%.*]] = icmp ule i32 [[A]], [[B]]
248- ; CHECK-NEXT: [[LE8_NEG:%.*]] = sext i1 [[LE]] to i8
249- ; CHECK-NEXT: [[GE:%.*]] = icmp uge i32 [[A]], [[B]]
250- ; CHECK-NEXT: [[GE8:%.*]] = zext i1 [[GE]] to i8
251- ; CHECK-NEXT: [[R:%.*]] = add nsw i8 [[LE8_NEG]], [[GE8]]
235+ ; CHECK-NEXT: [[R:%.*]] = call i8 @llvm.ucmp.i8.i32(i32 [[A]], i32 [[B]])
252236; CHECK-NEXT: ret i8 [[R]]
253237;
254238 %le = icmp ule i32 %a , %b
0 commit comments