Skip to content

Commit ab8419a

Browse files
committed
[InstCombine] add tests for min/max with 'not' ops; NFC
1 parent 8f6cea4 commit ab8419a

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

llvm/test/Transforms/InstCombine/minmax-intrinsics.ll

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1148,3 +1148,30 @@ define i8 @neg_neg_nsw_umin(i8 %x, i8 %y) {
11481148
%m = call i8 @llvm.umin.i8(i8 %nx, i8 %ny)
11491149
ret i8 %m
11501150
}
1151+
1152+
declare void @use4(i8, i8, i8, i8)
1153+
1154+
define void @cmyk(i8 %r, i8 %g, i8 %b) {
1155+
; CHECK-LABEL: @cmyk(
1156+
; CHECK-NEXT: [[NOTR:%.*]] = xor i8 [[R:%.*]], -1
1157+
; CHECK-NEXT: [[NOTG:%.*]] = xor i8 [[G:%.*]], -1
1158+
; CHECK-NEXT: [[NOTB:%.*]] = xor i8 [[B:%.*]], -1
1159+
; CHECK-NEXT: [[M:%.*]] = call i8 @llvm.smin.i8(i8 [[NOTR]], i8 [[NOTG]])
1160+
; CHECK-NEXT: [[K:%.*]] = call i8 @llvm.smin.i8(i8 [[M]], i8 [[NOTB]])
1161+
; CHECK-NEXT: [[CK:%.*]] = sub i8 [[NOTR]], [[K]]
1162+
; CHECK-NEXT: [[MK:%.*]] = sub i8 [[NOTG]], [[K]]
1163+
; CHECK-NEXT: [[YK:%.*]] = sub i8 [[NOTB]], [[K]]
1164+
; CHECK-NEXT: call void @use4(i8 [[CK]], i8 [[MK]], i8 [[YK]], i8 [[K]])
1165+
; CHECK-NEXT: ret void
1166+
;
1167+
%notr = xor i8 %r, -1
1168+
%notg = xor i8 %g, -1
1169+
%notb = xor i8 %b, -1
1170+
%m = call i8 @llvm.smin.i8(i8 %notr, i8 %notg)
1171+
%k = call i8 @llvm.smin.i8(i8 %m, i8 %notb)
1172+
%ck = sub i8 %notr, %k
1173+
%mk = sub i8 %notg, %k
1174+
%yk = sub i8 %notb, %k
1175+
call void @use4(i8 %ck, i8 %mk, i8 %yk, i8 %k)
1176+
ret void
1177+
}

0 commit comments

Comments
 (0)