@@ -313,6 +313,19 @@ define i8 @fold_ctz_log2(i8 %x) {
313
313
ret i8 %r
314
314
}
315
315
316
+ define i9 @fold_ctz_log2_i9_okay (i9 %x ) {
317
+ ; CHECK-LABEL: @fold_ctz_log2_i9_okay(
318
+ ; CHECK-NEXT: [[P2:%.*]] = shl nuw i9 1, [[X:%.*]]
319
+ ; CHECK-NEXT: [[V:%.*]] = call i9 @llvm.umin.i9(i9 [[P2]], i9 32)
320
+ ; CHECK-NEXT: [[R:%.*]] = call range(i9 0, 10) i9 @llvm.cttz.i9(i9 [[V]], i1 true)
321
+ ; CHECK-NEXT: ret i9 [[R]]
322
+ ;
323
+ %p2 = shl i9 1 , %x
324
+ %v = call i9 @llvm.umin (i9 %p2 , i9 32 )
325
+ %r = call i9 @llvm.cttz (i9 %v , i1 false )
326
+ ret i9 %r
327
+ }
328
+
316
329
define i8 @fold_ctz_log2_maybe_z (i8 %x , i8 %y , i1 %c ) {
317
330
; CHECK-LABEL: @fold_ctz_log2_maybe_z(
318
331
; CHECK-NEXT: [[V:%.*]] = shl i8 2, [[V_V:%.*]]
@@ -356,8 +369,8 @@ define i8 @fold_clz_log2(i8 %x) {
356
369
ret i8 %r
357
370
}
358
371
359
- define i8 @fold_clz_log2_multiuse (i8 %x ) {
360
- ; CHECK-LABEL: @fold_clz_log2_multiuse (
372
+ define i8 @fold_clz_log2_multiuse_fail (i8 %x ) {
373
+ ; CHECK-LABEL: @fold_clz_log2_multiuse_fail (
361
374
; CHECK-NEXT: [[V:%.*]] = shl i8 2, [[X:%.*]]
362
375
; CHECK-NEXT: call void @use.i8(i8 [[V]])
363
376
; CHECK-NEXT: [[R:%.*]] = call range(i8 0, 9) i8 @llvm.ctlz.i8(i8 [[V]], i1 true)
@@ -370,15 +383,15 @@ define i8 @fold_clz_log2_multiuse(i8 %x) {
370
383
}
371
384
372
385
373
- define i9 @fold_clz_log2_i9 (i9 %x ) {
374
- ; CHECK-LABEL: @fold_clz_log2_i9 (
386
+ define i9 @fold_clz_log2_i9_fail (i9 %x ) {
387
+ ; CHECK-LABEL: @fold_clz_log2_i9_fail (
375
388
; CHECK-NEXT: [[P2:%.*]] = shl nuw i9 1, [[X:%.*]]
376
389
; CHECK-NEXT: [[V:%.*]] = call i9 @llvm.umin.i9(i9 [[P2]], i9 32)
377
390
; CHECK-NEXT: [[R:%.*]] = call range(i9 3, 10) i9 @llvm.ctlz.i9(i9 [[V]], i1 true)
378
391
; CHECK-NEXT: ret i9 [[R]]
379
392
;
380
393
%p2 = shl i9 1 , %x
381
394
%v = call i9 @llvm.umin (i9 %p2 , i9 32 )
382
- %r = call i9 @llvm.ctlz (i9 %v , i1 false )
395
+ %r = call i9 @llvm.ctlz (i9 %v , i1 true )
383
396
ret i9 %r
384
397
}
0 commit comments