@@ -1148,3 +1148,30 @@ define i8 @neg_neg_nsw_umin(i8 %x, i8 %y) {
1148
1148
%m = call i8 @llvm.umin.i8 (i8 %nx , i8 %ny )
1149
1149
ret i8 %m
1150
1150
}
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