xref: /llvm-project/llvm/test/Analysis/DemandedBits/shl.ll (revision d6254396197267f3fe939f1613d22479f4de5440)
1*d6254396SFlorian Hahn; RUN: opt -S -disable-output -passes="print<demanded-bits>" < %s 2>&1 | FileCheck %s
2*d6254396SFlorian Hahn
3*d6254396SFlorian Hahndefine i8 @test_shl_const_amount_4(i32 %a) {
4*d6254396SFlorian Hahn; CHECK-LABEL: 'test_shl_const_amount_4'
5*d6254396SFlorian Hahn; CHECK-DAG:  DemandedBits: 0xff for %shl = shl i32 %a, 4
6*d6254396SFlorian Hahn; CHECK-DAG:  DemandedBits: 0xf for %a in %shl = shl i32 %a, 4
7*d6254396SFlorian Hahn; CHECK-DAG:  DemandedBits: 0xffffffff for 4 in %shl = shl i32 %a, 4
8*d6254396SFlorian Hahn; CHECK-DAG:  DemandedBits: 0xff for %shl.t = trunc i32 %shl to i8
9*d6254396SFlorian Hahn; CHECK-DAG:  DemandedBits: 0xff for %shl in %shl.t = trunc i32 %shl to i8
10*d6254396SFlorian Hahn;
11*d6254396SFlorian Hahn  %shl = shl i32 %a, 4
12*d6254396SFlorian Hahn  %shl.t = trunc i32 %shl to i8
13*d6254396SFlorian Hahn  ret i8 %shl.t
14*d6254396SFlorian Hahn}
15*d6254396SFlorian Hahn
16*d6254396SFlorian Hahndefine i8 @test_shl_const_amount_5(i32 %a) {
17*d6254396SFlorian Hahn; CHECK-LABEL: 'test_shl_const_amount_5'
18*d6254396SFlorian Hahn; CHECK-DAG:  DemandedBits: 0xff for %shl = shl i32 %a, 5
19*d6254396SFlorian Hahn; CHECK-DAG:  DemandedBits: 0x7 for %a in %shl = shl i32 %a, 5
20*d6254396SFlorian Hahn; CHECK-DAG:  DemandedBits: 0xffffffff for 5 in %shl = shl i32 %a, 5
21*d6254396SFlorian Hahn; CHECK-DAG:  DemandedBits: 0xff for %shl.t = trunc i32 %shl to i8
22*d6254396SFlorian Hahn; CHECK-DAG:  DemandedBits: 0xff for %shl in %shl.t = trunc i32 %shl to i8
23*d6254396SFlorian Hahn;
24*d6254396SFlorian Hahn  %shl = shl i32 %a, 5
25*d6254396SFlorian Hahn  %shl.t = trunc i32 %shl to i8
26*d6254396SFlorian Hahn  ret i8 %shl.t
27*d6254396SFlorian Hahn}
28*d6254396SFlorian Hahn
29*d6254396SFlorian Hahndefine i8 @test_shl_const_amount_8(i32 %a) {
30*d6254396SFlorian Hahn; CHECK-LABEL: 'test_shl_const_amount_8'
31*d6254396SFlorian Hahn; CHECK-DAG:  DemandedBits: 0xff for %shl.t = trunc i32 %shl to i8
32*d6254396SFlorian Hahn; CHECK-DAG:  DemandedBits: 0xff for %shl in %shl.t = trunc i32 %shl to i8
33*d6254396SFlorian Hahn; CHECK-DAG:  DemandedBits: 0xff for %shl = shl i32 %a, 8
34*d6254396SFlorian Hahn; CHECK-DAG:  DemandedBits: 0x0 for %a in %shl = shl i32 %a, 8
35*d6254396SFlorian Hahn; CHECK-DAG:  DemandedBits: 0xffffffff for 8 in %shl = shl i32 %a, 8
36*d6254396SFlorian Hahn;
37*d6254396SFlorian Hahn  %shl = shl i32 %a, 8
38*d6254396SFlorian Hahn  %shl.t = trunc i32 %shl to i8
39*d6254396SFlorian Hahn  ret i8 %shl.t
40*d6254396SFlorian Hahn}
41*d6254396SFlorian Hahn
42*d6254396SFlorian Hahndefine i8 @test_shl_const_amount_9(i32 %a) {
43*d6254396SFlorian Hahn; CHECK-LABEL: 'test_shl_const_amount_9'
44*d6254396SFlorian Hahn; CHECK-DAG:  DemandedBits: 0xff for %shl = shl i32 %a, 9
45*d6254396SFlorian Hahn; CHECK-DAG:  DemandedBits: 0x0 for %a in %shl = shl i32 %a, 9
46*d6254396SFlorian Hahn; CHECK-DAG:  DemandedBits: 0xffffffff for 9 in %shl = shl i32 %a, 9
47*d6254396SFlorian Hahn; CHECK-DAG:  DemandedBits: 0xff for %shl.t = trunc i32 %shl to i8
48*d6254396SFlorian Hahn; CHECK-DAG:  DemandedBits: 0xff for %shl in %shl.t = trunc i32 %shl to i8
49*d6254396SFlorian Hahn;
50*d6254396SFlorian Hahn  %shl = shl i32 %a, 9
51*d6254396SFlorian Hahn  %shl.t = trunc i32 %shl to i8
52*d6254396SFlorian Hahn  ret i8 %shl.t
53*d6254396SFlorian Hahn}
54*d6254396SFlorian Hahn
55*d6254396SFlorian Hahndefine i8 @test_shl(i32 %a, i32 %b) {
56*d6254396SFlorian Hahn; CHECK-LABEL: 'test_shl'
57*d6254396SFlorian Hahn; CHECK-DAG:  DemandedBits: 0xff for %shl.t = trunc i32 %shl to i8
58*d6254396SFlorian Hahn; CHECK-DAG:  DemandedBits: 0xff for %shl in %shl.t = trunc i32 %shl to i8
59*d6254396SFlorian Hahn; CHECK-DAG:  DemandedBits: 0xff for %shl = shl i32 %a, %b
60*d6254396SFlorian Hahn; CHECK-DAG:  DemandedBits: 0xffffffff for %a in %shl = shl i32 %a, %b
61*d6254396SFlorian Hahn; CHECK-DAG:  DemandedBits: 0xffffffff for %b in %shl = shl i32 %a, %b
62*d6254396SFlorian Hahn;
63*d6254396SFlorian Hahn  %shl = shl i32 %a, %b
64*d6254396SFlorian Hahn  %shl.t = trunc i32 %shl to i8
65*d6254396SFlorian Hahn  ret i8 %shl.t
66*d6254396SFlorian Hahn}
67