1 ; RUN: llc < %s -mtriple=i386-apple-darwin -mattr=-avx,+sse | FileCheck %s
2 ; RUN: llc < %s -mtriple=i386-apple-darwin -mcpu=knl | FileCheck %s
4 define <4 x float> @test_x86_sse_add_ss(<4 x float> %a0, <4 x float> %a1) {
6 %res = call <4 x float> @llvm.x86.sse.add.ss(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1]
9 declare <4 x float> @llvm.x86.sse.add.ss(<4 x float>, <4 x float>) nounwind readnone
12 define <4 x float> @test_x86_sse_cmp_ps(<4 x float> %a0, <4 x float> %a1) {
14 %res = call <4 x float> @llvm.x86.sse.cmp.ps(<4 x float> %a0, <4 x float> %a1, i8 7) ; <<4 x float>> [#uses=1]
17 declare <4 x float> @llvm.x86.sse.cmp.ps(<4 x float>, <4 x float>, i8) nounwind readnone
20 define <4 x float> @test_x86_sse_cmp_ss(<4 x float> %a0, <4 x float> %a1) {
22 %res = call <4 x float> @llvm.x86.sse.cmp.ss(<4 x float> %a0, <4 x float> %a1, i8 7) ; <<4 x float>> [#uses=1]
25 declare <4 x float> @llvm.x86.sse.cmp.ss(<4 x float>, <4 x float>, i8) nounwind readnone
28 define i32 @test_x86_sse_comieq_ss(<4 x float> %a0, <4 x float> %a1) {
32 %res = call i32 @llvm.x86.sse.comieq.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
35 declare i32 @llvm.x86.sse.comieq.ss(<4 x float>, <4 x float>) nounwind readnone
38 define i32 @test_x86_sse_comige_ss(<4 x float> %a0, <4 x float> %a1) {
42 %res = call i32 @llvm.x86.sse.comige.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
45 declare i32 @llvm.x86.sse.comige.ss(<4 x float>, <4 x float>) nounwind readnone
48 define i32 @test_x86_sse_comigt_ss(<4 x float> %a0, <4 x float> %a1) {
52 %res = call i32 @llvm.x86.sse.comigt.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
55 declare i32 @llvm.x86.sse.comigt.ss(<4 x float>, <4 x float>) nounwind readnone
58 define i32 @test_x86_sse_comile_ss(<4 x float> %a0, <4 x float> %a1) {
62 %res = call i32 @llvm.x86.sse.comile.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
65 declare i32 @llvm.x86.sse.comile.ss(<4 x float>, <4 x float>) nounwind readnone
68 define i32 @test_x86_sse_comilt_ss(<4 x float> %a0, <4 x float> %a1) {
71 %res = call i32 @llvm.x86.sse.comilt.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
74 declare i32 @llvm.x86.sse.comilt.ss(<4 x float>, <4 x float>) nounwind readnone
77 define i32 @test_x86_sse_comineq_ss(<4 x float> %a0, <4 x float> %a1) {
81 %res = call i32 @llvm.x86.sse.comineq.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
84 declare i32 @llvm.x86.sse.comineq.ss(<4 x float>, <4 x float>) nounwind readnone
87 define <4 x float> @test_x86_sse_cvtsi2ss(<4 x float> %a0) {
90 %res = call <4 x float> @llvm.x86.sse.cvtsi2ss(<4 x float> %a0, i32 7) ; <<4 x float>> [#uses=1]
93 declare <4 x float> @llvm.x86.sse.cvtsi2ss(<4 x float>, i32) nounwind readnone
96 define i32 @test_x86_sse_cvtss2si(<4 x float> %a0) {
98 %res = call i32 @llvm.x86.sse.cvtss2si(<4 x float> %a0) ; <i32> [#uses=1]
101 declare i32 @llvm.x86.sse.cvtss2si(<4 x float>) nounwind readnone
104 define i32 @test_x86_sse_cvttss2si(<4 x float> %a0) {
106 %res = call i32 @llvm.x86.sse.cvttss2si(<4 x float> %a0) ; <i32> [#uses=1]
109 declare i32 @llvm.x86.sse.cvttss2si(<4 x float>) nounwind readnone
112 define <4 x float> @test_x86_sse_div_ss(<4 x float> %a0, <4 x float> %a1) {
114 %res = call <4 x float> @llvm.x86.sse.div.ss(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1]
117 declare <4 x float> @llvm.x86.sse.div.ss(<4 x float>, <4 x float>) nounwind readnone
120 define void @test_x86_sse_ldmxcsr(i8* %a0) {
123 call void @llvm.x86.sse.ldmxcsr(i8* %a0)
126 declare void @llvm.x86.sse.ldmxcsr(i8*) nounwind
130 define <4 x float> @test_x86_sse_max_ps(<4 x float> %a0, <4 x float> %a1) {
132 %res = call <4 x float> @llvm.x86.sse.max.ps(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1]
135 declare <4 x float> @llvm.x86.sse.max.ps(<4 x float>, <4 x float>) nounwind readnone
138 define <4 x float> @test_x86_sse_max_ss(<4 x float> %a0, <4 x float> %a1) {
140 %res = call <4 x float> @llvm.x86.sse.max.ss(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1]
143 declare <4 x float> @llvm.x86.sse.max.ss(<4 x float>, <4 x float>) nounwind readnone
146 define <4 x float> @test_x86_sse_min_ps(<4 x float> %a0, <4 x float> %a1) {
148 %res = call <4 x float> @llvm.x86.sse.min.ps(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1]
151 declare <4 x float> @llvm.x86.sse.min.ps(<4 x float>, <4 x float>) nounwind readnone
154 define <4 x float> @test_x86_sse_min_ss(<4 x float> %a0, <4 x float> %a1) {
156 %res = call <4 x float> @llvm.x86.sse.min.ss(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1]
159 declare <4 x float> @llvm.x86.sse.min.ss(<4 x float>, <4 x float>) nounwind readnone
162 define i32 @test_x86_sse_movmsk_ps(<4 x float> %a0) {
164 %res = call i32 @llvm.x86.sse.movmsk.ps(<4 x float> %a0) ; <i32> [#uses=1]
167 declare i32 @llvm.x86.sse.movmsk.ps(<4 x float>) nounwind readnone
171 define <4 x float> @test_x86_sse_mul_ss(<4 x float> %a0, <4 x float> %a1) {
173 %res = call <4 x float> @llvm.x86.sse.mul.ss(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1]
176 declare <4 x float> @llvm.x86.sse.mul.ss(<4 x float>, <4 x float>) nounwind readnone
179 define <4 x float> @test_x86_sse_rcp_ps(<4 x float> %a0) {
181 %res = call <4 x float> @llvm.x86.sse.rcp.ps(<4 x float> %a0) ; <<4 x float>> [#uses=1]
184 declare <4 x float> @llvm.x86.sse.rcp.ps(<4 x float>) nounwind readnone
187 define <4 x float> @test_x86_sse_rcp_ss(<4 x float> %a0) {
189 %res = call <4 x float> @llvm.x86.sse.rcp.ss(<4 x float> %a0) ; <<4 x float>> [#uses=1]
192 declare <4 x float> @llvm.x86.sse.rcp.ss(<4 x float>) nounwind readnone
195 define <4 x float> @test_x86_sse_rsqrt_ps(<4 x float> %a0) {
197 %res = call <4 x float> @llvm.x86.sse.rsqrt.ps(<4 x float> %a0) ; <<4 x float>> [#uses=1]
200 declare <4 x float> @llvm.x86.sse.rsqrt.ps(<4 x float>) nounwind readnone
203 define <4 x float> @test_x86_sse_rsqrt_ss(<4 x float> %a0) {
205 %res = call <4 x float> @llvm.x86.sse.rsqrt.ss(<4 x float> %a0) ; <<4 x float>> [#uses=1]
208 declare <4 x float> @llvm.x86.sse.rsqrt.ss(<4 x float>) nounwind readnone
211 define <4 x float> @test_x86_sse_sqrt_ps(<4 x float> %a0) {
213 %res = call <4 x float> @llvm.x86.sse.sqrt.ps(<4 x float> %a0) ; <<4 x float>> [#uses=1]
216 declare <4 x float> @llvm.x86.sse.sqrt.ps(<4 x float>) nounwind readnone
219 define <4 x float> @test_x86_sse_sqrt_ss(<4 x float> %a0) {
221 %res = call <4 x float> @llvm.x86.sse.sqrt.ss(<4 x float> %a0) ; <<4 x float>> [#uses=1]
224 declare <4 x float> @llvm.x86.sse.sqrt.ss(<4 x float>) nounwind readnone
227 define void @test_x86_sse_stmxcsr(i8* %a0) {
230 call void @llvm.x86.sse.stmxcsr(i8* %a0)
233 declare void @llvm.x86.sse.stmxcsr(i8*) nounwind
236 define void @test_x86_sse_storeu_ps(i8* %a0, <4 x float> %a1) {
239 call void @llvm.x86.sse.storeu.ps(i8* %a0, <4 x float> %a1)
242 declare void @llvm.x86.sse.storeu.ps(i8*, <4 x float>) nounwind
245 define <4 x float> @test_x86_sse_sub_ss(<4 x float> %a0, <4 x float> %a1) {
247 %res = call <4 x float> @llvm.x86.sse.sub.ss(<4 x float> %a0, <4 x float> %a1) ; <<4 x float>> [#uses=1]
250 declare <4 x float> @llvm.x86.sse.sub.ss(<4 x float>, <4 x float>) nounwind readnone
253 define i32 @test_x86_sse_ucomieq_ss(<4 x float> %a0, <4 x float> %a1) {
257 %res = call i32 @llvm.x86.sse.ucomieq.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
260 declare i32 @llvm.x86.sse.ucomieq.ss(<4 x float>, <4 x float>) nounwind readnone
263 define i32 @test_x86_sse_ucomige_ss(<4 x float> %a0, <4 x float> %a1) {
267 %res = call i32 @llvm.x86.sse.ucomige.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
270 declare i32 @llvm.x86.sse.ucomige.ss(<4 x float>, <4 x float>) nounwind readnone
273 define i32 @test_x86_sse_ucomigt_ss(<4 x float> %a0, <4 x float> %a1) {
277 %res = call i32 @llvm.x86.sse.ucomigt.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
280 declare i32 @llvm.x86.sse.ucomigt.ss(<4 x float>, <4 x float>) nounwind readnone
283 define i32 @test_x86_sse_ucomile_ss(<4 x float> %a0, <4 x float> %a1) {
287 %res = call i32 @llvm.x86.sse.ucomile.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
290 declare i32 @llvm.x86.sse.ucomile.ss(<4 x float>, <4 x float>) nounwind readnone
293 define i32 @test_x86_sse_ucomilt_ss(<4 x float> %a0, <4 x float> %a1) {
296 %res = call i32 @llvm.x86.sse.ucomilt.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
299 declare i32 @llvm.x86.sse.ucomilt.ss(<4 x float>, <4 x float>) nounwind readnone
302 define i32 @test_x86_sse_ucomineq_ss(<4 x float> %a0, <4 x float> %a1) {
306 %res = call i32 @llvm.x86.sse.ucomineq.ss(<4 x float> %a0, <4 x float> %a1) ; <i32> [#uses=1]
309 declare i32 @llvm.x86.sse.ucomineq.ss(<4 x float>, <4 x float>) nounwind readnone