blob: c2c3e2d082fab7b507b31544360b3e34c7a9de6d [file] [log] [blame]
John Thompson45c21ff2010-11-02 23:01:44 +00001; RUN: llc < %s -march=x86
2; ModuleID = 'mult-alt-x86.c'
3target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f80:128:128-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32"
4target triple = "i686-pc-win32"
5
6@mout0 = common global i32 0, align 4
7@min1 = common global i32 0, align 4
8@dout0 = common global double 0.000000e+000, align 8
9@din1 = common global double 0.000000e+000, align 8
10@marray = common global [2 x i32] zeroinitializer, align 4
11
12define void @single_R() nounwind {
13entry:
14 %tmp = load i32* @min1, align 4
15 %0 = call i32 asm "foo $1,$0", "=R,R,~{dirflag},~{fpsr},~{flags}"(i32 %tmp) nounwind
16 store i32 %0, i32* @mout0, align 4
17 ret void
18}
19
20define void @single_q() nounwind {
21entry:
22 %tmp = load i32* @min1, align 4
23 %0 = call i32 asm "foo $1,$0", "=q,q,~{dirflag},~{fpsr},~{flags}"(i32 %tmp) nounwind
24 store i32 %0, i32* @mout0, align 4
25 ret void
26}
27
28define void @single_Q() nounwind {
29entry:
30 %tmp = load i32* @min1, align 4
31 %0 = call i32 asm "foo $1,$0", "=Q,Q,~{dirflag},~{fpsr},~{flags}"(i32 %tmp) nounwind
32 store i32 %0, i32* @mout0, align 4
33 ret void
34}
35
36define void @single_a() nounwind {
37entry:
38 %tmp = load i32* @min1, align 4
39 %0 = call i32 asm "foo $1,$0", "={ax},{ax},~{dirflag},~{fpsr},~{flags}"(i32 %tmp) nounwind
40 store i32 %0, i32* @mout0, align 4
41 ret void
42}
43
44define void @single_b() nounwind {
45entry:
46 %tmp = load i32* @min1, align 4
47 %0 = call i32 asm "foo $1,$0", "={bx},{bx},~{dirflag},~{fpsr},~{flags}"(i32 %tmp) nounwind
48 store i32 %0, i32* @mout0, align 4
49 ret void
50}
51
52define void @single_c() nounwind {
53entry:
54 %tmp = load i32* @min1, align 4
55 %0 = call i32 asm "foo $1,$0", "={cx},{cx},~{dirflag},~{fpsr},~{flags}"(i32 %tmp) nounwind
56 store i32 %0, i32* @mout0, align 4
57 ret void
58}
59
60define void @single_d() nounwind {
61entry:
62 %tmp = load i32* @min1, align 4
63 %0 = call i32 asm "foo $1,$0", "={dx},{dx},~{dirflag},~{fpsr},~{flags}"(i32 %tmp) nounwind
64 store i32 %0, i32* @mout0, align 4
65 ret void
66}
67
68define void @single_S() nounwind {
69entry:
70 %tmp = load i32* @min1, align 4
71 %0 = call i32 asm "foo $1,$0", "={si},{si},~{dirflag},~{fpsr},~{flags}"(i32 %tmp) nounwind
72 store i32 %0, i32* @mout0, align 4
73 ret void
74}
75
76define void @single_D() nounwind {
77entry:
78 %tmp = load i32* @min1, align 4
79 %0 = call i32 asm "foo $1,$0", "={di},{di},~{dirflag},~{fpsr},~{flags}"(i32 %tmp) nounwind
80 store i32 %0, i32* @mout0, align 4
81 ret void
82}
83
84define void @single_A() nounwind {
85entry:
86 %tmp = load i32* @min1, align 4
87 %0 = call i32 asm "foo $1,$0", "=A,A,~{dirflag},~{fpsr},~{flags}"(i32 %tmp) nounwind
88 store i32 %0, i32* @mout0, align 4
89 ret void
90}
91
92define void @single_f() nounwind {
93entry:
94 ret void
95}
96
97define void @single_t() nounwind {
98entry:
99 ret void
100}
101
102define void @single_u() nounwind {
103entry:
104 ret void
105}
106
107define void @single_y() nounwind {
108entry:
109 %tmp = load double* @din1, align 8
110 %0 = call double asm "foo $1,$0", "=y,y,~{dirflag},~{fpsr},~{flags}"(double %tmp) nounwind
111 store double %0, double* @dout0, align 8
112 ret void
113}
114
115define void @single_x() nounwind {
116entry:
117 %tmp = load double* @din1, align 8
118 %0 = call double asm "foo $1,$0", "=x,x,~{dirflag},~{fpsr},~{flags}"(double %tmp) nounwind
119 store double %0, double* @dout0, align 8
120 ret void
121}
122
123define void @single_Y0() nounwind {
124entry:
125 ret void
126}
127
128define void @single_I() nounwind {
129entry:
130 call void asm "foo $1,$0", "=*m,I,~{dirflag},~{fpsr},~{flags}"(i32* @mout0, i32 1) nounwind
131 ret void
132}
133
134define void @single_J() nounwind {
135entry:
136 call void asm "foo $1,$0", "=*m,J,~{dirflag},~{fpsr},~{flags}"(i32* @mout0, i32 1) nounwind
137 ret void
138}
139
140define void @single_K() nounwind {
141entry:
142 call void asm "foo $1,$0", "=*m,K,~{dirflag},~{fpsr},~{flags}"(i32* @mout0, i32 1) nounwind
143 ret void
144}
145
146define void @single_L() nounwind {
147entry:
148; Missing lowering support for 'L'.
149; call void asm "foo $1,$0", "=*m,L,~{dirflag},~{fpsr},~{flags}"(i32* @mout0, i32 1) nounwind
150 ret void
151}
152
153define void @single_M() nounwind {
154entry:
155; Missing lowering support for 'M'.
156; call void asm "foo $1,$0", "=*m,M,~{dirflag},~{fpsr},~{flags}"(i32* @mout0, i32 1) nounwind
157 ret void
158}
159
160define void @single_N() nounwind {
161entry:
162 call void asm "foo $1,$0", "=*m,N,~{dirflag},~{fpsr},~{flags}"(i32* @mout0, i32 1) nounwind
163 ret void
164}
165
166define void @single_G() nounwind {
167entry:
168; Missing lowering support for 'G'.
169; call void asm "foo $1,$0", "=*m,G,~{dirflag},~{fpsr},~{flags}"(i32* @mout0, double 1.000000e+000) nounwind
170 ret void
171}
172
173define void @single_C() nounwind {
174entry:
175; Missing lowering support for 'C'.
176; call void asm "foo $1,$0", "=*m,C,~{dirflag},~{fpsr},~{flags}"(i32* @mout0, double 1.000000e+000) nounwind
177 ret void
178}
179
180define void @single_e() nounwind {
181entry:
182 call void asm "foo $1,$0", "=*m,e,~{dirflag},~{fpsr},~{flags}"(i32* @mout0, i32 1) nounwind
183 ret void
184}
185
186define void @single_Z() nounwind {
187entry:
188 call void asm "foo $1,$0", "=*m,Z,~{dirflag},~{fpsr},~{flags}"(i32* @mout0, i32 1) nounwind
189 ret void
190}
191
192define void @multi_R() nounwind {
193entry:
194 %tmp = load i32* @min1, align 4
195 call void asm "foo $1,$0", "=*r|R|m,r|R|m,~{dirflag},~{fpsr},~{flags}"(i32* @mout0, i32 %tmp) nounwind
196 ret void
197}
198
199define void @multi_q() nounwind {
200entry:
201 %tmp = load i32* @min1, align 4
202 call void asm "foo $1,$0", "=*r|q|m,r|q|m,~{dirflag},~{fpsr},~{flags}"(i32* @mout0, i32 %tmp) nounwind
203 ret void
204}
205
206define void @multi_Q() nounwind {
207entry:
208 %tmp = load i32* @min1, align 4
209 call void asm "foo $1,$0", "=*r|Q|m,r|Q|m,~{dirflag},~{fpsr},~{flags}"(i32* @mout0, i32 %tmp) nounwind
210 ret void
211}
212
213define void @multi_a() nounwind {
214entry:
215 %tmp = load i32* @min1, align 4
216 call void asm "foo $1,$0", "=*r|{ax}|m,r|{ax}|m,~{dirflag},~{fpsr},~{flags}"(i32* @mout0, i32 %tmp) nounwind
217 ret void
218}
219
220define void @multi_b() nounwind {
221entry:
222 %tmp = load i32* @min1, align 4
223 call void asm "foo $1,$0", "=*r|{bx}|m,r|{bx}|m,~{dirflag},~{fpsr},~{flags}"(i32* @mout0, i32 %tmp) nounwind
224 ret void
225}
226
227define void @multi_c() nounwind {
228entry:
229 %tmp = load i32* @min1, align 4
230 call void asm "foo $1,$0", "=*r|{cx}|m,r|{cx}|m,~{dirflag},~{fpsr},~{flags}"(i32* @mout0, i32 %tmp) nounwind
231 ret void
232}
233
234define void @multi_d() nounwind {
235entry:
236 %tmp = load i32* @min1, align 4
237 call void asm "foo $1,$0", "=*r|{dx}|m,r|{dx},~{dirflag},~{fpsr},~{flags}"(i32* @mout0, i32 %tmp) nounwind
238 ret void
239}
240
241define void @multi_S() nounwind {
242entry:
243 %tmp = load i32* @min1, align 4
244 call void asm "foo $1,$0", "=*r|{si}|m,r|{si}|m,~{dirflag},~{fpsr},~{flags}"(i32* @mout0, i32 %tmp) nounwind
245 ret void
246}
247
248define void @multi_D() nounwind {
249entry:
250 %tmp = load i32* @min1, align 4
251 call void asm "foo $1,$0", "=*r|{di}|m,r|{di}|m,~{dirflag},~{fpsr},~{flags}"(i32* @mout0, i32 %tmp) nounwind
252 ret void
253}
254
255define void @multi_A() nounwind {
256entry:
257 %tmp = load i32* @min1, align 4
258 call void asm "foo $1,$0", "=*r|A|m,r|A|m,~{dirflag},~{fpsr},~{flags}"(i32* @mout0, i32 %tmp) nounwind
259 ret void
260}
261
262define void @multi_f() nounwind {
263entry:
264 ret void
265}
266
267define void @multi_t() nounwind {
268entry:
269 ret void
270}
271
272define void @multi_u() nounwind {
273entry:
274 ret void
275}
276
277define void @multi_y() nounwind {
278entry:
279 %tmp = load double* @din1, align 8
280 call void asm "foo $1,$0", "=*r|y|m,r|y|m,~{dirflag},~{fpsr},~{flags}"(double* @dout0, double %tmp) nounwind
281 ret void
282}
283
284define void @multi_x() nounwind {
285entry:
286 %tmp = load double* @din1, align 8
287 call void asm "foo $1,$0", "=*r|x|m,r|x|m,~{dirflag},~{fpsr},~{flags}"(double* @dout0, double %tmp) nounwind
288 ret void
289}
290
291define void @multi_Y0() nounwind {
292entry:
293 ret void
294}
295
296define void @multi_I() nounwind {
297entry:
298 call void asm "foo $1,$0", "=*r|m|m,r|I|m,~{dirflag},~{fpsr},~{flags}"(i32* @mout0, i32 1) nounwind
299 ret void
300}
301
302define void @multi_J() nounwind {
303entry:
304 call void asm "foo $1,$0", "=*r|m|m,r|J|m,~{dirflag},~{fpsr},~{flags}"(i32* @mout0, i32 1) nounwind
305 ret void
306}
307
308define void @multi_K() nounwind {
309entry:
310 call void asm "foo $1,$0", "=*r|m|m,r|K|m,~{dirflag},~{fpsr},~{flags}"(i32* @mout0, i32 1) nounwind
311 ret void
312}
313
314define void @multi_L() nounwind {
315entry:
316; Missing lowering support for 'L'.
317; call void asm "foo $1,$0", "=*r|m|m,r|L|m,~{dirflag},~{fpsr},~{flags}"(i32* @mout0, i32 1) nounwind
318 ret void
319}
320
321define void @multi_M() nounwind {
322entry:
323; Missing lowering support for 'M'.
324; call void asm "foo $1,$0", "=*r|m|m,r|M|m,~{dirflag},~{fpsr},~{flags}"(i32* @mout0, i32 1) nounwind
325 ret void
326}
327
328define void @multi_N() nounwind {
329entry:
330 call void asm "foo $1,$0", "=*r|m|m,r|N|m,~{dirflag},~{fpsr},~{flags}"(i32* @mout0, i32 1) nounwind
331 ret void
332}
333
334define void @multi_G() nounwind {
335entry:
336; Missing lowering support for 'G'.
337; call void asm "foo $1,$0", "=*r|m|m,r|G|m,~{dirflag},~{fpsr},~{flags}"(i32* @mout0, double 1.000000e+000) nounwind
338 ret void
339}
340
341define void @multi_C() nounwind {
342entry:
343; Missing lowering support for 'C'.
344; call void asm "foo $1,$0", "=*r|m|m,r|C|m,~{dirflag},~{fpsr},~{flags}"(i32* @mout0, double 1.000000e+000) nounwind
345 ret void
346}
347
348define void @multi_e() nounwind {
349entry:
350 call void asm "foo $1,$0", "=*r|m|m,r|e|m,~{dirflag},~{fpsr},~{flags}"(i32* @mout0, i32 1) nounwind
351 ret void
352}
353
354define void @multi_Z() nounwind {
355entry:
356 call void asm "foo $1,$0", "=*r|m|m,r|Z|m,~{dirflag},~{fpsr},~{flags}"(i32* @mout0, i32 1) nounwind
357 ret void
358}