[DAGCombiner] Add target hook function to decide folding (mul (add x, c1), c2)
[llvm-project.git] / llvm / test / Transforms / JumpThreading / lvi-tristate.ll
blobee0140035c3ba4dd1e64e0e5eaaf6fad4e240c34
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ; RUN: opt -jump-threading -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -S < %s | FileCheck %s
3 declare void @ham()
5 define void @hoge() {
6 ; CHECK-LABEL: @hoge(
7 ; CHECK-NEXT:  bb:
8 ; CHECK-NEXT:    [[TMP:%.*]] = and i32 undef, 1073741823
9 ; CHECK-NEXT:    [[COND:%.*]] = icmp eq i32 [[TMP]], 5
10 ; CHECK-NEXT:    br i1 [[COND]], label [[BB10:%.*]], label [[BB13:%.*]]
11 ; CHECK:       bb10:
12 ; CHECK-NEXT:    tail call void @ham()
13 ; CHECK-NEXT:    br label [[BB13]]
14 ; CHECK:       bb13:
15 ; CHECK-NEXT:    ret void
17 bb:
18   %tmp = and i32 undef, 1073741823
19   %tmp1 = icmp eq i32 %tmp, 2
20   br i1 %tmp1, label %bb12, label %bb2
22 bb2:
23   %tmp3 = icmp eq i32 %tmp, 3
24   br i1 %tmp3, label %bb13, label %bb4
26 bb4:
27   %tmp5 = icmp eq i32 %tmp, 5
28   br i1 %tmp5, label %bb6, label %bb7
30 bb6:
31   tail call void @ham()
32   br label %bb7
34 bb7:
35   br i1 %tmp3, label %bb13, label %bb8
37 bb8:
38   %tmp9 = icmp eq i32 %tmp, 4
39   br i1 %tmp9, label %bb13, label %bb10
41 bb10:
42   br i1 %tmp9, label %bb11, label %bb13
44 bb11:
45   br label %bb13
47 bb12:
48   br label %bb2
50 bb13:
51   ret void