1; RUN: llc < %s -mtriple=x86_64-apple-darwin -march=x86 -mcpu=corei7-avx | FileCheck %s
2
3
4define <2 x double> @floor_v2f64(<2 x double> %p)
5{
6  ; CHECK: floor_v2f64
7  ; CHECK: vroundpd
8  %t = call <2 x double> @llvm.floor.v2f64(<2 x double> %p)
9  ret <2 x double> %t
10}
11declare <2 x double> @llvm.floor.v2f64(<2 x double> %p)
12
13define <4 x float> @floor_v4f32(<4 x float> %p)
14{
15  ; CHECK: floor_v4f32
16  ; CHECK: vroundps
17  %t = call <4 x float> @llvm.floor.v4f32(<4 x float> %p)
18  ret <4 x float> %t
19}
20declare <4 x float> @llvm.floor.v4f32(<4 x float> %p)
21
22define <4 x double> @floor_v4f64(<4 x double> %p)
23{
24  ; CHECK: floor_v4f64
25  ; CHECK: vroundpd
26  %t = call <4 x double> @llvm.floor.v4f64(<4 x double> %p)
27  ret <4 x double> %t
28}
29declare <4 x double> @llvm.floor.v4f64(<4 x double> %p)
30
31define <8 x float> @floor_v8f32(<8 x float> %p)
32{
33  ; CHECK: floor_v8f32
34  ; CHECK: vroundps
35  %t = call <8 x float> @llvm.floor.v8f32(<8 x float> %p)
36  ret <8 x float> %t
37}
38declare <8 x float> @llvm.floor.v8f32(<8 x float> %p)
39
40define <2 x double> @ceil_v2f64(<2 x double> %p)
41{
42  ; CHECK: ceil_v2f64
43  ; CHECK: vroundpd
44  %t = call <2 x double> @llvm.ceil.v2f64(<2 x double> %p)
45  ret <2 x double> %t
46}
47declare <2 x double> @llvm.ceil.v2f64(<2 x double> %p)
48
49define <4 x float> @ceil_v4f32(<4 x float> %p)
50{
51  ; CHECK: ceil_v4f32
52  ; CHECK: vroundps
53  %t = call <4 x float> @llvm.ceil.v4f32(<4 x float> %p)
54  ret <4 x float> %t
55}
56declare <4 x float> @llvm.ceil.v4f32(<4 x float> %p)
57
58define <4 x double> @ceil_v4f64(<4 x double> %p)
59{
60  ; CHECK: ceil_v4f64
61  ; CHECK: vroundpd
62  %t = call <4 x double> @llvm.ceil.v4f64(<4 x double> %p)
63  ret <4 x double> %t
64}
65declare <4 x double> @llvm.ceil.v4f64(<4 x double> %p)
66
67define <8 x float> @ceil_v8f32(<8 x float> %p)
68{
69  ; CHECK: ceil_v8f32
70  ; CHECK: vroundps
71  %t = call <8 x float> @llvm.ceil.v8f32(<8 x float> %p)
72  ret <8 x float> %t
73}
74declare <8 x float> @llvm.ceil.v8f32(<8 x float> %p)
75
76define <2 x double> @trunc_v2f64(<2 x double> %p)
77{
78  ; CHECK: trunc_v2f64
79  ; CHECK: vroundpd
80  %t = call <2 x double> @llvm.trunc.v2f64(<2 x double> %p)
81  ret <2 x double> %t
82}
83declare <2 x double> @llvm.trunc.v2f64(<2 x double> %p)
84
85define <4 x float> @trunc_v4f32(<4 x float> %p)
86{
87  ; CHECK: trunc_v4f32
88  ; CHECK: vroundps
89  %t = call <4 x float> @llvm.trunc.v4f32(<4 x float> %p)
90  ret <4 x float> %t
91}
92declare <4 x float> @llvm.trunc.v4f32(<4 x float> %p)
93
94define <4 x double> @trunc_v4f64(<4 x double> %p)
95{
96  ; CHECK: trunc_v4f64
97  ; CHECK: vroundpd
98  %t = call <4 x double> @llvm.trunc.v4f64(<4 x double> %p)
99  ret <4 x double> %t
100}
101declare <4 x double> @llvm.trunc.v4f64(<4 x double> %p)
102
103define <8 x float> @trunc_v8f32(<8 x float> %p)
104{
105  ; CHECK: trunc_v8f32
106  ; CHECK: vroundps
107  %t = call <8 x float> @llvm.trunc.v8f32(<8 x float> %p)
108  ret <8 x float> %t
109}
110declare <8 x float> @llvm.trunc.v8f32(<8 x float> %p)
111
112define <2 x double> @rint_v2f64(<2 x double> %p)
113{
114  ; CHECK: rint_v2f64
115  ; CHECK: vroundpd
116  %t = call <2 x double> @llvm.rint.v2f64(<2 x double> %p)
117  ret <2 x double> %t
118}
119declare <2 x double> @llvm.rint.v2f64(<2 x double> %p)
120
121define <4 x float> @rint_v4f32(<4 x float> %p)
122{
123  ; CHECK: rint_v4f32
124  ; CHECK: vroundps
125  %t = call <4 x float> @llvm.rint.v4f32(<4 x float> %p)
126  ret <4 x float> %t
127}
128declare <4 x float> @llvm.rint.v4f32(<4 x float> %p)
129
130define <4 x double> @rint_v4f64(<4 x double> %p)
131{
132  ; CHECK: rint_v4f64
133  ; CHECK: vroundpd
134  %t = call <4 x double> @llvm.rint.v4f64(<4 x double> %p)
135  ret <4 x double> %t
136}
137declare <4 x double> @llvm.rint.v4f64(<4 x double> %p)
138
139define <8 x float> @rint_v8f32(<8 x float> %p)
140{
141  ; CHECK: rint_v8f32
142  ; CHECK: vroundps
143  %t = call <8 x float> @llvm.rint.v8f32(<8 x float> %p)
144  ret <8 x float> %t
145}
146declare <8 x float> @llvm.rint.v8f32(<8 x float> %p)
147
148define <2 x double> @nearbyint_v2f64(<2 x double> %p)
149{
150  ; CHECK: nearbyint_v2f64
151  ; CHECK: vroundpd
152  %t = call <2 x double> @llvm.nearbyint.v2f64(<2 x double> %p)
153  ret <2 x double> %t
154}
155declare <2 x double> @llvm.nearbyint.v2f64(<2 x double> %p)
156
157define <4 x float> @nearbyint_v4f32(<4 x float> %p)
158{
159  ; CHECK: nearbyint_v4f32
160  ; CHECK: vroundps
161  %t = call <4 x float> @llvm.nearbyint.v4f32(<4 x float> %p)
162  ret <4 x float> %t
163}
164declare <4 x float> @llvm.nearbyint.v4f32(<4 x float> %p)
165
166define <4 x double> @nearbyint_v4f64(<4 x double> %p)
167{
168  ; CHECK: nearbyint_v4f64
169  ; CHECK: vroundpd
170  %t = call <4 x double> @llvm.nearbyint.v4f64(<4 x double> %p)
171  ret <4 x double> %t
172}
173declare <4 x double> @llvm.nearbyint.v4f64(<4 x double> %p)
174
175define <8 x float> @nearbyint_v8f32(<8 x float> %p)
176{
177  ; CHECK: nearbyint_v8f32
178  ; CHECK: vroundps
179  %t = call <8 x float> @llvm.nearbyint.v8f32(<8 x float> %p)
180  ret <8 x float> %t
181}
182declare <8 x float> @llvm.nearbyint.v8f32(<8 x float> %p)
183