1 ; RUN: opt < %s -cost-model -analyze -mtriple=thumbv7-apple-ios6.0.0 -mcpu=cortex-a9 | FileCheck %s
3 define <2 x i8> @sdiv_v2_i8(<2 x i8> %a, <2 x i8> %b) {
5 ; CHECK: cost of 40 {{.*}} sdiv
7 %1 = sdiv <2 x i8> %a, %b
10 define <2 x i16> @sdiv_v2_i16(<2 x i16> %a, <2 x i16> %b) {
12 ; CHECK: cost of 40 {{.*}} sdiv
14 %1 = sdiv <2 x i16> %a, %b
17 define <2 x i32> @sdiv_v2_i32(<2 x i32> %a, <2 x i32> %b) {
19 ; CHECK: cost of 40 {{.*}} sdiv
21 %1 = sdiv <2 x i32> %a, %b
24 define <2 x i64> @sdiv_v2_i64(<2 x i64> %a, <2 x i64> %b) {
26 ; CHECK: cost of 40 {{.*}} sdiv
28 %1 = sdiv <2 x i64> %a, %b
31 define <4 x i8> @sdiv_v4_i8(<4 x i8> %a, <4 x i8> %b) {
33 ; CHECK: cost of 10 {{.*}} sdiv
35 %1 = sdiv <4 x i8> %a, %b
38 define <4 x i16> @sdiv_v4_i16(<4 x i16> %a, <4 x i16> %b) {
40 ; CHECK: cost of 10 {{.*}} sdiv
42 %1 = sdiv <4 x i16> %a, %b
45 define <4 x i32> @sdiv_v4_i32(<4 x i32> %a, <4 x i32> %b) {
47 ; CHECK: cost of 80 {{.*}} sdiv
49 %1 = sdiv <4 x i32> %a, %b
52 define <4 x i64> @sdiv_v4_i64(<4 x i64> %a, <4 x i64> %b) {
54 ; CHECK: cost of 80 {{.*}} sdiv
56 %1 = sdiv <4 x i64> %a, %b
59 define <8 x i8> @sdiv_v8_i8(<8 x i8> %a, <8 x i8> %b) {
61 ; CHECK: cost of 10 {{.*}} sdiv
63 %1 = sdiv <8 x i8> %a, %b
66 define <8 x i16> @sdiv_v8_i16(<8 x i16> %a, <8 x i16> %b) {
68 ; CHECK: cost of 160 {{.*}} sdiv
70 %1 = sdiv <8 x i16> %a, %b
73 define <8 x i32> @sdiv_v8_i32(<8 x i32> %a, <8 x i32> %b) {
75 ; CHECK: cost of 160 {{.*}} sdiv
77 %1 = sdiv <8 x i32> %a, %b
80 define <8 x i64> @sdiv_v8_i64(<8 x i64> %a, <8 x i64> %b) {
82 ; CHECK: cost of 160 {{.*}} sdiv
84 %1 = sdiv <8 x i64> %a, %b
87 define <16 x i8> @sdiv_v16_i8(<16 x i8> %a, <16 x i8> %b) {
89 ; CHECK: cost of 320 {{.*}} sdiv
91 %1 = sdiv <16 x i8> %a, %b
94 define <16 x i16> @sdiv_v16_i16(<16 x i16> %a, <16 x i16> %b) {
96 ; CHECK: cost of 320 {{.*}} sdiv
98 %1 = sdiv <16 x i16> %a, %b
101 define <16 x i32> @sdiv_v16_i32(<16 x i32> %a, <16 x i32> %b) {
102 ; CHECK: sdiv_v16_i32
103 ; CHECK: cost of 320 {{.*}} sdiv
105 %1 = sdiv <16 x i32> %a, %b
108 define <16 x i64> @sdiv_v16_i64(<16 x i64> %a, <16 x i64> %b) {
109 ; CHECK: sdiv_v16_i64
110 ; CHECK: cost of 320 {{.*}} sdiv
112 %1 = sdiv <16 x i64> %a, %b
115 define <2 x i8> @udiv_v2_i8(<2 x i8> %a, <2 x i8> %b) {
117 ; CHECK: cost of 40 {{.*}} udiv
119 %1 = udiv <2 x i8> %a, %b
122 define <2 x i16> @udiv_v2_i16(<2 x i16> %a, <2 x i16> %b) {
124 ; CHECK: cost of 40 {{.*}} udiv
126 %1 = udiv <2 x i16> %a, %b
129 define <2 x i32> @udiv_v2_i32(<2 x i32> %a, <2 x i32> %b) {
131 ; CHECK: cost of 40 {{.*}} udiv
133 %1 = udiv <2 x i32> %a, %b
136 define <2 x i64> @udiv_v2_i64(<2 x i64> %a, <2 x i64> %b) {
138 ; CHECK: cost of 40 {{.*}} udiv
140 %1 = udiv <2 x i64> %a, %b
143 define <4 x i8> @udiv_v4_i8(<4 x i8> %a, <4 x i8> %b) {
145 ; CHECK: cost of 10 {{.*}} udiv
147 %1 = udiv <4 x i8> %a, %b
150 define <4 x i16> @udiv_v4_i16(<4 x i16> %a, <4 x i16> %b) {
152 ; CHECK: cost of 10 {{.*}} udiv
154 %1 = udiv <4 x i16> %a, %b
157 define <4 x i32> @udiv_v4_i32(<4 x i32> %a, <4 x i32> %b) {
159 ; CHECK: cost of 80 {{.*}} udiv
161 %1 = udiv <4 x i32> %a, %b
164 define <4 x i64> @udiv_v4_i64(<4 x i64> %a, <4 x i64> %b) {
166 ; CHECK: cost of 80 {{.*}} udiv
168 %1 = udiv <4 x i64> %a, %b
171 define <8 x i8> @udiv_v8_i8(<8 x i8> %a, <8 x i8> %b) {
173 ; CHECK: cost of 10 {{.*}} udiv
175 %1 = udiv <8 x i8> %a, %b
178 define <8 x i16> @udiv_v8_i16(<8 x i16> %a, <8 x i16> %b) {
180 ; CHECK: cost of 160 {{.*}} udiv
182 %1 = udiv <8 x i16> %a, %b
185 define <8 x i32> @udiv_v8_i32(<8 x i32> %a, <8 x i32> %b) {
187 ; CHECK: cost of 160 {{.*}} udiv
189 %1 = udiv <8 x i32> %a, %b
192 define <8 x i64> @udiv_v8_i64(<8 x i64> %a, <8 x i64> %b) {
194 ; CHECK: cost of 160 {{.*}} udiv
196 %1 = udiv <8 x i64> %a, %b
199 define <16 x i8> @udiv_v16_i8(<16 x i8> %a, <16 x i8> %b) {
201 ; CHECK: cost of 320 {{.*}} udiv
203 %1 = udiv <16 x i8> %a, %b
206 define <16 x i16> @udiv_v16_i16(<16 x i16> %a, <16 x i16> %b) {
207 ; CHECK: udiv_v16_i16
208 ; CHECK: cost of 320 {{.*}} udiv
210 %1 = udiv <16 x i16> %a, %b
213 define <16 x i32> @udiv_v16_i32(<16 x i32> %a, <16 x i32> %b) {
214 ; CHECK: udiv_v16_i32
215 ; CHECK: cost of 320 {{.*}} udiv
217 %1 = udiv <16 x i32> %a, %b
220 define <16 x i64> @udiv_v16_i64(<16 x i64> %a, <16 x i64> %b) {
221 ; CHECK: udiv_v16_i64
222 ; CHECK: cost of 320 {{.*}} udiv
224 %1 = udiv <16 x i64> %a, %b
227 define <2 x i8> @srem_v2_i8(<2 x i8> %a, <2 x i8> %b) {
229 ; CHECK: cost of 40 {{.*}} srem
231 %1 = srem <2 x i8> %a, %b
234 define <2 x i16> @srem_v2_i16(<2 x i16> %a, <2 x i16> %b) {
236 ; CHECK: cost of 40 {{.*}} srem
238 %1 = srem <2 x i16> %a, %b
241 define <2 x i32> @srem_v2_i32(<2 x i32> %a, <2 x i32> %b) {
243 ; CHECK: cost of 40 {{.*}} srem
245 %1 = srem <2 x i32> %a, %b
248 define <2 x i64> @srem_v2_i64(<2 x i64> %a, <2 x i64> %b) {
250 ; CHECK: cost of 40 {{.*}} srem
252 %1 = srem <2 x i64> %a, %b
255 define <4 x i8> @srem_v4_i8(<4 x i8> %a, <4 x i8> %b) {
257 ; CHECK: cost of 80 {{.*}} srem
259 %1 = srem <4 x i8> %a, %b
262 define <4 x i16> @srem_v4_i16(<4 x i16> %a, <4 x i16> %b) {
264 ; CHECK: cost of 80 {{.*}} srem
266 %1 = srem <4 x i16> %a, %b
269 define <4 x i32> @srem_v4_i32(<4 x i32> %a, <4 x i32> %b) {
271 ; CHECK: cost of 80 {{.*}} srem
273 %1 = srem <4 x i32> %a, %b
276 define <4 x i64> @srem_v4_i64(<4 x i64> %a, <4 x i64> %b) {
278 ; CHECK: cost of 80 {{.*}} srem
280 %1 = srem <4 x i64> %a, %b
283 define <8 x i8> @srem_v8_i8(<8 x i8> %a, <8 x i8> %b) {
285 ; CHECK: cost of 160 {{.*}} srem
287 %1 = srem <8 x i8> %a, %b
290 define <8 x i16> @srem_v8_i16(<8 x i16> %a, <8 x i16> %b) {
292 ; CHECK: cost of 160 {{.*}} srem
294 %1 = srem <8 x i16> %a, %b
297 define <8 x i32> @srem_v8_i32(<8 x i32> %a, <8 x i32> %b) {
299 ; CHECK: cost of 160 {{.*}} srem
301 %1 = srem <8 x i32> %a, %b
304 define <8 x i64> @srem_v8_i64(<8 x i64> %a, <8 x i64> %b) {
306 ; CHECK: cost of 160 {{.*}} srem
308 %1 = srem <8 x i64> %a, %b
311 define <16 x i8> @srem_v16_i8(<16 x i8> %a, <16 x i8> %b) {
313 ; CHECK: cost of 320 {{.*}} srem
315 %1 = srem <16 x i8> %a, %b
318 define <16 x i16> @srem_v16_i16(<16 x i16> %a, <16 x i16> %b) {
319 ; CHECK: srem_v16_i16
320 ; CHECK: cost of 320 {{.*}} srem
322 %1 = srem <16 x i16> %a, %b
325 define <16 x i32> @srem_v16_i32(<16 x i32> %a, <16 x i32> %b) {
326 ; CHECK: srem_v16_i32
327 ; CHECK: cost of 320 {{.*}} srem
329 %1 = srem <16 x i32> %a, %b
332 define <16 x i64> @srem_v16_i64(<16 x i64> %a, <16 x i64> %b) {
333 ; CHECK: srem_v16_i64
334 ; CHECK: cost of 320 {{.*}} srem
336 %1 = srem <16 x i64> %a, %b
339 define <2 x i8> @urem_v2_i8(<2 x i8> %a, <2 x i8> %b) {
341 ; CHECK: cost of 40 {{.*}} urem
343 %1 = urem <2 x i8> %a, %b
346 define <2 x i16> @urem_v2_i16(<2 x i16> %a, <2 x i16> %b) {
348 ; CHECK: cost of 40 {{.*}} urem
350 %1 = urem <2 x i16> %a, %b
353 define <2 x i32> @urem_v2_i32(<2 x i32> %a, <2 x i32> %b) {
355 ; CHECK: cost of 40 {{.*}} urem
357 %1 = urem <2 x i32> %a, %b
360 define <2 x i64> @urem_v2_i64(<2 x i64> %a, <2 x i64> %b) {
362 ; CHECK: cost of 40 {{.*}} urem
364 %1 = urem <2 x i64> %a, %b
367 define <4 x i8> @urem_v4_i8(<4 x i8> %a, <4 x i8> %b) {
369 ; CHECK: cost of 80 {{.*}} urem
371 %1 = urem <4 x i8> %a, %b
374 define <4 x i16> @urem_v4_i16(<4 x i16> %a, <4 x i16> %b) {
376 ; CHECK: cost of 80 {{.*}} urem
378 %1 = urem <4 x i16> %a, %b
381 define <4 x i32> @urem_v4_i32(<4 x i32> %a, <4 x i32> %b) {
383 ; CHECK: cost of 80 {{.*}} urem
385 %1 = urem <4 x i32> %a, %b
388 define <4 x i64> @urem_v4_i64(<4 x i64> %a, <4 x i64> %b) {
390 ; CHECK: cost of 80 {{.*}} urem
392 %1 = urem <4 x i64> %a, %b
395 define <8 x i8> @urem_v8_i8(<8 x i8> %a, <8 x i8> %b) {
397 ; CHECK: cost of 160 {{.*}} urem
399 %1 = urem <8 x i8> %a, %b
402 define <8 x i16> @urem_v8_i16(<8 x i16> %a, <8 x i16> %b) {
404 ; CHECK: cost of 160 {{.*}} urem
406 %1 = urem <8 x i16> %a, %b
409 define <8 x i32> @urem_v8_i32(<8 x i32> %a, <8 x i32> %b) {
411 ; CHECK: cost of 160 {{.*}} urem
413 %1 = urem <8 x i32> %a, %b
416 define <8 x i64> @urem_v8_i64(<8 x i64> %a, <8 x i64> %b) {
418 ; CHECK: cost of 160 {{.*}} urem
420 %1 = urem <8 x i64> %a, %b
423 define <16 x i8> @urem_v16_i8(<16 x i8> %a, <16 x i8> %b) {
425 ; CHECK: cost of 320 {{.*}} urem
427 %1 = urem <16 x i8> %a, %b
430 define <16 x i16> @urem_v16_i16(<16 x i16> %a, <16 x i16> %b) {
431 ; CHECK: urem_v16_i16
432 ; CHECK: cost of 320 {{.*}} urem
434 %1 = urem <16 x i16> %a, %b
437 define <16 x i32> @urem_v16_i32(<16 x i32> %a, <16 x i32> %b) {
438 ; CHECK: urem_v16_i32
439 ; CHECK: cost of 320 {{.*}} urem
441 %1 = urem <16 x i32> %a, %b
444 define <16 x i64> @urem_v16_i64(<16 x i64> %a, <16 x i64> %b) {
445 ; CHECK: urem_v16_i64
446 ; CHECK: cost of 320 {{.*}} urem
448 %1 = urem <16 x i64> %a, %b