@@ -237,4 +237,38 @@ if.end: ; preds = %entry
237
237
ret void
238
238
}
239
239
240
+ define i16 @test_pr53123_sub_constraint_sign (i16 %v ) {
241
+ ; CHECK-LABEL: @test_pr53123_sub_constraint_sign(
242
+ ; CHECK-NEXT: bb.0:
243
+ ; CHECK-NEXT: [[SUB:%.*]] = sub nuw nsw i16 32767, [[V:%.*]]
244
+ ; CHECK-NEXT: [[CMP1:%.*]] = icmp ugt i16 [[V]], [[SUB]]
245
+ ; CHECK-NEXT: br i1 [[CMP1]], label [[BB_2:%.*]], label [[BB_1:%.*]]
246
+ ; CHECK: bb.1:
247
+ ; CHECK-NEXT: [[ADD:%.*]] = shl nuw nsw i16 [[V]], 1
248
+ ; CHECK-NEXT: [[SUB9:%.*]] = sub nuw nsw i16 32767, [[ADD]]
249
+ ; CHECK-NEXT: [[CMP11:%.*]] = icmp ugt i16 [[ADD]], [[SUB9]]
250
+ ; CHECK-NEXT: br i1 false, label [[BB_3:%.*]], label [[BB_2]]
251
+ ; CHECK: bb.2:
252
+ ; CHECK-NEXT: ret i16 1
253
+ ; CHECK: bb.3:
254
+ ; CHECK-NEXT: ret i16 0
255
+ ;
256
+ bb.0 :
257
+ %sub = sub nuw nsw i16 32767 , %v
258
+ %cmp1 = icmp ugt i16 %v , %sub
259
+ br i1 %cmp1 , label %bb.2 , label %bb.1
260
+
261
+ bb.1 :
262
+ %add = shl nuw nsw i16 %v , 1
263
+ %sub9 = sub nuw nsw i16 32767 , %add
264
+ %cmp11 = icmp ugt i16 %add , %sub9
265
+ br i1 %cmp11 , label %bb.3 , label %bb.2
266
+
267
+ bb.2 :
268
+ ret i16 1
269
+
270
+ bb.3 :
271
+ ret i16 0
272
+ }
273
+
240
274
declare void @use (i1 )
0 commit comments