• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; RUN: opt -instsimplify -S < %s | FileCheck %s
2
3; @test0
4; CHECK: ret i64 undef
5define i64 @test0() {
6  %r = mul i64 undef, undef
7  ret i64 %r
8}
9
10; @test1
11; CHECK: ret i64 undef
12define i64 @test1() {
13  %r = mul i64 3, undef
14  ret i64 %r
15}
16
17; @test2
18; CHECK: ret i64 undef
19define i64 @test2() {
20  %r = mul i64 undef, 3
21  ret i64 %r
22}
23
24; @test3
25; CHECK: ret i64 0
26define i64 @test3() {
27  %r = mul i64 undef, 6
28  ret i64 %r
29}
30
31; @test4
32; CHECK: ret i64 0
33define i64 @test4() {
34  %r = mul i64 6, undef
35  ret i64 %r
36}
37
38; @test5
39; CHECK: ret i64 undef
40define i64 @test5() {
41  %r = and i64 undef, undef
42  ret i64 %r
43}
44
45; @test6
46; CHECK: ret i64 undef
47define i64 @test6() {
48  %r = or i64 undef, undef
49  ret i64 %r
50}
51
52; @test7
53; CHECK: ret i64 undef
54define i64 @test7() {
55  %r = udiv i64 undef, 1
56  ret i64 %r
57}
58
59; @test8
60; CHECK: ret i64 undef
61define i64 @test8() {
62  %r = sdiv i64 undef, 1
63  ret i64 %r
64}
65
66; @test9
67; CHECK: ret i64 0
68define i64 @test9() {
69  %r = urem i64 undef, 1
70  ret i64 %r
71}
72
73; @test10
74; CHECK: ret i64 0
75define i64 @test10() {
76  %r = srem i64 undef, 1
77  ret i64 %r
78}
79
80; @test11
81; CHECK: ret i64 undef
82define i64 @test11() {
83  %r = shl i64 undef, undef
84  ret i64 %r
85}
86
87; @test11b
88; CHECK: ret i64 undef
89define i64 @test11b(i64 %a) {
90  %r = shl i64 %a, undef
91  ret i64 %r
92}
93
94; @test12
95; CHECK: ret i64 undef
96define i64 @test12() {
97  %r = ashr i64 undef, undef
98  ret i64 %r
99}
100
101; @test12b
102; CHECK: ret i64 undef
103define i64 @test12b(i64 %a) {
104  %r = ashr i64 %a, undef
105  ret i64 %r
106}
107
108; @test13
109; CHECK: ret i64 undef
110define i64 @test13() {
111  %r = lshr i64 undef, undef
112  ret i64 %r
113}
114
115; @test13b
116; CHECK: ret i64 undef
117define i64 @test13b(i64 %a) {
118  %r = lshr i64 %a, undef
119  ret i64 %r
120}
121
122; @test14
123; CHECK: ret i1 undef
124define i1 @test14() {
125  %r = icmp slt i64 undef, undef
126  ret i1 %r
127}
128
129; @test15
130; CHECK: ret i1 undef
131define i1 @test15() {
132  %r = icmp ult i64 undef, undef
133  ret i1 %r
134}
135
136; @test16
137; CHECK: ret i64 undef
138define i64 @test16(i64 %a) {
139  %r = select i1 undef, i64 %a, i64 undef
140  ret i64 %r
141}
142
143; @test17
144; CHECK: ret i64 undef
145define i64 @test17(i64 %a) {
146  %r = select i1 undef, i64 undef, i64 %a
147  ret i64 %r
148}
149
150; @test18
151; CHECK: ret i64 undef
152define i64 @test18(i64 %a) {
153  %r = call i64 (i64)* undef(i64 %a)
154  ret i64 %r
155}
156
157; CHECK-LABEL: @test19
158; CHECK: ret <4 x i8> undef
159define <4 x i8> @test19(<4 x i8> %a) {
160  %b = shl <4 x i8> %a, <i8 8, i8 9, i8 undef, i8 -1>
161  ret <4 x i8> %b
162}
163