[LLVM][IR] Use splat syntax when printing ConstantExpr based splats. (#116856)
[llvm-project.git] / llvm / test / Transforms / CorrelatedValuePropagation / udiv.ll
blob22e3acb77d5ba6e78cce301113a6a45333d44b3a
1 ; RUN: opt < %s -passes=correlated-propagation -S | FileCheck %s
3 ; Check that debug locations are preserved. For more info see:
4 ;   https://llvm.org/docs/SourceLevelDebugging.html#fixing-errors
5 ; RUN: opt < %s -enable-debugify -passes=correlated-propagation -S 2>&1 | \
6 ; RUN:   FileCheck %s -check-prefix=DEBUG
7 ; DEBUG: CheckModuleDebugify: PASS
9 ; CHECK-LABEL: @test_nop
10 define void @test_nop(i32 %n) {
11 ; CHECK: udiv i32 %n, 100
12   %div = udiv i32 %n, 100
13   ret void
16 ; CHECK-LABEL: @test1(
17 define void @test1(i32 %n) {
18 entry:
19   %cmp = icmp ule i32 %n, 65535
20   br i1 %cmp, label %bb, label %exit
22 bb:
23 ; CHECK: udiv i16
24   %div = udiv i32 %n, 100
25   br label %exit
27 exit:
28   ret void
31 ; CHECK-LABEL: @test2(
32 define void @test2(i32 %n) {
33 entry:
34   %cmp = icmp ule i32 %n, 65536
35   br i1 %cmp, label %bb, label %exit
37 bb:
38 ; CHECK: udiv i32 %n, 100
39   %div = udiv i32 %n, 100
40   br label %exit
42 exit:
43   ret void
46 ; CHECK-LABEL: @test3(
47 define void @test3(i32 %m, i32 %n) {
48 entry:
49   %cmp1 = icmp ult i32 %m, 65535
50   %cmp2 = icmp ult i32 %n, 65535
51   %cmp = and i1 %cmp1, %cmp2
52   br i1 %cmp, label %bb, label %exit
54 bb:
55 ; CHECK: udiv i16
56   %div = udiv i32 %m, %n
57   br label %exit
59 exit:
60   ret void
63 ; CHECK-LABEL: @test4(
64 define void @test4(i32 %m, i32 %n) {
65 entry:
66   %cmp1 = icmp ult i32 %m, 65535
67   %cmp2 = icmp ule i32 %n, 65536
68   %cmp = and i1 %cmp1, %cmp2
69   br i1 %cmp, label %bb, label %exit
71 bb:
72 ; CHECK: udiv i32 %m, %n
73   %div = udiv i32 %m, %n
74   br label %exit
76 exit:
77   ret void
80 ; CHECK-LABEL: @test5
81 define void @test5(i32 %n) {
82   %trunc = and i32 %n, 65535
83   ; CHECK: udiv i16
84   %div = udiv i32 %trunc, 42
85   ret void
88 ; CHECK-LABEL: @test6
89 define void @test6(i32 %n) {
90 entry:
91   %cmp = icmp ule i32 %n, 255
92   br i1 %cmp, label %bb, label %exit
94 bb:
95 ; CHECK: udiv i8
96   %div = sdiv i32 %n, 100
97   br label %exit
99 exit:
100   ret void