blob: 69131df416882be2cfd1f351be37b052e3b26231 [file] [log] [blame]
Matt Wala8d1072e2014-07-11 15:43:51 -07001; This test checks support for vector arithmetic.
2
Jim Stichnoth729dbd02015-02-25 14:48:43 -08003; RUN: %p2i -i %s --filetype=obj --disassemble -a -O2 \
Jan Vounga2703ae2015-02-19 11:27:44 -08004; RUN: | FileCheck %s
Jim Stichnoth729dbd02015-02-25 14:48:43 -08005; RUN: %p2i -i %s --filetype=obj --disassemble -a -Om1 \
Jan Vounga2703ae2015-02-19 11:27:44 -08006; RUN: | FileCheck %s
Jim Stichnoth729dbd02015-02-25 14:48:43 -08007; RUN: %p2i -i %s --filetype=obj --disassemble -a -O2 -mattr=sse4.1 \
Jan Voungdddc3062014-08-29 12:59:02 -07008; RUN: | FileCheck --check-prefix=SSE41 %s
Jim Stichnoth729dbd02015-02-25 14:48:43 -08009; RUN: %p2i -i %s --filetype=obj --disassemble -a -Om1 -mattr=sse4.1 \
10; RUN: | FileCheck --check-prefix=SSE41 %s
Matt Wala8d1072e2014-07-11 15:43:51 -070011
12define <4 x float> @test_fadd(<4 x float> %arg0, <4 x float> %arg1) {
13entry:
14 %res = fadd <4 x float> %arg0, %arg1
15 ret <4 x float> %res
Jan Vounga2703ae2015-02-19 11:27:44 -080016; CHECK-LABEL: test_fadd
Matt Wala8d1072e2014-07-11 15:43:51 -070017; CHECK: addps
18}
19
20define <4 x float> @test_fsub(<4 x float> %arg0, <4 x float> %arg1) {
21entry:
22 %res = fsub <4 x float> %arg0, %arg1
23 ret <4 x float> %res
Jan Vounga2703ae2015-02-19 11:27:44 -080024; CHECK-LABEL: test_fsub
Matt Wala8d1072e2014-07-11 15:43:51 -070025; CHECK: subps
26}
27
28define <4 x float> @test_fmul(<4 x float> %arg0, <4 x float> %arg1) {
29entry:
30 %res = fmul <4 x float> %arg0, %arg1
31 ret <4 x float> %res
Jan Vounga2703ae2015-02-19 11:27:44 -080032; CHECK-LABEL: test_fmul
Matt Wala8d1072e2014-07-11 15:43:51 -070033; CHECK: mulps
34}
35
36define <4 x float> @test_fdiv(<4 x float> %arg0, <4 x float> %arg1) {
37entry:
38 %res = fdiv <4 x float> %arg0, %arg1
39 ret <4 x float> %res
Jan Vounga2703ae2015-02-19 11:27:44 -080040; CHECK-LABEL: test_fdiv
Matt Wala8d1072e2014-07-11 15:43:51 -070041; CHECK: divps
42}
43
44define <4 x float> @test_frem(<4 x float> %arg0, <4 x float> %arg1) {
45entry:
46 %res = frem <4 x float> %arg0, %arg1
47 ret <4 x float> %res
Jan Vounga2703ae2015-02-19 11:27:44 -080048; CHECK-LABEL: test_frem
Jim Stichnoth33246422014-11-24 14:36:23 -080049; CHECK: fmodf
50; CHECK: fmodf
51; CHECK: fmodf
52; CHECK: fmodf
Matt Wala7fa22d82014-07-17 12:41:31 -070053}
54
55define <16 x i8> @test_add_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) {
56entry:
57 %res = add <16 x i8> %arg0, %arg1
58 ret <16 x i8> %res
Jan Vounga2703ae2015-02-19 11:27:44 -080059; CHECK-LABEL: test_add_v16i8
Matt Wala7fa22d82014-07-17 12:41:31 -070060; CHECK: paddb
61}
62
63define <16 x i8> @test_and_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) {
64entry:
65 %res = and <16 x i8> %arg0, %arg1
66 ret <16 x i8> %res
Jan Vounga2703ae2015-02-19 11:27:44 -080067; CHECK-LABEL: test_and_v16i8
Matt Wala7fa22d82014-07-17 12:41:31 -070068; CHECK: pand
69}
70
71define <16 x i8> @test_or_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) {
72entry:
73 %res = or <16 x i8> %arg0, %arg1
74 ret <16 x i8> %res
Jan Vounga2703ae2015-02-19 11:27:44 -080075; CHECK-LABEL: test_or_v16i8
Matt Wala7fa22d82014-07-17 12:41:31 -070076; CHECK: por
77}
78
79define <16 x i8> @test_xor_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) {
80entry:
81 %res = xor <16 x i8> %arg0, %arg1
82 ret <16 x i8> %res
Jan Vounga2703ae2015-02-19 11:27:44 -080083; CHECK-LABEL: test_xor_v16i8
Matt Wala7fa22d82014-07-17 12:41:31 -070084; CHECK: pxor
85}
86
87define <16 x i8> @test_sub_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) {
88entry:
89 %res = sub <16 x i8> %arg0, %arg1
90 ret <16 x i8> %res
Jan Vounga2703ae2015-02-19 11:27:44 -080091; CHECK-LABEL: test_sub_v16i8
Matt Wala7fa22d82014-07-17 12:41:31 -070092; CHECK: psubb
93}
94
95define <16 x i8> @test_mul_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) {
96entry:
97 %res = mul <16 x i8> %arg0, %arg1
98 ret <16 x i8> %res
Jan Vounga2703ae2015-02-19 11:27:44 -080099; CHECK-LABEL: test_mul_v16i8
Matt Walaafeaee42014-08-07 13:47:30 -0700100; CHECK: imul
101; CHECK: imul
102; CHECK: imul
103; CHECK: imul
104; CHECK: imul
105; CHECK: imul
106; CHECK: imul
107; CHECK: imul
108; CHECK: imul
109; CHECK: imul
110; CHECK: imul
111; CHECK: imul
112; CHECK: imul
113; CHECK: imul
114; CHECK: imul
115; CHECK: imul
Matt Wala7fa22d82014-07-17 12:41:31 -0700116}
117
118define <16 x i8> @test_shl_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) {
119entry:
120 %res = shl <16 x i8> %arg0, %arg1
121 ret <16 x i8> %res
Jan Vounga2703ae2015-02-19 11:27:44 -0800122; CHECK-LABEL: test_shl_v16i8
Matt Walaafeaee42014-08-07 13:47:30 -0700123; CHECK: shl
124; CHECK: shl
125; CHECK: shl
126; CHECK: shl
127; CHECK: shl
128; CHECK: shl
129; CHECK: shl
130; CHECK: shl
131; CHECK: shl
132; CHECK: shl
133; CHECK: shl
134; CHECK: shl
135; CHECK: shl
136; CHECK: shl
137; CHECK: shl
138; CHECK: shl
Matt Wala7fa22d82014-07-17 12:41:31 -0700139}
140
141define <16 x i8> @test_lshr_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) {
142entry:
143 %res = lshr <16 x i8> %arg0, %arg1
144 ret <16 x i8> %res
Jan Vounga2703ae2015-02-19 11:27:44 -0800145; CHECK-LABEL: test_lshr_v16i8
Matt Walaafeaee42014-08-07 13:47:30 -0700146; CHECK: shr
147; CHECK: shr
148; CHECK: shr
149; CHECK: shr
150; CHECK: shr
151; CHECK: shr
152; CHECK: shr
153; CHECK: shr
154; CHECK: shr
155; CHECK: shr
156; CHECK: shr
157; CHECK: shr
158; CHECK: shr
159; CHECK: shr
160; CHECK: shr
161; CHECK: shr
Matt Wala7fa22d82014-07-17 12:41:31 -0700162}
163
164define <16 x i8> @test_ashr_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) {
165entry:
166 %res = ashr <16 x i8> %arg0, %arg1
167 ret <16 x i8> %res
Jan Vounga2703ae2015-02-19 11:27:44 -0800168; CHECK-LABEL: test_ashr_v16i8
Matt Walaafeaee42014-08-07 13:47:30 -0700169; CHECK: sar
170; CHECK: sar
171; CHECK: sar
172; CHECK: sar
173; CHECK: sar
174; CHECK: sar
175; CHECK: sar
176; CHECK: sar
177; CHECK: sar
178; CHECK: sar
179; CHECK: sar
180; CHECK: sar
181; CHECK: sar
182; CHECK: sar
183; CHECK: sar
184; CHECK: sar
Matt Wala7fa22d82014-07-17 12:41:31 -0700185}
186
187define <16 x i8> @test_udiv_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) {
188entry:
189 %res = udiv <16 x i8> %arg0, %arg1
190 ret <16 x i8> %res
Jan Vounga2703ae2015-02-19 11:27:44 -0800191; CHECK-LABEL: test_udiv_v16i8
Matt Walaafeaee42014-08-07 13:47:30 -0700192; CHECK: div
193; CHECK: div
194; CHECK: div
195; CHECK: div
196; CHECK: div
197; CHECK: div
198; CHECK: div
199; CHECK: div
200; CHECK: div
201; CHECK: div
202; CHECK: div
203; CHECK: div
204; CHECK: div
205; CHECK: div
206; CHECK: div
207; CHECK: div
Matt Wala7fa22d82014-07-17 12:41:31 -0700208}
209
210define <16 x i8> @test_sdiv_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) {
211entry:
212 %res = sdiv <16 x i8> %arg0, %arg1
213 ret <16 x i8> %res
Jan Vounga2703ae2015-02-19 11:27:44 -0800214; CHECK-LABEL: test_sdiv_v16i8
Matt Walaafeaee42014-08-07 13:47:30 -0700215; CHECK: idiv
216; CHECK: idiv
217; CHECK: idiv
218; CHECK: idiv
219; CHECK: idiv
220; CHECK: idiv
221; CHECK: idiv
222; CHECK: idiv
223; CHECK: idiv
224; CHECK: idiv
225; CHECK: idiv
226; CHECK: idiv
227; CHECK: idiv
228; CHECK: idiv
229; CHECK: idiv
230; CHECK: idiv
Matt Wala7fa22d82014-07-17 12:41:31 -0700231}
232
233define <16 x i8> @test_urem_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) {
234entry:
235 %res = urem <16 x i8> %arg0, %arg1
236 ret <16 x i8> %res
Jan Vounga2703ae2015-02-19 11:27:44 -0800237; CHECK-LABEL: test_urem_v16i8
Matt Walaafeaee42014-08-07 13:47:30 -0700238; CHECK: div
239; CHECK: div
240; CHECK: div
241; CHECK: div
242; CHECK: div
243; CHECK: div
244; CHECK: div
245; CHECK: div
246; CHECK: div
247; CHECK: div
248; CHECK: div
249; CHECK: div
250; CHECK: div
251; CHECK: div
252; CHECK: div
253; CHECK: div
Matt Wala7fa22d82014-07-17 12:41:31 -0700254}
255
256define <16 x i8> @test_srem_v16i8(<16 x i8> %arg0, <16 x i8> %arg1) {
257entry:
258 %res = srem <16 x i8> %arg0, %arg1
259 ret <16 x i8> %res
Jan Vounga2703ae2015-02-19 11:27:44 -0800260; CHECK-LABEL: test_srem_v16i8
Matt Walaafeaee42014-08-07 13:47:30 -0700261; CHECK: idiv
262; CHECK: idiv
263; CHECK: idiv
264; CHECK: idiv
265; CHECK: idiv
266; CHECK: idiv
267; CHECK: idiv
268; CHECK: idiv
269; CHECK: idiv
270; CHECK: idiv
271; CHECK: idiv
272; CHECK: idiv
273; CHECK: idiv
274; CHECK: idiv
275; CHECK: idiv
276; CHECK: idiv
Matt Wala7fa22d82014-07-17 12:41:31 -0700277}
278
279define <8 x i16> @test_add_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) {
280entry:
281 %res = add <8 x i16> %arg0, %arg1
282 ret <8 x i16> %res
Jan Vounga2703ae2015-02-19 11:27:44 -0800283; CHECK-LABEL: test_add_v8i16
Matt Wala7fa22d82014-07-17 12:41:31 -0700284; CHECK: paddw
285}
286
287define <8 x i16> @test_and_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) {
288entry:
289 %res = and <8 x i16> %arg0, %arg1
290 ret <8 x i16> %res
Jan Vounga2703ae2015-02-19 11:27:44 -0800291; CHECK-LABEL: test_and_v8i16
Matt Wala7fa22d82014-07-17 12:41:31 -0700292; CHECK: pand
293}
294
295define <8 x i16> @test_or_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) {
296entry:
297 %res = or <8 x i16> %arg0, %arg1
298 ret <8 x i16> %res
Jan Vounga2703ae2015-02-19 11:27:44 -0800299; CHECK-LABEL: test_or_v8i16
Matt Wala7fa22d82014-07-17 12:41:31 -0700300; CHECK: por
301}
302
303define <8 x i16> @test_xor_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) {
304entry:
305 %res = xor <8 x i16> %arg0, %arg1
306 ret <8 x i16> %res
Jan Vounga2703ae2015-02-19 11:27:44 -0800307; CHECK-LABEL: test_xor_v8i16
Matt Wala7fa22d82014-07-17 12:41:31 -0700308; CHECK: pxor
309}
310
311define <8 x i16> @test_sub_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) {
312entry:
313 %res = sub <8 x i16> %arg0, %arg1
314 ret <8 x i16> %res
Jan Vounga2703ae2015-02-19 11:27:44 -0800315; CHECK-LABEL: test_sub_v8i16
Matt Wala7fa22d82014-07-17 12:41:31 -0700316; CHECK: psubw
317}
318
319define <8 x i16> @test_mul_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) {
320entry:
321 %res = mul <8 x i16> %arg0, %arg1
322 ret <8 x i16> %res
Jan Vounga2703ae2015-02-19 11:27:44 -0800323; CHECK-LABEL: test_mul_v8i16
Matt Wala7fa22d82014-07-17 12:41:31 -0700324; CHECK: pmullw
325}
326
327define <8 x i16> @test_shl_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) {
328entry:
329 %res = shl <8 x i16> %arg0, %arg1
330 ret <8 x i16> %res
Jan Vounga2703ae2015-02-19 11:27:44 -0800331; CHECK-LABEL: test_shl_v8i16
Matt Walaafeaee42014-08-07 13:47:30 -0700332; CHECK: shl
333; CHECK: shl
334; CHECK: shl
335; CHECK: shl
336; CHECK: shl
337; CHECK: shl
338; CHECK: shl
339; CHECK: shl
Matt Wala7fa22d82014-07-17 12:41:31 -0700340}
341
342define <8 x i16> @test_lshr_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) {
343entry:
344 %res = lshr <8 x i16> %arg0, %arg1
345 ret <8 x i16> %res
Jan Vounga2703ae2015-02-19 11:27:44 -0800346; CHECK-LABEL: test_lshr_v8i16
Matt Walaafeaee42014-08-07 13:47:30 -0700347; CHECK: shr
348; CHECK: shr
349; CHECK: shr
350; CHECK: shr
351; CHECK: shr
352; CHECK: shr
353; CHECK: shr
354; CHECK: shr
Matt Wala7fa22d82014-07-17 12:41:31 -0700355}
356
357define <8 x i16> @test_ashr_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) {
358entry:
359 %res = ashr <8 x i16> %arg0, %arg1
360 ret <8 x i16> %res
Jan Vounga2703ae2015-02-19 11:27:44 -0800361; CHECK-LABEL: test_ashr_v8i16
Matt Walaafeaee42014-08-07 13:47:30 -0700362; CHECK: sar
363; CHECK: sar
364; CHECK: sar
365; CHECK: sar
366; CHECK: sar
367; CHECK: sar
368; CHECK: sar
369; CHECK: sar
Matt Wala7fa22d82014-07-17 12:41:31 -0700370}
371
372define <8 x i16> @test_udiv_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) {
373entry:
374 %res = udiv <8 x i16> %arg0, %arg1
375 ret <8 x i16> %res
Jan Vounga2703ae2015-02-19 11:27:44 -0800376; CHECK-LABEL: test_udiv_v8i16
Matt Walaafeaee42014-08-07 13:47:30 -0700377; CHECK: div
378; CHECK: div
379; CHECK: div
380; CHECK: div
381; CHECK: div
382; CHECK: div
383; CHECK: div
384; CHECK: div
Matt Wala7fa22d82014-07-17 12:41:31 -0700385}
386
387define <8 x i16> @test_sdiv_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) {
388entry:
389 %res = sdiv <8 x i16> %arg0, %arg1
390 ret <8 x i16> %res
Jan Vounga2703ae2015-02-19 11:27:44 -0800391; CHECK-LABEL: test_sdiv_v8i16
Matt Walaafeaee42014-08-07 13:47:30 -0700392; CHECK: idiv
393; CHECK: idiv
394; CHECK: idiv
395; CHECK: idiv
396; CHECK: idiv
397; CHECK: idiv
398; CHECK: idiv
399; CHECK: idiv
Matt Wala7fa22d82014-07-17 12:41:31 -0700400}
401
402define <8 x i16> @test_urem_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) {
403entry:
404 %res = urem <8 x i16> %arg0, %arg1
405 ret <8 x i16> %res
Jan Vounga2703ae2015-02-19 11:27:44 -0800406; CHECK-LABEL: test_urem_v8i16
Matt Walaafeaee42014-08-07 13:47:30 -0700407; CHECK: div
408; CHECK: div
409; CHECK: div
410; CHECK: div
411; CHECK: div
412; CHECK: div
413; CHECK: div
414; CHECK: div
Matt Wala7fa22d82014-07-17 12:41:31 -0700415}
416
417define <8 x i16> @test_srem_v8i16(<8 x i16> %arg0, <8 x i16> %arg1) {
418entry:
419 %res = srem <8 x i16> %arg0, %arg1
420 ret <8 x i16> %res
Jan Vounga2703ae2015-02-19 11:27:44 -0800421; CHECK-LABEL: test_srem_v8i16
Matt Walaafeaee42014-08-07 13:47:30 -0700422; CHECK: idiv
423; CHECK: idiv
424; CHECK: idiv
425; CHECK: idiv
426; CHECK: idiv
427; CHECK: idiv
428; CHECK: idiv
429; CHECK: idiv
Matt Wala7fa22d82014-07-17 12:41:31 -0700430}
431
432define <4 x i32> @test_add_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) {
433entry:
434 %res = add <4 x i32> %arg0, %arg1
435 ret <4 x i32> %res
Jan Vounga2703ae2015-02-19 11:27:44 -0800436; CHECK-LABEL: test_add_v4i32
Matt Wala7fa22d82014-07-17 12:41:31 -0700437; CHECK: paddd
438}
439
440define <4 x i32> @test_and_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) {
441entry:
442 %res = and <4 x i32> %arg0, %arg1
443 ret <4 x i32> %res
Jan Vounga2703ae2015-02-19 11:27:44 -0800444; CHECK-LABEL: test_and_v4i32
Matt Wala7fa22d82014-07-17 12:41:31 -0700445; CHECK: pand
446}
447
448define <4 x i32> @test_or_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) {
449entry:
450 %res = or <4 x i32> %arg0, %arg1
451 ret <4 x i32> %res
Jan Vounga2703ae2015-02-19 11:27:44 -0800452; CHECK-LABEL: test_or_v4i32
Matt Wala7fa22d82014-07-17 12:41:31 -0700453; CHECK: por
454}
455
456define <4 x i32> @test_xor_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) {
457entry:
458 %res = xor <4 x i32> %arg0, %arg1
459 ret <4 x i32> %res
Jan Vounga2703ae2015-02-19 11:27:44 -0800460; CHECK-LABEL: test_xor_v4i32
Matt Wala7fa22d82014-07-17 12:41:31 -0700461; CHECK: pxor
462}
463
464define <4 x i32> @test_sub_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) {
465entry:
466 %res = sub <4 x i32> %arg0, %arg1
467 ret <4 x i32> %res
Jan Vounga2703ae2015-02-19 11:27:44 -0800468; CHECK-LABEL: test_sub_v4i32
Matt Wala7fa22d82014-07-17 12:41:31 -0700469; CHECK: psubd
470}
471
472define <4 x i32> @test_mul_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) {
473entry:
474 %res = mul <4 x i32> %arg0, %arg1
475 ret <4 x i32> %res
Jan Vounga2703ae2015-02-19 11:27:44 -0800476; CHECK-LABEL: test_mul_v4i32
Matt Wala7fa22d82014-07-17 12:41:31 -0700477; CHECK: pmuludq
478; CHECK: pmuludq
Matt Wala0a450512014-07-30 12:44:39 -0700479;
Jan Vounga2703ae2015-02-19 11:27:44 -0800480; SSE41-LABEL: test_mul_v4i32
Matt Wala0a450512014-07-30 12:44:39 -0700481; SSE41: pmulld
Matt Wala7fa22d82014-07-17 12:41:31 -0700482}
483
484define <4 x i32> @test_shl_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) {
485entry:
486 %res = shl <4 x i32> %arg0, %arg1
487 ret <4 x i32> %res
Jan Vounga2703ae2015-02-19 11:27:44 -0800488; CHECK-LABEL: test_shl_v4i32
Matt Walaafeaee42014-08-07 13:47:30 -0700489; CHECK: shl
490; CHECK: shl
491; CHECK: shl
492; CHECK: shl
Matt Wala0a450512014-07-30 12:44:39 -0700493
494; This line is to ensure that pmulld is generated in test_mul_v4i32 above.
Jan Vounga2703ae2015-02-19 11:27:44 -0800495; SSE41-LABEL: test_shl_v4i32
Matt Wala7fa22d82014-07-17 12:41:31 -0700496}
497
498define <4 x i32> @test_lshr_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) {
499entry:
500 %res = lshr <4 x i32> %arg0, %arg1
501 ret <4 x i32> %res
Jan Vounga2703ae2015-02-19 11:27:44 -0800502; CHECK-LABEL: test_lshr_v4i32
Matt Walaafeaee42014-08-07 13:47:30 -0700503; CHECK: shr
504; CHECK: shr
505; CHECK: shr
506; CHECK: shr
Matt Wala7fa22d82014-07-17 12:41:31 -0700507}
508
509define <4 x i32> @test_ashr_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) {
510entry:
511 %res = ashr <4 x i32> %arg0, %arg1
512 ret <4 x i32> %res
Jan Vounga2703ae2015-02-19 11:27:44 -0800513; CHECK-LABEL: test_ashr_v4i32
Matt Walaafeaee42014-08-07 13:47:30 -0700514; CHECK: sar
515; CHECK: sar
516; CHECK: sar
517; CHECK: sar
Matt Wala7fa22d82014-07-17 12:41:31 -0700518}
519
520define <4 x i32> @test_udiv_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) {
521entry:
522 %res = udiv <4 x i32> %arg0, %arg1
523 ret <4 x i32> %res
Jan Vounga2703ae2015-02-19 11:27:44 -0800524; CHECK-LABEL: test_udiv_v4i32
Matt Walaafeaee42014-08-07 13:47:30 -0700525; CHECK: div
526; CHECK: div
527; CHECK: div
528; CHECK: div
Matt Wala7fa22d82014-07-17 12:41:31 -0700529}
530
531define <4 x i32> @test_sdiv_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) {
532entry:
533 %res = sdiv <4 x i32> %arg0, %arg1
534 ret <4 x i32> %res
Jan Vounga2703ae2015-02-19 11:27:44 -0800535; CHECK-LABEL: test_sdiv_v4i32
Matt Walaafeaee42014-08-07 13:47:30 -0700536; CHECK: idiv
537; CHECK: idiv
538; CHECK: idiv
539; CHECK: idiv
Matt Wala7fa22d82014-07-17 12:41:31 -0700540}
541
542define <4 x i32> @test_urem_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) {
543entry:
544 %res = urem <4 x i32> %arg0, %arg1
545 ret <4 x i32> %res
Jan Vounga2703ae2015-02-19 11:27:44 -0800546; CHECK-LABEL: test_urem_v4i32
Matt Walaafeaee42014-08-07 13:47:30 -0700547; CHECK: div
548; CHECK: div
549; CHECK: div
550; CHECK: div
Matt Wala7fa22d82014-07-17 12:41:31 -0700551}
552
553define <4 x i32> @test_srem_v4i32(<4 x i32> %arg0, <4 x i32> %arg1) {
554entry:
555 %res = srem <4 x i32> %arg0, %arg1
556 ret <4 x i32> %res
Jan Vounga2703ae2015-02-19 11:27:44 -0800557; CHECK-LABEL: test_srem_v4i32
Matt Walaafeaee42014-08-07 13:47:30 -0700558; CHECK: idiv
559; CHECK: idiv
560; CHECK: idiv
561; CHECK: idiv
Matt Wala8d1072e2014-07-11 15:43:51 -0700562}