blob: a973befdafe7d1c1cd7967b2793ce68f7322b306 [file] [log] [blame]
Michael Liaoe26b0312012-10-10 18:04:52 +00001; RUN: llc < %s -march=x86 -mcpu=corei7 | FileCheck %s
2; RUN: llc < %s -march=x86 -mcpu=core-avx-i | FileCheck %s --check-prefix=AVX
Michael Liaoe999b862012-10-10 16:53:28 +00003
4define <1 x float> @test1(<1 x double>* %p) nounwind {
5; CHECK: test1
6; CHECK: cvtsd2ss
7; CHECK: ret
8; AVX: test1
9; AVX: vcvtsd2ss
10; AVX: ret
11 %x = load <1 x double>* %p
12 %y = fptrunc <1 x double> %x to <1 x float>
13 ret <1 x float> %y
14}
15
16define <2 x float> @test2(<2 x double>* %p) nounwind {
17; CHECK: test2
18; CHECK: cvtpd2ps {{[0-9]*}}(%{{.*}})
19; CHECK: ret
20; AVX: test2
21; AVX: vcvtpd2psx {{[0-9]*}}(%{{.*}})
22; AVX: ret
23 %x = load <2 x double>* %p
24 %y = fptrunc <2 x double> %x to <2 x float>
25 ret <2 x float> %y
26}
27
28define <4 x float> @test3(<4 x double>* %p) nounwind {
29; CHECK: test3
30; CHECK: cvtpd2ps {{[0-9]*}}(%{{.*}})
31; CHECK: cvtpd2ps {{[0-9]*}}(%{{.*}})
32; CHECK: movlhps
33; CHECK: ret
34; AVX: test3
35; AVX: vcvtpd2psy {{[0-9]*}}(%{{.*}})
36; AVX: ret
37 %x = load <4 x double>* %p
38 %y = fptrunc <4 x double> %x to <4 x float>
39 ret <4 x float> %y
40}
41
42define <8 x float> @test4(<8 x double>* %p) nounwind {
43; CHECK: test4
44; CHECK: cvtpd2ps {{[0-9]*}}(%{{.*}})
45; CHECK: cvtpd2ps {{[0-9]*}}(%{{.*}})
46; CHECK: movlhps
47; CHECK: cvtpd2ps {{[0-9]*}}(%{{.*}})
48; CHECK: cvtpd2ps {{[0-9]*}}(%{{.*}})
49; CHECK: movlhps
50; CHECK: ret
51; AVX: test4
Nadav Rotem7b3120b2013-01-19 08:38:41 +000052; AVX: vcvtpd2psy
53; AVX: vcvtpd2psy
Michael Liaoe999b862012-10-10 16:53:28 +000054; AVX: vinsertf128
55; AVX: ret
56 %x = load <8 x double>* %p
57 %y = fptrunc <8 x double> %x to <8 x float>
58 ret <8 x float> %y
59}
60
61