1 ; RUN: opt -mtriple=x86_64-apple-darwin -mcpu=core2 -cost-model -analyze < %s | FileCheck --check-prefix=SSE2 %s
3 define <2 x double> @sitofpv2i8v2double(<2 x i8> %a) {
4 ; SSE2: sitofpv2i8v2double
5 ; SSE2: cost of 20 {{.*}} sitofp
6 %1 = sitofp <2 x i8> %a to <2 x double>
10 define <4 x double> @sitofpv4i8v4double(<4 x i8> %a) {
11 ; SSE2: sitofpv4i8v4double
12 ; SSE2: cost of 40 {{.*}} sitofp
13 %1 = sitofp <4 x i8> %a to <4 x double>
17 define <8 x double> @sitofpv8i8v8double(<8 x i8> %a) {
18 ; SSE2: sitofpv8i8v8double
19 ; SSE2: cost of 80 {{.*}} sitofp
20 %1 = sitofp <8 x i8> %a to <8 x double>
24 define <16 x double> @sitofpv16i8v16double(<16 x i8> %a) {
25 ; SSE2: sitofpv16i8v16double
26 ; SSE2: cost of 160 {{.*}} sitofp
27 %1 = sitofp <16 x i8> %a to <16 x double>
31 define <32 x double> @sitofpv32i8v32double(<32 x i8> %a) {
32 ; SSE2: sitofpv32i8v32double
33 ; SSE2: cost of 320 {{.*}} sitofp
34 %1 = sitofp <32 x i8> %a to <32 x double>
38 define <2 x double> @sitofpv2i16v2double(<2 x i16> %a) {
39 ; SSE2: sitofpv2i16v2double
40 ; SSE2: cost of 20 {{.*}} sitofp
41 %1 = sitofp <2 x i16> %a to <2 x double>
45 define <4 x double> @sitofpv4i16v4double(<4 x i16> %a) {
46 ; SSE2: sitofpv4i16v4double
47 ; SSE2: cost of 40 {{.*}} sitofp
48 %1 = sitofp <4 x i16> %a to <4 x double>
52 define <8 x double> @sitofpv8i16v8double(<8 x i16> %a) {
53 ; SSE2: sitofpv8i16v8double
54 ; SSE2: cost of 80 {{.*}} sitofp
55 %1 = sitofp <8 x i16> %a to <8 x double>
59 define <16 x double> @sitofpv16i16v16double(<16 x i16> %a) {
60 ; SSE2: sitofpv16i16v16double
61 ; SSE2: cost of 160 {{.*}} sitofp
62 %1 = sitofp <16 x i16> %a to <16 x double>
66 define <32 x double> @sitofpv32i16v32double(<32 x i16> %a) {
67 ; SSE2: sitofpv32i16v32double
68 ; SSE2: cost of 320 {{.*}} sitofp
69 %1 = sitofp <32 x i16> %a to <32 x double>
73 define <2 x double> @sitofpv2i32v2double(<2 x i32> %a) {
74 ; SSE2: sitofpv2i32v2double
75 ; SSE2: cost of 20 {{.*}} sitofp
76 %1 = sitofp <2 x i32> %a to <2 x double>
80 define <4 x double> @sitofpv4i32v4double(<4 x i32> %a) {
81 ; SSE2: sitofpv4i32v4double
82 ; SSE2: cost of 40 {{.*}} sitofp
83 %1 = sitofp <4 x i32> %a to <4 x double>
87 define <8 x double> @sitofpv8i32v8double(<8 x i32> %a) {
88 ; SSE2: sitofpv8i32v8double
89 ; SSE2: cost of 80 {{.*}} sitofp
90 %1 = sitofp <8 x i32> %a to <8 x double>
94 define <16 x double> @sitofpv16i32v16double(<16 x i32> %a) {
95 ; SSE2: sitofpv16i32v16double
96 ; SSE2: cost of 160 {{.*}} sitofp
97 %1 = sitofp <16 x i32> %a to <16 x double>
101 define <32 x double> @sitofpv32i32v32double(<32 x i32> %a) {
102 ; SSE2: sitofpv32i32v32double
103 ; SSE2: cost of 320 {{.*}} sitofp
104 %1 = sitofp <32 x i32> %a to <32 x double>
108 define <2 x double> @sitofpv2i64v2double(<2 x i64> %a) {
109 ; SSE2: sitofpv2i64v2double
110 ; SSE2: cost of 20 {{.*}} sitofp
111 %1 = sitofp <2 x i64> %a to <2 x double>
115 define <4 x double> @sitofpv4i64v4double(<4 x i64> %a) {
116 ; SSE2: sitofpv4i64v4double
117 ; SSE2: cost of 40 {{.*}} sitofp
118 %1 = sitofp <4 x i64> %a to <4 x double>
122 define <8 x double> @sitofpv8i64v8double(<8 x i64> %a) {
123 %1 = sitofp <8 x i64> %a to <8 x double>
124 ; SSE2: sitofpv8i64v8double
125 ; SSE2: cost of 80 {{.*}} sitofp
129 define <16 x double> @sitofpv16i64v16double(<16 x i64> %a) {
130 ; SSE2: sitofpv16i64v16double
131 ; SSE2: cost of 160 {{.*}} sitofp
132 %1 = sitofp <16 x i64> %a to <16 x double>
136 define <32 x double> @sitofpv32i64v32double(<32 x i64> %a) {
137 ; SSE2: sitofpv32i64v32double
138 ; SSE2: cost of 320 {{.*}} sitofp
139 %1 = sitofp <32 x i64> %a to <32 x double>
143 define <2 x float> @sitofpv2i8v2float(<2 x i8> %a) {
144 ; SSE2: sitofpv2i8v2float
145 ; SSE2: cost of 15 {{.*}} sitofp
146 %1 = sitofp <2 x i8> %a to <2 x float>
150 define <4 x float> @sitofpv4i8v4float(<4 x i8> %a) {
151 ; SSE2: sitofpv4i8v4float
152 ; SSE2: cost of 15 {{.*}} sitofp
153 %1 = sitofp <4 x i8> %a to <4 x float>
157 define <8 x float> @sitofpv8i8v8float(<8 x i8> %a) {
158 ; SSE2: sitofpv8i8v8float
159 ; SSE2: cost of 15 {{.*}} sitofp
160 %1 = sitofp <8 x i8> %a to <8 x float>
164 define <16 x float> @sitofpv16i8v16float(<16 x i8> %a) {
165 ; SSE2: sitofpv16i8v16float
166 ; SSE2: cost of 8 {{.*}} sitofp
167 %1 = sitofp <16 x i8> %a to <16 x float>
171 define <32 x float> @sitofpv32i8v32float(<32 x i8> %a) {
172 ; SSE2: sitofpv32i8v32float
173 ; SSE2: cost of 16 {{.*}} sitofp
174 %1 = sitofp <32 x i8> %a to <32 x float>
178 define <2 x float> @sitofpv2i16v2float(<2 x i16> %a) {
179 ; SSE2: sitofpv2i16v2float
180 ; SSE2: cost of 15 {{.*}} sitofp
181 %1 = sitofp <2 x i16> %a to <2 x float>
185 define <4 x float> @sitofpv4i16v4float(<4 x i16> %a) {
186 ; SSE2: sitofpv4i16v4float
187 ; SSE2: cost of 15 {{.*}} sitofp
188 %1 = sitofp <4 x i16> %a to <4 x float>
192 define <8 x float> @sitofpv8i16v8float(<8 x i16> %a) {
193 ; SSE2: sitofpv8i16v8float
194 ; SSE2: cost of 15 {{.*}} sitofp
195 %1 = sitofp <8 x i16> %a to <8 x float>
199 define <16 x float> @sitofpv16i16v16float(<16 x i16> %a) {
200 ; SSE2: sitofpv16i16v16float
201 ; SSE2: cost of 30 {{.*}} sitofp
202 %1 = sitofp <16 x i16> %a to <16 x float>
206 define <32 x float> @sitofpv32i16v32float(<32 x i16> %a) {
207 ; SSE2: sitofpv32i16v32float
208 ; SSE2: cost of 60 {{.*}} sitofp
209 %1 = sitofp <32 x i16> %a to <32 x float>
213 define <2 x float> @sitofpv2i32v2float(<2 x i32> %a) {
214 ; SSE2: sitofpv2i32v2float
215 ; SSE2: cost of 15 {{.*}} sitofp
216 %1 = sitofp <2 x i32> %a to <2 x float>
220 define <4 x float> @sitofpv4i32v4float(<4 x i32> %a) {
221 ; SSE2: sitofpv4i32v4float
222 ; SSE2: cost of 15 {{.*}} sitofp
223 %1 = sitofp <4 x i32> %a to <4 x float>
227 define <8 x float> @sitofpv8i32v8float(<8 x i32> %a) {
228 ; SSE2: sitofpv8i32v8float
229 ; SSE2: cost of 30 {{.*}} sitofp
230 %1 = sitofp <8 x i32> %a to <8 x float>
234 define <16 x float> @sitofpv16i32v16float(<16 x i32> %a) {
235 ; SSE2: sitofpv16i32v16float
236 ; SSE2: cost of 60 {{.*}} sitofp
237 %1 = sitofp <16 x i32> %a to <16 x float>
241 define <32 x float> @sitofpv32i32v32float(<32 x i32> %a) {
242 ; SSE2: sitofpv32i32v32float
243 ; SSE2: cost of 120 {{.*}} sitofp
244 %1 = sitofp <32 x i32> %a to <32 x float>
248 define <2 x float> @sitofpv2i64v2float(<2 x i64> %a) {
249 ; SSE2: sitofpv2i64v2float
250 ; SSE2: cost of 15 {{.*}} sitofp
251 %1 = sitofp <2 x i64> %a to <2 x float>
255 define <4 x float> @sitofpv4i64v4float(<4 x i64> %a) {
256 ; SSE2: sitofpv4i64v4float
257 ; SSE2: cost of 30 {{.*}} sitofp
258 %1 = sitofp <4 x i64> %a to <4 x float>
262 define <8 x float> @sitofpv8i64v8float(<8 x i64> %a) {
263 ; SSE2: sitofpv8i64v8float
264 ; SSE2: cost of 60 {{.*}} sitofp
265 %1 = sitofp <8 x i64> %a to <8 x float>
269 define <16 x float> @sitofpv16i64v16float(<16 x i64> %a) {
270 ; SSE2: sitofpv16i64v16float
271 ; SSE2: cost of 120 {{.*}} sitofp
272 %1 = sitofp <16 x i64> %a to <16 x float>
276 define <32 x float> @sitofpv32i64v32float(<32 x i64> %a) {
277 ; SSE2: sitofpv32i64v32float
278 ; SSE2: cost of 240 {{.*}} sitofp
279 %1 = sitofp <32 x i64> %a to <32 x float>