blob: b47491335a31202546344b4d003b69c6d27426ea [file] [log] [blame]
Elena Demikhovskydd904782012-04-22 13:22:48 +00001; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=core-avx2 -mattr=+avx2 | FileCheck %s
2
3; CHECK: trunc4
4; CHECK: vpermd
5; CHECK-NOT: vinsert
6; CHECK: ret
7define <4 x i32> @trunc4(<4 x i64> %A) nounwind {
8 %B = trunc <4 x i64> %A to <4 x i32>
9 ret <4 x i32>%B
10}
11
12; CHECK: trunc8
13; CHECK: vpshufb
14; CHECK-NOT: vinsert
15; CHECK: ret
16
17define <8 x i16> @trunc8(<8 x i32> %A) nounwind {
18 %B = trunc <8 x i32> %A to <8 x i16>
19 ret <8 x i16>%B
20}
21
22; CHECK: sext4
23; CHECK: vpmovsxdq
24; CHECK-NOT: vinsert
25; CHECK: ret
26define <4 x i64> @sext4(<4 x i32> %A) nounwind {
27 %B = sext <4 x i32> %A to <4 x i64>
28 ret <4 x i64>%B
29}
30
31; CHECK: sext8
32; CHECK: vpmovsxwd
33; CHECK-NOT: vinsert
34; CHECK: ret
35define <8 x i32> @sext8(<8 x i16> %A) nounwind {
36 %B = sext <8 x i16> %A to <8 x i32>
37 ret <8 x i32>%B
38}
39
40; CHECK: zext4
41; CHECK: vpmovzxdq
42; CHECK-NOT: vinsert
43; CHECK: ret
44define <4 x i64> @zext4(<4 x i32> %A) nounwind {
45 %B = zext <4 x i32> %A to <4 x i64>
46 ret <4 x i64>%B
47}
48
49; CHECK: zext8
50; CHECK: vpmovzxwd
51; CHECK-NOT: vinsert
52; CHECK: ret
53define <8 x i32> @zext8(<8 x i16> %A) nounwind {
54 %B = zext <8 x i16> %A to <8 x i32>
55 ret <8 x i32>%B
56}
57; CHECK: zext_8i8_8i32
58; CHECK: vpmovzxwd
59; CHECK: vpand
60; CHECK: ret
61define <8 x i32> @zext_8i8_8i32(<8 x i8> %A) nounwind {
62 %B = zext <8 x i8> %A to <8 x i32>
63 ret <8 x i32>%B
64}
65
66
67
68