[X86] Enforce strict pre-legalization to combine in scalarizeExtEltFP (#117681)
[llvm-project.git] / llvm / test / Transforms / SimplifyCFG / ARM / cttz-ctlz.ll
blobe6c6bc96aa6af03c7e871f3519d231df05dd5d53
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ; RUN: opt -S -passes=simplifycfg -simplifycfg-require-and-preserve-domtree=1 -mtriple=arm -mattr=+v6t2 < %s | FileCheck %s
4 define i32 @ctlz(i32 %A) {
5 ; CHECK-LABEL: @ctlz(
6 ; CHECK-NEXT:  entry:
7 ; CHECK-NEXT:    [[TOBOOL:%.*]] = icmp eq i32 [[A:%.*]], 0
8 ; CHECK-NEXT:    [[TMP0:%.*]] = tail call i32 @llvm.ctlz.i32(i32 [[A]], i1 true)
9 ; CHECK-NEXT:    [[SPEC_SELECT:%.*]] = select i1 [[TOBOOL]], i32 32, i32 [[TMP0]]
10 ; CHECK-NEXT:    ret i32 [[SPEC_SELECT]]
12 entry:
13   %tobool = icmp eq i32 %A, 0
14   br i1 %tobool, label %cond.end, label %cond.true
16 cond.true:
17   %0 = tail call i32 @llvm.ctlz.i32(i32 %A, i1 true)
18   br label %cond.end
20 cond.end:
21   %cond = phi i32 [ %0, %cond.true ], [ 32, %entry ]
22   ret i32 %cond
25 define i32 @cttz(i32 %A) {
26 ; CHECK-LABEL: @cttz(
27 ; CHECK-NEXT:  entry:
28 ; CHECK-NEXT:    [[TOBOOL:%.*]] = icmp eq i32 [[A:%.*]], 0
29 ; CHECK-NEXT:    [[TMP0:%.*]] = tail call i32 @llvm.cttz.i32(i32 [[A]], i1 true)
30 ; CHECK-NEXT:    [[SPEC_SELECT:%.*]] = select i1 [[TOBOOL]], i32 32, i32 [[TMP0]]
31 ; CHECK-NEXT:    ret i32 [[SPEC_SELECT]]
33 entry:
34   %tobool = icmp eq i32 %A, 0
35   br i1 %tobool, label %cond.end, label %cond.true
37 cond.true:
38   %0 = tail call i32 @llvm.cttz.i32(i32 %A, i1 true)
39   br label %cond.end
41 cond.end:
42   %cond = phi i32 [ %0, %cond.true ], [ 32, %entry ]
43   ret i32 %cond
46 declare i32 @llvm.ctlz.i32(i32, i1)
47 declare i32 @llvm.cttz.i32(i32, i1)