@@ -399,3 +399,59 @@ define i8 @sub_const_on_lhs_negative(i8 %x) {
399399 %s = select i1 %cmp , i8 %sub , i8 50
400400 ret i8 %s
401401}
402+
403+ define i8 @smin_ugt (i8 %x ) {
404+ ; CHECK-LABEL: define i8 @smin_ugt(
405+ ; CHECK-SAME: i8 [[X:%.*]]) {
406+ ; CHECK-NEXT: [[SMIN:%.*]] = call i8 @llvm.smin.i8(i8 [[X]], i8 50)
407+ ; CHECK-NEXT: [[CMP:%.*]] = icmp ugt i8 [[X]], 100
408+ ; CHECK-NEXT: [[S:%.*]] = select i1 [[CMP]], i8 50, i8 [[SMIN]]
409+ ; CHECK-NEXT: ret i8 [[S]]
410+ ;
411+ %smin = call i8 @llvm.smin.i8 (i8 %x , i8 50 )
412+ %cmp = icmp ugt i8 %x , 100
413+ %s = select i1 %cmp , i8 50 , i8 %smin
414+ ret i8 %s
415+ }
416+
417+ define i8 @smax_ugt (i8 %x ) {
418+ ; CHECK-LABEL: define i8 @smax_ugt(
419+ ; CHECK-SAME: i8 [[X:%.*]]) {
420+ ; CHECK-NEXT: [[SMAX:%.*]] = call i8 @llvm.smax.i8(i8 [[X]], i8 50)
421+ ; CHECK-NEXT: [[CMP:%.*]] = icmp ugt i8 [[X]], 100
422+ ; CHECK-NEXT: [[S:%.*]] = select i1 [[CMP]], i8 100, i8 [[SMAX]]
423+ ; CHECK-NEXT: ret i8 [[S]]
424+ ;
425+ %smax = call i8 @llvm.smax.i8 (i8 %x , i8 50 )
426+ %cmp = icmp ugt i8 %x , 100
427+ %s = select i1 %cmp , i8 100 , i8 %smax
428+ ret i8 %s
429+ }
430+
431+ define i8 @umin_slt (i8 %x ) {
432+ ; CHECK-LABEL: define i8 @umin_slt(
433+ ; CHECK-SAME: i8 [[X:%.*]]) {
434+ ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i8 [[X]], 0
435+ ; CHECK-NEXT: [[UMIN:%.*]] = tail call i8 @llvm.umin.i8(i8 [[X]], i8 100)
436+ ; CHECK-NEXT: [[S:%.*]] = select i1 [[CMP]], i8 0, i8 [[UMIN]]
437+ ; CHECK-NEXT: ret i8 [[S]]
438+ ;
439+ %cmp = icmp slt i8 %x , 0
440+ %umin = tail call i8 @llvm.umin.i8 (i8 %x , i8 100 )
441+ %s = select i1 %cmp , i8 0 , i8 %umin
442+ ret i8 %s
443+ }
444+
445+ define i8 @umax_sgt (i8 %x ) {
446+ ; CHECK-LABEL: define i8 @umax_sgt(
447+ ; CHECK-SAME: i8 [[X:%.*]]) {
448+ ; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i8 [[X]], 100
449+ ; CHECK-NEXT: [[UMAX:%.*]] = tail call i8 @llvm.umax.i8(i8 [[X]], i8 50)
450+ ; CHECK-NEXT: [[S:%.*]] = select i1 [[CMP]], i8 100, i8 [[UMAX]]
451+ ; CHECK-NEXT: ret i8 [[S]]
452+ ;
453+ %cmp = icmp sgt i8 %x , 100
454+ %umax = tail call i8 @llvm.umax.i8 (i8 %x , i8 50 )
455+ %s = select i1 %cmp , i8 100 , i8 %umax
456+ ret i8 %s
457+ }
0 commit comments