blob: 162f29d59eafffeb709d2703a597142e36371a45 [file] [log] [blame]
Bruno Cardoso Lopes6a32adc2011-07-25 23:05:25 +00001; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=corei7-avx -mattr=+avx | FileCheck %s
Bruno Cardoso Lopes8c05a852010-08-12 02:06:36 +00002
3@x = common global <8 x float> zeroinitializer, align 32
4@y = common global <4 x double> zeroinitializer, align 32
Bruno Cardoso Lopesb33ea562011-08-09 03:04:23 +00005@z = common global <4 x float> zeroinitializer, align 16
Bruno Cardoso Lopes8c05a852010-08-12 02:06:36 +00006
Bruno Cardoso Lopesb33ea562011-08-09 03:04:23 +00007define void @zero128() nounwind ssp {
8entry:
9 ; CHECK: vxorps
10 ; CHECK: vmovaps
11 store <4 x float> zeroinitializer, <4 x float>* @z, align 16
12 ret void
13}
14
15define void @zero256() nounwind ssp {
Bruno Cardoso Lopes8c05a852010-08-12 02:06:36 +000016entry:
17 ; CHECK: vxorps
18 ; CHECK: vmovaps
19 ; CHECK: vmovaps
20 store <8 x float> zeroinitializer, <8 x float>* @x, align 32
21 store <4 x double> zeroinitializer, <4 x double>* @y, align 32
22 ret void
23}
Bruno Cardoso Lopes863bd9d2011-07-25 23:05:32 +000024
25; CHECK: vpcmpeqd
26; CHECK: vinsertf128 $1
27define void @ones([0 x float]* nocapture %RET, [0 x float]* nocapture %aFOO) nounwind {
28allocas:
29 %ptr2vec615 = bitcast [0 x float]* %RET to <8 x float>*
30 store <8 x float> <float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float
310xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float
320xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000>, <8 x
33float>* %ptr2vec615, align 32
34 ret void
35}
Bruno Cardoso Lopes531f19f2011-08-01 19:51:53 +000036
37; CHECK: vpcmpeqd
38; CHECK: vinsertf128 $1
39define void @ones2([0 x i32]* nocapture %RET, [0 x i32]* nocapture %aFOO) nounwind {
40allocas:
41 %ptr2vec615 = bitcast [0 x i32]* %RET to <8 x i32>*
42 store <8 x i32> <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>, <8 x i32>* %ptr2vec615, align 32
43 ret void
44}
Bruno Cardoso Lopes59353b42011-08-11 18:59:13 +000045
46;;; Just make sure this doesn't crash
47; CHECK: _ISelCrash
48define <4 x i64> @ISelCrash(<4 x i64> %a) nounwind uwtable readnone ssp {
49entry:
50 %shuffle = shufflevector <4 x i64> %a, <4 x i64> undef, <4 x i32> <i32 2, i32 3, i32 4, i32 4>
51 ret <4 x i64> %shuffle
52}