1*f4a2713aSLionel Sambuc // RUN: %clang_cc1 -triple i686 -emit-llvm %s -o - | FileCheck %s
2*f4a2713aSLionel Sambuc // RUN: %clang_cc1 -triple x86_64 -emit-llvm %s -o - | FileCheck %s
3*f4a2713aSLionel Sambuc
4*f4a2713aSLionel Sambuc int mout0;
5*f4a2713aSLionel Sambuc int min1;
6*f4a2713aSLionel Sambuc int marray[2];
7*f4a2713aSLionel Sambuc double dout0;
8*f4a2713aSLionel Sambuc double din1;
9*f4a2713aSLionel Sambuc
10*f4a2713aSLionel Sambuc // CHECK: @single_R
single_R()11*f4a2713aSLionel Sambuc void single_R()
12*f4a2713aSLionel Sambuc {
13*f4a2713aSLionel Sambuc // CHECK: asm "foo $1,$0", "=R,R[[CLOBBERS:[a-zA-Z0-9@%{},~_ ]*\"]](i32 {{[a-zA-Z0-9@%]+}})
14*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=R" (mout0) : "R" (min1));
15*f4a2713aSLionel Sambuc }
16*f4a2713aSLionel Sambuc
17*f4a2713aSLionel Sambuc // CHECK: @single_q
single_q()18*f4a2713aSLionel Sambuc void single_q()
19*f4a2713aSLionel Sambuc {
20*f4a2713aSLionel Sambuc // CHECK: asm "foo $1,$0", "=q,q[[CLOBBERS]](i32 {{[a-zA-Z0-9@%]+}})
21*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=q" (mout0) : "q" (min1));
22*f4a2713aSLionel Sambuc }
23*f4a2713aSLionel Sambuc
24*f4a2713aSLionel Sambuc // CHECK: @single_Q
single_Q()25*f4a2713aSLionel Sambuc void single_Q()
26*f4a2713aSLionel Sambuc {
27*f4a2713aSLionel Sambuc // CHECK: asm "foo $1,$0", "=Q,Q[[CLOBBERS]](i32 {{[a-zA-Z0-9@%]+}})
28*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=Q" (mout0) : "Q" (min1));
29*f4a2713aSLionel Sambuc }
30*f4a2713aSLionel Sambuc
31*f4a2713aSLionel Sambuc // CHECK: @single_a
single_a()32*f4a2713aSLionel Sambuc void single_a()
33*f4a2713aSLionel Sambuc {
34*f4a2713aSLionel Sambuc // CHECK: asm "foo $1,$0", "={ax},{ax}[[CLOBBERS]](i32 {{[a-zA-Z0-9@%]+}})
35*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=a" (mout0) : "a" (min1));
36*f4a2713aSLionel Sambuc }
37*f4a2713aSLionel Sambuc
38*f4a2713aSLionel Sambuc // CHECK: @single_b
single_b()39*f4a2713aSLionel Sambuc void single_b()
40*f4a2713aSLionel Sambuc {
41*f4a2713aSLionel Sambuc // CHECK: asm "foo $1,$0", "={bx},{bx}[[CLOBBERS]](i32 {{[a-zA-Z0-9@%]+}})
42*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=b" (mout0) : "b" (min1));
43*f4a2713aSLionel Sambuc }
44*f4a2713aSLionel Sambuc
45*f4a2713aSLionel Sambuc // CHECK: @single_c
single_c()46*f4a2713aSLionel Sambuc void single_c()
47*f4a2713aSLionel Sambuc {
48*f4a2713aSLionel Sambuc // CHECK: asm "foo $1,$0", "={cx},{cx}[[CLOBBERS]](i32 {{[a-zA-Z0-9@%]+}})
49*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=c" (mout0) : "c" (min1));
50*f4a2713aSLionel Sambuc }
51*f4a2713aSLionel Sambuc
52*f4a2713aSLionel Sambuc // CHECK: @single_d
single_d()53*f4a2713aSLionel Sambuc void single_d()
54*f4a2713aSLionel Sambuc {
55*f4a2713aSLionel Sambuc // CHECK: asm "foo $1,$0", "={dx},{dx}[[CLOBBERS]](i32 {{[a-zA-Z0-9@%]+}})
56*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=d" (mout0) : "d" (min1));
57*f4a2713aSLionel Sambuc }
58*f4a2713aSLionel Sambuc
59*f4a2713aSLionel Sambuc // CHECK: @single_S
single_S()60*f4a2713aSLionel Sambuc void single_S()
61*f4a2713aSLionel Sambuc {
62*f4a2713aSLionel Sambuc // CHECK: asm "foo $1,$0", "={si},{si}[[CLOBBERS]](i32 {{[a-zA-Z0-9@%]+}})
63*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=S" (mout0) : "S" (min1));
64*f4a2713aSLionel Sambuc }
65*f4a2713aSLionel Sambuc
66*f4a2713aSLionel Sambuc // CHECK: @single_D
single_D()67*f4a2713aSLionel Sambuc void single_D()
68*f4a2713aSLionel Sambuc {
69*f4a2713aSLionel Sambuc // CHECK: asm "foo $1,$0", "={di},{di}[[CLOBBERS]](i32 {{[a-zA-Z0-9@%]+}})
70*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=D" (mout0) : "D" (min1));
71*f4a2713aSLionel Sambuc }
72*f4a2713aSLionel Sambuc
73*f4a2713aSLionel Sambuc // CHECK: @single_A
single_A()74*f4a2713aSLionel Sambuc void single_A()
75*f4a2713aSLionel Sambuc {
76*f4a2713aSLionel Sambuc // CHECK: asm "foo $1,$0", "=A,A[[CLOBBERS]](i32 {{[a-zA-Z0-9@%]+}})
77*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=A" (mout0) : "A" (min1));
78*f4a2713aSLionel Sambuc }
79*f4a2713aSLionel Sambuc
80*f4a2713aSLionel Sambuc // CHECK: @single_f
single_f()81*f4a2713aSLionel Sambuc void single_f()
82*f4a2713aSLionel Sambuc {
83*f4a2713aSLionel Sambuc //FIXME: I don't know how to do an 80387 floating point stack register operation, which I think is fp80.
84*f4a2713aSLionel Sambuc }
85*f4a2713aSLionel Sambuc
86*f4a2713aSLionel Sambuc // CHECK: @single_t
single_t()87*f4a2713aSLionel Sambuc void single_t()
88*f4a2713aSLionel Sambuc {
89*f4a2713aSLionel Sambuc //FIXME: I don't know how to do an 80387 floating point stack register operation, which I think is fp80.
90*f4a2713aSLionel Sambuc }
91*f4a2713aSLionel Sambuc
92*f4a2713aSLionel Sambuc // CHECK: @single_u
single_u()93*f4a2713aSLionel Sambuc void single_u()
94*f4a2713aSLionel Sambuc {
95*f4a2713aSLionel Sambuc //FIXME: I don't know how to do an 80387 floating point stack register operation, which I think is fp80.
96*f4a2713aSLionel Sambuc }
97*f4a2713aSLionel Sambuc
98*f4a2713aSLionel Sambuc // CHECK: @single_y
single_y()99*f4a2713aSLionel Sambuc void single_y()
100*f4a2713aSLionel Sambuc {
101*f4a2713aSLionel Sambuc // CHECK: call double asm "foo $1,$0", "=y,y[[CLOBBERS]](double {{[a-zA-Z0-9@%]+}})
102*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=y" (dout0) : "y" (din1));
103*f4a2713aSLionel Sambuc }
104*f4a2713aSLionel Sambuc
105*f4a2713aSLionel Sambuc // CHECK: @single_x
single_x()106*f4a2713aSLionel Sambuc void single_x()
107*f4a2713aSLionel Sambuc {
108*f4a2713aSLionel Sambuc // CHECK: asm "foo $1,$0", "=x,x[[CLOBBERS]](double {{[a-zA-Z0-9@%]+}})
109*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=x" (dout0) : "x" (din1));
110*f4a2713aSLionel Sambuc }
111*f4a2713aSLionel Sambuc
112*f4a2713aSLionel Sambuc // CHECK: @single_Y
single_Y0()113*f4a2713aSLionel Sambuc void single_Y0()
114*f4a2713aSLionel Sambuc {
115*f4a2713aSLionel Sambuc // Y constraint currently broken.
116*f4a2713aSLionel Sambuc //asm("foo %1,%0" : "=Y0" (mout0) : "Y0" (min1));
117*f4a2713aSLionel Sambuc //asm("foo %1,%0" : "=Yz" (mout0) : "Yz" (min1));
118*f4a2713aSLionel Sambuc //asm("foo %1,%0" : "=Yt" (mout0) : "Yt" (min1));
119*f4a2713aSLionel Sambuc //asm("foo %1,%0" : "=Yi" (mout0) : "Yi" (min1));
120*f4a2713aSLionel Sambuc //asm("foo %1,%0" : "=Ym" (mout0) : "Ym" (min1));
121*f4a2713aSLionel Sambuc }
122*f4a2713aSLionel Sambuc
123*f4a2713aSLionel Sambuc // CHECK: @single_I
single_I()124*f4a2713aSLionel Sambuc void single_I()
125*f4a2713aSLionel Sambuc {
126*f4a2713aSLionel Sambuc // CHECK: asm "foo $1,$0", "=*m,I[[CLOBBERS]](i32* @mout0, i32 1)
127*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=m" (mout0) : "I" (1));
128*f4a2713aSLionel Sambuc }
129*f4a2713aSLionel Sambuc
130*f4a2713aSLionel Sambuc // CHECK: @single_J
single_J()131*f4a2713aSLionel Sambuc void single_J()
132*f4a2713aSLionel Sambuc {
133*f4a2713aSLionel Sambuc // CHECK: asm "foo $1,$0", "=*m,J[[CLOBBERS]](i32* @mout0, i32 1)
134*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=m" (mout0) : "J" (1));
135*f4a2713aSLionel Sambuc }
136*f4a2713aSLionel Sambuc
137*f4a2713aSLionel Sambuc // CHECK: @single_K
single_K()138*f4a2713aSLionel Sambuc void single_K()
139*f4a2713aSLionel Sambuc {
140*f4a2713aSLionel Sambuc // CHECK: asm "foo $1,$0", "=*m,K[[CLOBBERS]](i32* @mout0, i32 1)
141*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=m" (mout0) : "K" (1));
142*f4a2713aSLionel Sambuc }
143*f4a2713aSLionel Sambuc
144*f4a2713aSLionel Sambuc // CHECK: @single_L
single_L()145*f4a2713aSLionel Sambuc void single_L()
146*f4a2713aSLionel Sambuc {
147*f4a2713aSLionel Sambuc // CHECK: asm "foo $1,$0", "=*m,L[[CLOBBERS]](i32* @mout0, i32 1)
148*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=m" (mout0) : "L" (1));
149*f4a2713aSLionel Sambuc }
150*f4a2713aSLionel Sambuc
151*f4a2713aSLionel Sambuc // CHECK: @single_M
single_M()152*f4a2713aSLionel Sambuc void single_M()
153*f4a2713aSLionel Sambuc {
154*f4a2713aSLionel Sambuc // CHECK: asm "foo $1,$0", "=*m,M[[CLOBBERS]](i32* @mout0, i32 1)
155*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=m" (mout0) : "M" (1));
156*f4a2713aSLionel Sambuc }
157*f4a2713aSLionel Sambuc
158*f4a2713aSLionel Sambuc // CHECK: @single_N
single_N()159*f4a2713aSLionel Sambuc void single_N()
160*f4a2713aSLionel Sambuc {
161*f4a2713aSLionel Sambuc // CHECK: asm "foo $1,$0", "=*m,N[[CLOBBERS]](i32* @mout0, i32 1)
162*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=m" (mout0) : "N" (1));
163*f4a2713aSLionel Sambuc }
164*f4a2713aSLionel Sambuc
165*f4a2713aSLionel Sambuc // CHECK: @single_G
single_G()166*f4a2713aSLionel Sambuc void single_G()
167*f4a2713aSLionel Sambuc {
168*f4a2713aSLionel Sambuc // CHECK: asm "foo $1,$0", "=*m,G[[CLOBBERS]](i32* @mout0, double {{1.[0]+e[+]*[0]+}})
169*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=m" (mout0) : "G" (1.0));
170*f4a2713aSLionel Sambuc }
171*f4a2713aSLionel Sambuc
172*f4a2713aSLionel Sambuc // CHECK: @single_C
single_C()173*f4a2713aSLionel Sambuc void single_C()
174*f4a2713aSLionel Sambuc {
175*f4a2713aSLionel Sambuc // CHECK: asm "foo $1,$0", "=*m,C[[CLOBBERS]](i32* @mout0, double {{1.[0]+e[+]*[0]+}})
176*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=m" (mout0) : "C" (1.0));
177*f4a2713aSLionel Sambuc }
178*f4a2713aSLionel Sambuc
179*f4a2713aSLionel Sambuc // CHECK: @single_e
single_e()180*f4a2713aSLionel Sambuc void single_e()
181*f4a2713aSLionel Sambuc {
182*f4a2713aSLionel Sambuc // CHECK: asm "foo $1,$0", "=*m,e[[CLOBBERS]](i32* @mout0, i32 1)
183*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=m" (mout0) : "e" (1));
184*f4a2713aSLionel Sambuc }
185*f4a2713aSLionel Sambuc
186*f4a2713aSLionel Sambuc // CHECK: @single_Z
single_Z()187*f4a2713aSLionel Sambuc void single_Z()
188*f4a2713aSLionel Sambuc {
189*f4a2713aSLionel Sambuc // CHECK: asm "foo $1,$0", "=*m,Z[[CLOBBERS]](i32* @mout0, i32 1)
190*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=m" (mout0) : "Z" (1));
191*f4a2713aSLionel Sambuc }
192*f4a2713aSLionel Sambuc
193*f4a2713aSLionel Sambuc // CHECK: @multi_R
multi_R()194*f4a2713aSLionel Sambuc void multi_R()
195*f4a2713aSLionel Sambuc {
196*f4a2713aSLionel Sambuc // CHECK: asm "foo $1,$0", "=*r|R|m,r|R|m[[CLOBBERS]](i32* @mout0, i32 {{[a-zA-Z0-9@%]+}})
197*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=r,R,m" (mout0) : "r,R,m" (min1));
198*f4a2713aSLionel Sambuc }
199*f4a2713aSLionel Sambuc
200*f4a2713aSLionel Sambuc // CHECK: @multi_q
multi_q()201*f4a2713aSLionel Sambuc void multi_q()
202*f4a2713aSLionel Sambuc {
203*f4a2713aSLionel Sambuc // CHECK: asm "foo $1,$0", "=*r|q|m,r|q|m[[CLOBBERS]](i32* @mout0, i32 {{[a-zA-Z0-9@%]+}})
204*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=r,q,m" (mout0) : "r,q,m" (min1));
205*f4a2713aSLionel Sambuc }
206*f4a2713aSLionel Sambuc
207*f4a2713aSLionel Sambuc // CHECK: @multi_Q
multi_Q()208*f4a2713aSLionel Sambuc void multi_Q()
209*f4a2713aSLionel Sambuc {
210*f4a2713aSLionel Sambuc // CHECK: asm "foo $1,$0", "=*r|Q|m,r|Q|m[[CLOBBERS]](i32* @mout0, i32 {{[a-zA-Z0-9@%]+}})
211*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=r,Q,m" (mout0) : "r,Q,m" (min1));
212*f4a2713aSLionel Sambuc }
213*f4a2713aSLionel Sambuc
214*f4a2713aSLionel Sambuc // CHECK: @multi_a
multi_a()215*f4a2713aSLionel Sambuc void multi_a()
216*f4a2713aSLionel Sambuc {
217*f4a2713aSLionel Sambuc // CHECK: asm "foo $1,$0", "=*r|{ax}|m,r|{ax}|m[[CLOBBERS]](i32* @mout0, i32 {{[a-zA-Z0-9@%]+}})
218*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=r,a,m" (mout0) : "r,a,m" (min1));
219*f4a2713aSLionel Sambuc }
220*f4a2713aSLionel Sambuc
221*f4a2713aSLionel Sambuc // CHECK: @multi_b
multi_b()222*f4a2713aSLionel Sambuc void multi_b()
223*f4a2713aSLionel Sambuc {
224*f4a2713aSLionel Sambuc // CHECK: asm "foo $1,$0", "=*r|{bx}|m,r|{bx}|m[[CLOBBERS]](i32* @mout0, i32 {{[a-zA-Z0-9@%]+}})
225*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=r,b,m" (mout0) : "r,b,m" (min1));
226*f4a2713aSLionel Sambuc }
227*f4a2713aSLionel Sambuc
228*f4a2713aSLionel Sambuc // CHECK: @multi_c
multi_c()229*f4a2713aSLionel Sambuc void multi_c()
230*f4a2713aSLionel Sambuc {
231*f4a2713aSLionel Sambuc // CHECK: asm "foo $1,$0", "=*r|{cx}|m,r|{cx}|m[[CLOBBERS]](i32* @mout0, i32 {{[a-zA-Z0-9@%]+}})
232*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=r,c,m" (mout0) : "r,c,m" (min1));
233*f4a2713aSLionel Sambuc }
234*f4a2713aSLionel Sambuc
235*f4a2713aSLionel Sambuc // CHECK: @multi_d
multi_d()236*f4a2713aSLionel Sambuc void multi_d()
237*f4a2713aSLionel Sambuc {
238*f4a2713aSLionel Sambuc // CHECK: asm "foo $1,$0", "=*r|{dx}|m,r|{dx}|m[[CLOBBERS]](i32* @mout0, i32 {{[a-zA-Z0-9@%]+}})
239*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=r,d,m" (mout0) : "r,d,m" (min1));
240*f4a2713aSLionel Sambuc }
241*f4a2713aSLionel Sambuc
242*f4a2713aSLionel Sambuc // CHECK: @multi_S
multi_S()243*f4a2713aSLionel Sambuc void multi_S()
244*f4a2713aSLionel Sambuc {
245*f4a2713aSLionel Sambuc // CHECK: asm "foo $1,$0", "=*r|{si}|m,r|{si}|m[[CLOBBERS]](i32* @mout0, i32 {{[a-zA-Z0-9@%]+}})
246*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=r,S,m" (mout0) : "r,S,m" (min1));
247*f4a2713aSLionel Sambuc }
248*f4a2713aSLionel Sambuc
249*f4a2713aSLionel Sambuc // CHECK: @multi_D
multi_D()250*f4a2713aSLionel Sambuc void multi_D()
251*f4a2713aSLionel Sambuc {
252*f4a2713aSLionel Sambuc // CHECK: asm "foo $1,$0", "=*r|{di}|m,r|{di}|m[[CLOBBERS]](i32* @mout0, i32 {{[a-zA-Z0-9@%]+}})
253*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=r,D,m" (mout0) : "r,D,m" (min1));
254*f4a2713aSLionel Sambuc }
255*f4a2713aSLionel Sambuc
256*f4a2713aSLionel Sambuc // CHECK: @multi_A
multi_A()257*f4a2713aSLionel Sambuc void multi_A()
258*f4a2713aSLionel Sambuc {
259*f4a2713aSLionel Sambuc // CHECK: asm "foo $1,$0", "=*r|A|m,r|A|m[[CLOBBERS]](i32* @mout0, i32 {{[a-zA-Z0-9@%]+}})
260*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=r,A,m" (mout0) : "r,A,m" (min1));
261*f4a2713aSLionel Sambuc }
262*f4a2713aSLionel Sambuc
263*f4a2713aSLionel Sambuc // CHECK: @multi_f
multi_f()264*f4a2713aSLionel Sambuc void multi_f()
265*f4a2713aSLionel Sambuc {
266*f4a2713aSLionel Sambuc //FIXME: I don't know how to do an 80387 floating point stack register operation, which I think is fp80.
267*f4a2713aSLionel Sambuc }
268*f4a2713aSLionel Sambuc
269*f4a2713aSLionel Sambuc // CHECK: @multi_t
multi_t()270*f4a2713aSLionel Sambuc void multi_t()
271*f4a2713aSLionel Sambuc {
272*f4a2713aSLionel Sambuc //FIXME: I don't know how to do an 80387 floating point stack register operation, which I think is fp80.
273*f4a2713aSLionel Sambuc }
274*f4a2713aSLionel Sambuc
275*f4a2713aSLionel Sambuc // CHECK: @multi_u
multi_u()276*f4a2713aSLionel Sambuc void multi_u()
277*f4a2713aSLionel Sambuc {
278*f4a2713aSLionel Sambuc //FIXME: I don't know how to do an 80387 floating point stack register operation, which I think is fp80.
279*f4a2713aSLionel Sambuc }
280*f4a2713aSLionel Sambuc
281*f4a2713aSLionel Sambuc // CHECK: @multi_y
multi_y()282*f4a2713aSLionel Sambuc void multi_y()
283*f4a2713aSLionel Sambuc {
284*f4a2713aSLionel Sambuc // CHECK: asm "foo $1,$0", "=*r|y|m,r|y|m[[CLOBBERS]](double* @dout0, double {{[a-zA-Z0-9@%]+}})
285*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=r,y,m" (dout0) : "r,y,m" (din1));
286*f4a2713aSLionel Sambuc }
287*f4a2713aSLionel Sambuc
288*f4a2713aSLionel Sambuc // CHECK: @multi_x
multi_x()289*f4a2713aSLionel Sambuc void multi_x()
290*f4a2713aSLionel Sambuc {
291*f4a2713aSLionel Sambuc // CHECK: asm "foo $1,$0", "=*r|x|m,r|x|m[[CLOBBERS]](double* @dout0, double {{[a-zA-Z0-9@%]+}})
292*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=r,x,m" (dout0) : "r,x,m" (din1));
293*f4a2713aSLionel Sambuc }
294*f4a2713aSLionel Sambuc
295*f4a2713aSLionel Sambuc // CHECK: @multi_Y
multi_Y0()296*f4a2713aSLionel Sambuc void multi_Y0()
297*f4a2713aSLionel Sambuc {
298*f4a2713aSLionel Sambuc // Y constraint currently broken.
299*f4a2713aSLionel Sambuc //asm("foo %1,%0" : "=r,Y0,m" (mout0) : "r,Y0,m" (min1));
300*f4a2713aSLionel Sambuc //asm("foo %1,%0" : "=r,Yz,m" (mout0) : "r,Yz,m" (min1));
301*f4a2713aSLionel Sambuc //asm("foo %1,%0" : "=r,Yt,m" (mout0) : "r,Yt,m" (min1));
302*f4a2713aSLionel Sambuc //asm("foo %1,%0" : "=r,Yi,m" (mout0) : "r,Yi,m" (min1));
303*f4a2713aSLionel Sambuc //asm("foo %1,%0" : "=r,Ym,m" (mout0) : "r,Ym,m" (min1));
304*f4a2713aSLionel Sambuc }
305*f4a2713aSLionel Sambuc
306*f4a2713aSLionel Sambuc // CHECK: @multi_I
multi_I()307*f4a2713aSLionel Sambuc void multi_I()
308*f4a2713aSLionel Sambuc {
309*f4a2713aSLionel Sambuc // CHECK: asm "foo $1,$0", "=*r|m|m,r|I|m[[CLOBBERS]](i32* @mout0, i32 1)
310*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=r,m,m" (mout0) : "r,I,m" (1));
311*f4a2713aSLionel Sambuc }
312*f4a2713aSLionel Sambuc
313*f4a2713aSLionel Sambuc // CHECK: @multi_J
multi_J()314*f4a2713aSLionel Sambuc void multi_J()
315*f4a2713aSLionel Sambuc {
316*f4a2713aSLionel Sambuc // CHECK: asm "foo $1,$0", "=*r|m|m,r|J|m[[CLOBBERS]](i32* @mout0, i32 1)
317*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=r,m,m" (mout0) : "r,J,m" (1));
318*f4a2713aSLionel Sambuc }
319*f4a2713aSLionel Sambuc
320*f4a2713aSLionel Sambuc // CHECK: @multi_K
multi_K()321*f4a2713aSLionel Sambuc void multi_K()
322*f4a2713aSLionel Sambuc {
323*f4a2713aSLionel Sambuc // CHECK: asm "foo $1,$0", "=*r|m|m,r|K|m[[CLOBBERS]](i32* @mout0, i32 1)
324*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=r,m,m" (mout0) : "r,K,m" (1));
325*f4a2713aSLionel Sambuc }
326*f4a2713aSLionel Sambuc
327*f4a2713aSLionel Sambuc // CHECK: @multi_L
multi_L()328*f4a2713aSLionel Sambuc void multi_L()
329*f4a2713aSLionel Sambuc {
330*f4a2713aSLionel Sambuc // CHECK: asm "foo $1,$0", "=*r|m|m,r|L|m[[CLOBBERS]](i32* @mout0, i32 1)
331*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=r,m,m" (mout0) : "r,L,m" (1));
332*f4a2713aSLionel Sambuc }
333*f4a2713aSLionel Sambuc
334*f4a2713aSLionel Sambuc // CHECK: @multi_M
multi_M()335*f4a2713aSLionel Sambuc void multi_M()
336*f4a2713aSLionel Sambuc {
337*f4a2713aSLionel Sambuc // CHECK: asm "foo $1,$0", "=*r|m|m,r|M|m[[CLOBBERS]](i32* @mout0, i32 1)
338*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=r,m,m" (mout0) : "r,M,m" (1));
339*f4a2713aSLionel Sambuc }
340*f4a2713aSLionel Sambuc
341*f4a2713aSLionel Sambuc // CHECK: @multi_N
multi_N()342*f4a2713aSLionel Sambuc void multi_N()
343*f4a2713aSLionel Sambuc {
344*f4a2713aSLionel Sambuc // CHECK: asm "foo $1,$0", "=*r|m|m,r|N|m[[CLOBBERS]](i32* @mout0, i32 1)
345*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=r,m,m" (mout0) : "r,N,m" (1));
346*f4a2713aSLionel Sambuc }
347*f4a2713aSLionel Sambuc
348*f4a2713aSLionel Sambuc // CHECK: @multi_G
multi_G()349*f4a2713aSLionel Sambuc void multi_G()
350*f4a2713aSLionel Sambuc {
351*f4a2713aSLionel Sambuc // CHECK: asm "foo $1,$0", "=*r|m|m,r|G|m[[CLOBBERS]](i32* @mout0, double {{1.[0]+e[+]*[0]+}})
352*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=r,m,m" (mout0) : "r,G,m" (1.0));
353*f4a2713aSLionel Sambuc }
354*f4a2713aSLionel Sambuc
355*f4a2713aSLionel Sambuc // CHECK: @multi_C
multi_C()356*f4a2713aSLionel Sambuc void multi_C()
357*f4a2713aSLionel Sambuc {
358*f4a2713aSLionel Sambuc // CHECK: asm "foo $1,$0", "=*r|m|m,r|C|m[[CLOBBERS]](i32* @mout0, double {{1.[0]+e[+]*[0]+}})
359*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=r,m,m" (mout0) : "r,C,m" (1.0));
360*f4a2713aSLionel Sambuc }
361*f4a2713aSLionel Sambuc
362*f4a2713aSLionel Sambuc // CHECK: @multi_e
multi_e()363*f4a2713aSLionel Sambuc void multi_e()
364*f4a2713aSLionel Sambuc {
365*f4a2713aSLionel Sambuc // CHECK: asm "foo $1,$0", "=*r|m|m,r|e|m[[CLOBBERS]](i32* @mout0, i32 1)
366*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=r,m,m" (mout0) : "r,e,m" (1));
367*f4a2713aSLionel Sambuc }
368*f4a2713aSLionel Sambuc
369*f4a2713aSLionel Sambuc // CHECK: @multi_Z
multi_Z()370*f4a2713aSLionel Sambuc void multi_Z()
371*f4a2713aSLionel Sambuc {
372*f4a2713aSLionel Sambuc // CHECK: asm "foo $1,$0", "=*r|m|m,r|Z|m[[CLOBBERS]](i32* @mout0, i32 1)
373*f4a2713aSLionel Sambuc asm("foo %1,%0" : "=r,m,m" (mout0) : "r,Z,m" (1));
374*f4a2713aSLionel Sambuc }
375