@@ -1156,6 +1156,50 @@ define i8 @test_scalar_uadd_sub_const(i8 %a) {
1156
1156
ret i8 %res
1157
1157
}
1158
1158
1159
+ define i1 @scalar_uadd_eq_zero (i8 %a , i8 %b ) {
1160
+ ; CHECK-LABEL: @scalar_uadd_eq_zero(
1161
+ ; CHECK-NEXT: [[SAT:%.*]] = call i8 @llvm.uadd.sat.i8(i8 [[A:%.*]], i8 [[B:%.*]])
1162
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i8 [[SAT]], 0
1163
+ ; CHECK-NEXT: ret i1 [[CMP]]
1164
+ ;
1165
+ %sat = call i8 @llvm.uadd.sat.i8 (i8 %a , i8 %b )
1166
+ %cmp = icmp eq i8 %sat , 0
1167
+ ret i1 %cmp
1168
+ }
1169
+
1170
+ define i1 @scalar_uadd_ne_zero (i8 %a , i8 %b ) {
1171
+ ; CHECK-LABEL: @scalar_uadd_ne_zero(
1172
+ ; CHECK-NEXT: [[SAT:%.*]] = call i8 @llvm.uadd.sat.i8(i8 [[A:%.*]], i8 [[B:%.*]])
1173
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp ne i8 [[SAT]], 0
1174
+ ; CHECK-NEXT: ret i1 [[CMP]]
1175
+ ;
1176
+ %sat = call i8 @llvm.uadd.sat.i8 (i8 %a , i8 %b )
1177
+ %cmp = icmp ne i8 %sat , 0
1178
+ ret i1 %cmp
1179
+ }
1180
+
1181
+ define i1 @scalar_usub_eq_zero (i8 %a , i8 %b ) {
1182
+ ; CHECK-LABEL: @scalar_usub_eq_zero(
1183
+ ; CHECK-NEXT: [[SAT:%.*]] = call i8 @llvm.usub.sat.i8(i8 [[A:%.*]], i8 [[B:%.*]])
1184
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i8 [[SAT]], 0
1185
+ ; CHECK-NEXT: ret i1 [[CMP]]
1186
+ ;
1187
+ %sat = call i8 @llvm.usub.sat.i8 (i8 %a , i8 %b )
1188
+ %cmp = icmp eq i8 %sat , 0
1189
+ ret i1 %cmp
1190
+ }
1191
+
1192
+ define i1 @scalar_usub_ne_zero (i8 %a , i8 %b ) {
1193
+ ; CHECK-LABEL: @scalar_usub_ne_zero(
1194
+ ; CHECK-NEXT: [[SAT:%.*]] = call i8 @llvm.usub.sat.i8(i8 [[A:%.*]], i8 [[B:%.*]])
1195
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp ne i8 [[SAT]], 0
1196
+ ; CHECK-NEXT: ret i1 [[CMP]]
1197
+ ;
1198
+ %sat = call i8 @llvm.usub.sat.i8 (i8 %a , i8 %b )
1199
+ %cmp = icmp ne i8 %sat , 0
1200
+ ret i1 %cmp
1201
+ }
1202
+
1159
1203
; Raw IR tests
1160
1204
1161
1205
define i32 @uadd_sat (i32 %x , i32 %y ) {
0 commit comments