[InstCombine] Signed saturation patterns
[llvm-core.git] / test / Analysis / CostModel / SystemZ / logical.ll
blobc4d1fc2b92d44e056266e74dbf6bbfa304873101
1 ; RUN: opt < %s -cost-model -analyze -mtriple=systemz-unknown -mcpu=z13 | FileCheck %s
3 define void @and() {
4   %res0 = and i8 undef, undef
5   %res1 = and i16 undef, undef
6   %res2 = and i32 undef, undef
7   %res3 = and i64 undef, undef
8   %res4 = and <2 x i8> undef, undef
9   %res5 = and <2 x i16> undef, undef
10   %res6 = and <2 x i32> undef, undef
11   %res7 = and <2 x i64> undef, undef
12   %res8 = and <4 x i8> undef, undef
13   %res9 = and <4 x i16> undef, undef
14   %res10 = and <4 x i32> undef, undef
15   %res11 = and <4 x i64> undef, undef
16   %res12 = and <8 x i8> undef, undef
17   %res13 = and <8 x i16> undef, undef
18   %res14 = and <8 x i32> undef, undef
19   %res15 = and <8 x i64> undef, undef
20   %res16 = and <16 x i8> undef, undef
21   %res17 = and <16 x i16> undef, undef
22   %res18 = and <16 x i32> undef, undef
23   %res19 = and <16 x i64> undef, undef
25 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res0 = and i8 undef, undef
26 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res1 = and i16 undef, undef
27 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res2 = and i32 undef, undef
28 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res3 = and i64 undef, undef
29 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res4 = and <2 x i8> undef, undef
30 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res5 = and <2 x i16> undef, undef
31 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res6 = and <2 x i32> undef, undef
32 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res7 = and <2 x i64> undef, undef
33 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res8 = and <4 x i8> undef, undef
34 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res9 = and <4 x i16> undef, undef
35 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res10 = and <4 x i32> undef, undef
36 ; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   %res11 = and <4 x i64> undef, undef
37 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res12 = and <8 x i8> undef, undef
38 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res13 = and <8 x i16> undef, undef
39 ; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   %res14 = and <8 x i32> undef, undef
40 ; CHECK: Cost Model: Found an estimated cost of 4 for instruction:   %res15 = and <8 x i64> undef, undef
41 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res16 = and <16 x i8> undef, undef
42 ; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   %res17 = and <16 x i16> undef, undef
43 ; CHECK: Cost Model: Found an estimated cost of 4 for instruction:   %res18 = and <16 x i32> undef, undef
44 ; CHECK: Cost Model: Found an estimated cost of 8 for instruction:   %res19 = and <16 x i64> undef, undef
46   ret void;
49 define void @ashr() {
50   %res0 = ashr i8 undef, undef
51   %res1 = ashr i16 undef, undef
52   %res2 = ashr i32 undef, undef
53   %res3 = ashr i64 undef, undef
54   %res4 = ashr <2 x i8> undef, undef
55   %res5 = ashr <2 x i16> undef, undef
56   %res6 = ashr <2 x i32> undef, undef
57   %res7 = ashr <2 x i64> undef, undef
58   %res8 = ashr <4 x i8> undef, undef
59   %res9 = ashr <4 x i16> undef, undef
60   %res10 = ashr <4 x i32> undef, undef
61   %res11 = ashr <4 x i64> undef, undef
62   %res12 = ashr <8 x i8> undef, undef
63   %res13 = ashr <8 x i16> undef, undef
64   %res14 = ashr <8 x i32> undef, undef
65   %res15 = ashr <8 x i64> undef, undef
66   %res16 = ashr <16 x i8> undef, undef
67   %res17 = ashr <16 x i16> undef, undef
68   %res18 = ashr <16 x i32> undef, undef
69   %res19 = ashr <16 x i64> undef, undef
71 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res0 = ashr i8 undef, undef
72 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res1 = ashr i16 undef, undef
73 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res2 = ashr i32 undef, undef
74 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res3 = ashr i64 undef, undef
75 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res4 = ashr <2 x i8> undef, undef
76 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res5 = ashr <2 x i16> undef, undef
77 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res6 = ashr <2 x i32> undef, undef
78 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res7 = ashr <2 x i64> undef, undef
79 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res8 = ashr <4 x i8> undef, undef
80 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res9 = ashr <4 x i16> undef, undef
81 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res10 = ashr <4 x i32> undef, undef
82 ; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   %res11 = ashr <4 x i64> undef, undef
83 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res12 = ashr <8 x i8> undef, undef
84 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res13 = ashr <8 x i16> undef, undef
85 ; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   %res14 = ashr <8 x i32> undef, undef
86 ; CHECK: Cost Model: Found an estimated cost of 4 for instruction:   %res15 = ashr <8 x i64> undef, undef
87 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res16 = ashr <16 x i8> undef, undef
88 ; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   %res17 = ashr <16 x i16> undef, undef
89 ; CHECK: Cost Model: Found an estimated cost of 4 for instruction:   %res18 = ashr <16 x i32> undef, undef
90 ; CHECK: Cost Model: Found an estimated cost of 8 for instruction:   %res19 = ashr <16 x i64> undef, undef
92   ret void;
95 define void @lshr() {
96   %res0 = lshr i8 undef, undef
97   %res1 = lshr i16 undef, undef
98   %res2 = lshr i32 undef, undef
99   %res3 = lshr i64 undef, undef
100   %res4 = lshr <2 x i8> undef, undef
101   %res5 = lshr <2 x i16> undef, undef
102   %res6 = lshr <2 x i32> undef, undef
103   %res7 = lshr <2 x i64> undef, undef
104   %res8 = lshr <4 x i8> undef, undef
105   %res9 = lshr <4 x i16> undef, undef
106   %res10 = lshr <4 x i32> undef, undef
107   %res11 = lshr <4 x i64> undef, undef
108   %res12 = lshr <8 x i8> undef, undef
109   %res13 = lshr <8 x i16> undef, undef
110   %res14 = lshr <8 x i32> undef, undef
111   %res15 = lshr <8 x i64> undef, undef
112   %res16 = lshr <16 x i8> undef, undef
113   %res17 = lshr <16 x i16> undef, undef
114   %res18 = lshr <16 x i32> undef, undef
115   %res19 = lshr <16 x i64> undef, undef
117 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res0 = lshr i8 undef, undef
118 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res1 = lshr i16 undef, undef
119 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res2 = lshr i32 undef, undef
120 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res3 = lshr i64 undef, undef
121 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res4 = lshr <2 x i8> undef, undef
122 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res5 = lshr <2 x i16> undef, undef
123 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res6 = lshr <2 x i32> undef, undef
124 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res7 = lshr <2 x i64> undef, undef
125 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res8 = lshr <4 x i8> undef, undef
126 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res9 = lshr <4 x i16> undef, undef
127 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res10 = lshr <4 x i32> undef, undef
128 ; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   %res11 = lshr <4 x i64> undef, undef
129 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res12 = lshr <8 x i8> undef, undef
130 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res13 = lshr <8 x i16> undef, undef
131 ; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   %res14 = lshr <8 x i32> undef, undef
132 ; CHECK: Cost Model: Found an estimated cost of 4 for instruction:   %res15 = lshr <8 x i64> undef, undef
133 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res16 = lshr <16 x i8> undef, undef
134 ; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   %res17 = lshr <16 x i16> undef, undef
135 ; CHECK: Cost Model: Found an estimated cost of 4 for instruction:   %res18 = lshr <16 x i32> undef, undef
136 ; CHECK: Cost Model: Found an estimated cost of 8 for instruction:   %res19 = lshr <16 x i64> undef, undef
138   ret void;
141 define void @or() {
142   %res0 = or i8 undef, undef
143   %res1 = or i16 undef, undef
144   %res2 = or i32 undef, undef
145   %res3 = or i64 undef, undef
146   %res4 = or <2 x i8> undef, undef
147   %res5 = or <2 x i16> undef, undef
148   %res6 = or <2 x i32> undef, undef
149   %res7 = or <2 x i64> undef, undef
150   %res8 = or <4 x i8> undef, undef
151   %res9 = or <4 x i16> undef, undef
152   %res10 = or <4 x i32> undef, undef
153   %res11 = or <4 x i64> undef, undef
154   %res12 = or <8 x i8> undef, undef
155   %res13 = or <8 x i16> undef, undef
156   %res14 = or <8 x i32> undef, undef
157   %res15 = or <8 x i64> undef, undef
158   %res16 = or <16 x i8> undef, undef
159   %res17 = or <16 x i16> undef, undef
160   %res18 = or <16 x i32> undef, undef
161   %res19 = or <16 x i64> undef, undef
162   
163 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res0 = or i8 undef, undef
164 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res1 = or i16 undef, undef
165 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res2 = or i32 undef, undef
166 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res3 = or i64 undef, undef
167 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res4 = or <2 x i8> undef, undef
168 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res5 = or <2 x i16> undef, undef
169 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res6 = or <2 x i32> undef, undef
170 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res7 = or <2 x i64> undef, undef
171 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res8 = or <4 x i8> undef, undef
172 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res9 = or <4 x i16> undef, undef
173 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res10 = or <4 x i32> undef, undef
174 ; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   %res11 = or <4 x i64> undef, undef
175 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res12 = or <8 x i8> undef, undef
176 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res13 = or <8 x i16> undef, undef
177 ; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   %res14 = or <8 x i32> undef, undef
178 ; CHECK: Cost Model: Found an estimated cost of 4 for instruction:   %res15 = or <8 x i64> undef, undef
179 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res16 = or <16 x i8> undef, undef
180 ; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   %res17 = or <16 x i16> undef, undef
181 ; CHECK: Cost Model: Found an estimated cost of 4 for instruction:   %res18 = or <16 x i32> undef, undef
182 ; CHECK: Cost Model: Found an estimated cost of 8 for instruction:   %res19 = or <16 x i64> undef, undef
184   ret void;
187 define void @shl() {
188   %res0 = shl i8 undef, undef
189   %res1 = shl i16 undef, undef
190   %res2 = shl i32 undef, undef
191   %res3 = shl i64 undef, undef
192   %res4 = shl <2 x i8> undef, undef
193   %res5 = shl <2 x i16> undef, undef
194   %res6 = shl <2 x i32> undef, undef
195   %res7 = shl <2 x i64> undef, undef
196   %res8 = shl <4 x i8> undef, undef
197   %res9 = shl <4 x i16> undef, undef
198   %res10 = shl <4 x i32> undef, undef
199   %res11 = shl <4 x i64> undef, undef
200   %res12 = shl <8 x i8> undef, undef
201   %res13 = shl <8 x i16> undef, undef
202   %res14 = shl <8 x i32> undef, undef
203   %res15 = shl <8 x i64> undef, undef
204   %res16 = shl <16 x i8> undef, undef
205   %res17 = shl <16 x i16> undef, undef
206   %res18 = shl <16 x i32> undef, undef
207   %res19 = shl <16 x i64> undef, undef
208   
209 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res0 = shl i8 undef, undef
210 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res1 = shl i16 undef, undef
211 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res2 = shl i32 undef, undef
212 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res3 = shl i64 undef, undef
213 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res4 = shl <2 x i8> undef, undef
214 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res5 = shl <2 x i16> undef, undef
215 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res6 = shl <2 x i32> undef, undef
216 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res7 = shl <2 x i64> undef, undef
217 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res8 = shl <4 x i8> undef, undef
218 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res9 = shl <4 x i16> undef, undef
219 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res10 = shl <4 x i32> undef, undef
220 ; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   %res11 = shl <4 x i64> undef, undef
221 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res12 = shl <8 x i8> undef, undef
222 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res13 = shl <8 x i16> undef, undef
223 ; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   %res14 = shl <8 x i32> undef, undef
224 ; CHECK: Cost Model: Found an estimated cost of 4 for instruction:   %res15 = shl <8 x i64> undef, undef
225 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res16 = shl <16 x i8> undef, undef
226 ; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   %res17 = shl <16 x i16> undef, undef
227 ; CHECK: Cost Model: Found an estimated cost of 4 for instruction:   %res18 = shl <16 x i32> undef, undef
228 ; CHECK: Cost Model: Found an estimated cost of 8 for instruction:   %res19 = shl <16 x i64> undef, undef
230   ret void;
233 define void @xor() {
234   %res0 = xor i8 undef, undef
235   %res1 = xor i16 undef, undef
236   %res2 = xor i32 undef, undef
237   %res3 = xor i64 undef, undef
238   %res4 = xor <2 x i8> undef, undef
239   %res5 = xor <2 x i16> undef, undef
240   %res6 = xor <2 x i32> undef, undef
241   %res7 = xor <2 x i64> undef, undef
242   %res8 = xor <4 x i8> undef, undef
243   %res9 = xor <4 x i16> undef, undef
244   %res10 = xor <4 x i32> undef, undef
245   %res11 = xor <4 x i64> undef, undef
246   %res12 = xor <8 x i8> undef, undef
247   %res13 = xor <8 x i16> undef, undef
248   %res14 = xor <8 x i32> undef, undef
249   %res15 = xor <8 x i64> undef, undef
250   %res16 = xor <16 x i8> undef, undef
251   %res17 = xor <16 x i16> undef, undef
252   %res18 = xor <16 x i32> undef, undef
253   %res19 = xor <16 x i64> undef, undef
254   
255 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res0 = xor i8 undef, undef
256 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res1 = xor i16 undef, undef
257 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res2 = xor i32 undef, undef
258 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res3 = xor i64 undef, undef
259 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res4 = xor <2 x i8> undef, undef
260 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res5 = xor <2 x i16> undef, undef
261 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res6 = xor <2 x i32> undef, undef
262 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res7 = xor <2 x i64> undef, undef
263 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res8 = xor <4 x i8> undef, undef
264 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res9 = xor <4 x i16> undef, undef
265 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res10 = xor <4 x i32> undef, undef
266 ; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   %res11 = xor <4 x i64> undef, undef
267 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res12 = xor <8 x i8> undef, undef
268 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res13 = xor <8 x i16> undef, undef
269 ; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   %res14 = xor <8 x i32> undef, undef
270 ; CHECK: Cost Model: Found an estimated cost of 4 for instruction:   %res15 = xor <8 x i64> undef, undef
271 ; CHECK: Cost Model: Found an estimated cost of 1 for instruction:   %res16 = xor <16 x i8> undef, undef
272 ; CHECK: Cost Model: Found an estimated cost of 2 for instruction:   %res17 = xor <16 x i16> undef, undef
273 ; CHECK: Cost Model: Found an estimated cost of 4 for instruction:   %res18 = xor <16 x i32> undef, undef
274 ; CHECK: Cost Model: Found an estimated cost of 8 for instruction:   %res19 = xor <16 x i64> undef, undef
276   ret void;