Skip to content

Commit 9623cb9

Browse files
committed
Precommit tests
1 parent d4ccec7 commit 9623cb9

File tree

2 files changed

+68
-0
lines changed

2 files changed

+68
-0
lines changed

llvm/test/Transforms/InstCombine/scmp.ll

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,23 @@ define i8 @scmp_from_select_lt(i32 %x, i32 %y) {
223223
ret i8 %r
224224
}
225225

226+
; Fold (x s< y) ? -1 : zext(x s> y) into scmp(x, y)
227+
define i8 @scmp_from_select_lt_and_gt(i32 %x, i32 %y) {
228+
; CHECK-LABEL: define i8 @scmp_from_select_lt_and_gt(
229+
; CHECK-SAME: i32 [[X:%.*]], i32 [[Y:%.*]]) {
230+
; CHECK-NEXT: [[GT_BOOL:%.*]] = icmp sgt i32 [[X]], [[Y]]
231+
; CHECK-NEXT: [[GT:%.*]] = zext i1 [[GT_BOOL]] to i8
232+
; CHECK-NEXT: [[LT:%.*]] = icmp ult i32 [[X]], [[Y]]
233+
; CHECK-NEXT: [[R:%.*]] = select i1 [[LT]], i8 -1, i8 [[GT]]
234+
; CHECK-NEXT: ret i8 [[R]]
235+
;
236+
%gt_bool = icmp sgt i32 %x, %y
237+
%gt = zext i1 %gt_bool to i8
238+
%lt = icmp slt i32 %x, %y
239+
%r = select i1 %lt, i8 -1, i8 %gt
240+
ret i8 %r
241+
}
242+
226243
; Vector version
227244
define <4 x i8> @scmp_from_select_vec_lt(<4 x i32> %x, <4 x i32> %y) {
228245
; CHECK-LABEL: define <4 x i8> @scmp_from_select_vec_lt(
@@ -264,3 +281,20 @@ define i8 @scmp_from_select_ge(i32 %x, i32 %y) {
264281
%r = select i1 %ge, i8 %ne, i8 -1
265282
ret i8 %r
266283
}
284+
285+
; Fold (x s> y) ? 1 : sext(x s< y)
286+
define i8 @scmp_from_select_gt_and_lt(i32 %x, i32 %y) {
287+
; CHECK-LABEL: define i8 @scmp_from_select_gt_and_lt(
288+
; CHECK-SAME: i32 [[X:%.*]], i32 [[Y:%.*]]) {
289+
; CHECK-NEXT: [[LT_BOOL:%.*]] = icmp slt i32 [[X]], [[Y]]
290+
; CHECK-NEXT: [[LT:%.*]] = sext i1 [[LT_BOOL]] to i8
291+
; CHECK-NEXT: [[GT:%.*]] = icmp sgt i32 [[X]], [[Y]]
292+
; CHECK-NEXT: [[R:%.*]] = select i1 [[GT]], i8 1, i8 [[LT]]
293+
; CHECK-NEXT: ret i8 [[R]]
294+
;
295+
%lt_bool = icmp slt i32 %x, %y
296+
%lt = sext i1 %lt_bool to i8
297+
%gt = icmp sgt i32 %x, %y
298+
%r = select i1 %gt, i8 1, i8 %lt
299+
ret i8 %r
300+
}

llvm/test/Transforms/InstCombine/ucmp.ll

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,23 @@ define i8 @ucmp_from_select_lt(i32 %x, i32 %y) {
222222
ret i8 %r
223223
}
224224

225+
; Fold (x u< y) ? -1 : zext(x u> y) into ucmp(x, y)
226+
define i8 @ucmp_from_select_lt_and_gt(i32 %x, i32 %y) {
227+
; CHECK-LABEL: define i8 @ucmp_from_select_lt_and_gt(
228+
; CHECK-SAME: i32 [[X:%.*]], i32 [[Y:%.*]]) {
229+
; CHECK-NEXT: [[GT_BOOL:%.*]] = icmp ugt i32 [[X]], [[Y]]
230+
; CHECK-NEXT: [[GT:%.*]] = zext i1 [[GT_BOOL]] to i8
231+
; CHECK-NEXT: [[LT:%.*]] = icmp ult i32 [[X]], [[Y]]
232+
; CHECK-NEXT: [[R:%.*]] = select i1 [[LT]], i8 -1, i8 [[GT]]
233+
; CHECK-NEXT: ret i8 [[R]]
234+
;
235+
%gt_bool = icmp ugt i32 %x, %y
236+
%gt = zext i1 %gt_bool to i8
237+
%lt = icmp ult i32 %x, %y
238+
%r = select i1 %lt, i8 -1, i8 %gt
239+
ret i8 %r
240+
}
241+
225242
; Vector version
226243
define <4 x i8> @ucmp_from_select_vec_lt(<4 x i32> %x, <4 x i32> %y) {
227244
; CHECK-LABEL: define <4 x i8> @ucmp_from_select_vec_lt(
@@ -513,3 +530,20 @@ define i8 @ucmp_from_select_ge_neg4(i32 %x, i32 %y) {
513530
%r = select i1 %ge, i8 %ne, i8 3
514531
ret i8 %r
515532
}
533+
534+
; Fold (x > y) ? 1 : sext(x < y)
535+
define i8 @ucmp_from_select_gt_and_lt(i32 %x, i32 %y) {
536+
; CHECK-LABEL: define i8 @ucmp_from_select_gt_and_lt(
537+
; CHECK-SAME: i32 [[X:%.*]], i32 [[Y:%.*]]) {
538+
; CHECK-NEXT: [[LT_BOOL:%.*]] = icmp ult i32 [[X]], [[Y]]
539+
; CHECK-NEXT: [[LT:%.*]] = sext i1 [[LT_BOOL]] to i8
540+
; CHECK-NEXT: [[GT:%.*]] = icmp ugt i32 [[X]], [[Y]]
541+
; CHECK-NEXT: [[R:%.*]] = select i1 [[GT]], i8 1, i8 [[LT]]
542+
; CHECK-NEXT: ret i8 [[R]]
543+
;
544+
%lt_bool = icmp ult i32 %x, %y
545+
%lt = sext i1 %lt_bool to i8
546+
%gt = icmp ugt i32 %x, %y
547+
%r = select i1 %gt, i8 1, i8 %lt
548+
ret i8 %r
549+
}

0 commit comments

Comments
 (0)