Fix a FIXME. _foo.eh symbols are currently always exported so that the linker
[oota-llvm.git] / test / CodeGen / X86 / vec_ext_inreg.ll
1 ; RUN: llc < %s -march=x86-64 
2 ; RUN: llc < %s -march=x86-64 -disable-mmx
3
4 define <8 x i32> @a(<8 x i32> %a) nounwind {
5   %b = trunc <8 x i32> %a to <8 x i16>
6   %c = sext <8 x i16> %b to <8 x i32>
7   ret <8 x i32> %c
8 }
9
10 define <3 x i32> @b(<3 x i32> %a) nounwind {
11   %b = trunc <3 x i32> %a to <3 x i16>
12   %c = sext <3 x i16> %b to <3 x i32>
13   ret <3 x i32> %c
14 }
15
16 define <1 x i32> @c(<1 x i32> %a) nounwind {
17   %b = trunc <1 x i32> %a to <1 x i16>
18   %c = sext <1 x i16> %b to <1 x i32>
19   ret <1 x i32> %c
20 }
21
22 define <8 x i32> @d(<8 x i32> %a) nounwind {
23   %b = trunc <8 x i32> %a to <8 x i16>
24   %c = zext <8 x i16> %b to <8 x i32>
25   ret <8 x i32> %c
26 }
27
28 define <3 x i32> @e(<3 x i32> %a) nounwind {
29   %b = trunc <3 x i32> %a to <3 x i16>
30   %c = zext <3 x i16> %b to <3 x i32>
31   ret <3 x i32> %c
32 }
33
34 define <1 x i32> @f(<1 x i32> %a) nounwind {
35   %b = trunc <1 x i32> %a to <1 x i16>
36   %c = zext <1 x i16> %b to <1 x i32>
37   ret <1 x i32> %c
38 }