Add support for Andes NDS32:
[deliverable/binutils-gdb.git] / gas / testsuite / gas / tic4x / addressing.s
CommitLineData
48c5eb8a
SS
1 ;;
2 ;; test all addressing modes and register constraints
3 ;; (types/classes is read from include/opcodes/tic4x.h)
4 ;;
5 .text
6start:
7
8 ;;
9 ;; Type B - infix condition branch
10 ;;
11Type_BI:bu Type_BI ; Unconditional branch (00000)
12 bc Type_BI ; Carry branch (00001)
13 blo Type_BI ; Lower than branch (00001)
14 bls Type_BI ; Lower than or same branch (00010)
15 bhi Type_BI ; Higher than branch (00011)
16 bhs Type_BI ; Higher than or same branch (00100)
17 bnc Type_BI ; No carry branch (00100)
18 beq Type_BI ; Equal to branch (00101)
19 bz Type_BI ; Zero branch (00101)
20 bne Type_BI ; Not equal to branch (00110)
21 bnz Type_BI ; Not zero branch (00110)
22 blt Type_BI ; Less than branch (00111)
23 bn Type_BI ; Negative branch (00111)
24 ble Type_BI ; Less than or equal to branch (01000)
25 bgt Type_BI ; Greater than branch (01001)
26 bp Type_BI ; Positive branch (01001)
27 bge Type_BI ; Greater than or equal branch (01010)
28 bnn Type_BI ; Nonnegative branch (01010)
29 bnv Type_BI ; No overflow branch (01000)
30 bv Type_BI ; Overflow branch (01101)
31 bnuf Type_BI ; No underflow branch (01110)
32 buf Type_BI ; Underflow branch (01111)
33 bnlv Type_BI ; No latched overflow branch (10000)
34 blv Type_BI ; Latched overflow branch (10001)
35 bnluf Type_BI ; No latched FP underflow branch (10010)
36 bluf Type_BI ; Latched FP underflow branch (10011)
37 bzuf Type_BI ; Zero or FP underflow branch (10100)
38 b Type_BI ; Unconditional branch (00000)
39
40 ;;
41 ;; Type C - infix condition load
42 ;;
43Type_CI:ldiu R0,R0 ; Unconditional load (00000)
44 ldic R0,R0 ; Carry load (00001)
45 ldilo R0,R0 ; Lower than load (00001)
46 ldils R0,R0 ; Lower than or same load (00010)
47 ldihi R0,R0 ; Higher than load (00011)
48 ldihs R0,R0 ; Higher than or same load (00100)
49 ldinc R0,R0 ; No carry load (00100)
50 ldieq R0,R0 ; Equal to load (00101)
51 ldiz R0,R0 ; Zero load (00101)
52 ldine R0,R0 ; Not equal to load (00110)
53 ldinz R0,R0 ; Not zero load (00110)
54 ldil R0,R0 ; Less than load (00111)
55 ldin R0,R0 ; Negative load (00111)
56 ldile R0,R0 ; Less than or equal to load (01000)
57 ldigt R0,R0 ; Greater than load (01001)
58 ldip R0,R0 ; Positive load (01001)
59 ldige R0,R0 ; Greater than or equal load (01010)
60 ldinn R0,R0 ; Nonnegative load (01010)
61 ldinv R0,R0 ; No overflow load (01000)
62 ldiv R0,R0 ; Overflow load (01101)
63 ldinuf R0,R0 ; No underflow load (01110)
64 ldiuf R0,R0 ; Underflow load (01111)
65 ldinlv R0,R0 ; No latched overflow load (10000)
66 ldilv R0,R0 ; Latched overflow load (10001)
67 ldinluf R0,R0 ; No latched FP underflow load (10010)
68 ldiluf R0,R0 ; Latched FP underflow load (10011)
69 ldizuf R0,R0 ; Zero or FP underflow load (10100)
70
71 ;;
72 ;; Type * - Indirect (full)
73 ;;
74Type_ind:
75 ldi *AR0,R0 ; Indirect addressing (G=10)
76 ldi *+AR0(5),R0 ; with predisplacement add
77 ldi *-AR0(5),R0 ; with predisplacement subtract
78 ldi *++AR0(5),R0 ; with predisplacement add and modify
79 ldi *--AR0(5),R0 ; with predisplacement subtract and modify
80 ldi *AR0++(5),R0 ; with postdisplacement add and modify
81 ldi *AR0--(5),R0 ; with postdisplacement subtract and modify
82 ldi *AR0++(5)%,R0 ; with postdisplacement add and circular modify
83 ldi *AR0--(5)%,R0 ; with postdisplacement subtract and circular modify
84 ldi *+AR0(IR0),R0 ; with predisplacement add
85 ldi *-AR0(IR0),R0 ; with predisplacement subtract
86 ldi *++AR0(IR0),R0 ; with predisplacement add and modify
87 ldi *--AR0(IR0),R0 ; with predisplacement subtract and modify
88 ldi *AR0++(IR0),R0 ; with postdisplacement add and modify
89 ldi *AR0--(IR0),R0 ; with postdisplacement subtract and modify
90 ldi *AR0++(IR0)%,R0 ; with postdisplacement add and circular modify
91 ldi *AR0--(IR0)%,R0 ; with postdisplacement subtract and circular modify
92 ldi *AR0++(IR0)B,R0 ; with postincrement add and bit-reversed modify
93 ldi *AR0++,R0 ; Same as *AR0++(1)
94
95 ;;
96 ;; Type # - Direct for ldp
97 ;;
98Type_ldp:
99 ldp 12
100 ldp @start
101 ldp start
102
103 ;;
104 ;; Type @ - Direct
105 ;;
106Type_dir:
107 ldi @start,R0
108 ldi start,R0
109 ldi @16,R0
110 ldi @65535,R0
111
112 ;;
113 ;; Type A - Address register
114 ;;
115Type_A: dbc AR0,R0
116 dbc AR2,R0
117 dbc AR7,R0
118
119 ;;
120 ;; Type B - Unsigned integer (PC)
121 ;;
122Type_B: br start
123 br 0x809800
124
125 ;;
126 ;; Type C - Indirect
127 ;;
128 .ifdef TEST_C4X
129Type_C: addc3 *+AR0(5),R0,R0
130 .endif
131
132 ;;
133 ;; Type E - Register (all)
134 ;;
135Type_E: andn3 R0,R0,R0
136 andn3 AR0,R0,R0
137 addc3 DP,R0,R0
138 andn3 R7,R0,R0
139
140 ;;
141 ;; Type e - Register (0-11)
142 ;;
143Type_ee:subf3 R7,R0,R0
144 addf3 R0,R0,R0
145 addf3 R7,R0,R0
146 cmpf3 R7,R0
147 .ifdef TEST_C4X
148 addf3 R11,R0,R0
149 .endif
150
151 ;;
152 ;; Type F - Short float immediate
153 ;;
154Type_F: ldf 0,R0
155 ldf 3.5,R0
156 ldf -3.5,R0
157 ldf 0e-3.5e-1,R0
158
159 ;;
160 ;; Type G - Register (all)
161 ;;
162Type_G: andn3 R0,AR0,R0
163 addc3 R0,DP,R0
164 addc3 R0,R0,R0
165 andn3 R0,R7,R0
166
167 ;;
168 ;; Type g - Register (0-11)
169 ;;
170Type_gg:subf3 R0,R7,R0
171 addf3 R0,R0,R0
172 addf3 R0,R7,R0
173 cmpf3 R0,R7
174 .ifdef TEST_C4X
175 addf3 R0,R11,R0
176 .endif
177
178 ;;
179 ;; Type H - Register (0-7)
180 ;;
181Type_H: stf R0,*AR0 &|| stf R0,*AR0
182 stf R0,*AR0 &|| stf R2,*AR0
183 stf R0,*AR0 &|| stf R7,*AR0
184
185 ;;
186 ;; Type I - Indirect
187 ;;
188Type_I: addf3 *AR0,R0,R0 ; Indirect addressing (G=10)
189 addf3 *+AR0(1),R0,R0 ; with predisplacement add
190 addf3 *-AR0(1),R0,R0 ; with predisplacement subtract
191 addf3 *++AR0(1),R0,R0 ; with predisplacement add and modify
192 addf3 *--AR0(1),R0,R0 ; with predisplacement subtract and modify
193 addf3 *AR0++(1),R0,R0 ; with postdisplacement add and modify
194 addf3 *AR0--(1),R0,R0 ; with postdisplacement subtract and modify
195 addf3 *AR0++(1)%,R0,R0; with postdisplacement add and circular modify
196 addf3 *AR0--(1)%,R0,R0; with postdisplacement subtract and circular modify
197 addf3 *+AR0(IR0),R0,R0; with predisplacement add
198 addf3 *-AR0(IR0),R0,R0; with predisplacement subtract
199 addf3 *++AR0(IR0),R0,R0; with predisplacement add and modify
200 addf3 *--AR0(IR0),R0,R0; with predisplacement subtract and modify
201 addf3 *AR0++(IR0),R0,R0; with postdisplacement add and modify
202 addf3 *AR0--(IR0),R0,R0; with postdisplacement subtract and modify
203 addf3 *AR0++(IR0)%,R0,R0; with postdisplacement add and circular modify
204 addf3 *AR0--(IR0)%,R0,R0; with postdisplacement subtract and circular modify
205 addf3 *AR0++(IR0)B,R0,R0; with postincrement add and bit-reversed modify
206 addf3 *AR0++,R0,R0 ; Same as *AR0++(1)
207
208 ;;
209 ;; Type J - Indirect
210 ;;
211Type_J: addf3 R0,*AR0,R0 ; Indirect addressing (G=10)
212 addf3 R0,*+AR0(1),R0 ; with predisplacement add
213 addf3 R0,*-AR0(1),R0 ; with predisplacement subtract
214 addf3 R0,*++AR0(1),R0 ; with predisplacement add and modify
215 addf3 R0,*--AR0(1),R0 ; with predisplacement subtract and modify
216 addf3 R0,*AR0++(1),R0 ; with postdisplacement add and modify
217 addf3 R0,*AR0--(1),R0 ; with postdisplacement subtract and modify
218 addf3 R0,*AR0++(1)%,R0; with postdisplacement add and circular modify
219 addf3 R0,*AR0--(1)%,R0; with postdisplacement subtract and circular modify
220 addf3 R0,*+AR0(IR0),R0; with predisplacement add
221 addf3 R0,*-AR0(IR0),R0; with predisplacement subtract
222 addf3 R0,*++AR0(IR0),R0; with predisplacement add and modify
223 addf3 R0,*--AR0(IR0),R0; with predisplacement subtract and modify
224 addf3 R0,*AR0++(IR0),R0; with postdisplacement add and modify
225 addf3 R0,*AR0--(IR0),R0; with postdisplacement subtract and modify
226 addf3 R0,*AR0++(IR0)%,R0; with postdisplacement add and circular modify
227 addf3 R0,*AR0--(IR0)%,R0; with postdisplacement subtract and circular modify
228 addf3 R0,*AR0++(IR0)B,R0; with postincrement add and bit-reversed modify
229 addf3 R0,*AR0++,R0 ; Same as *AR0++(1)
230
231 ;;
232 ;; Type K - Register (0-7)
233 ;;
9c87d6c7 234Type_K: ldf *AR0,R0 &|| ldf *AR0,R1
48c5eb8a
SS
235 ldf *AR0,R0 &|| ldf *AR0,R2
236 ldf *AR0,R0 &|| ldf *AR0,R7
237
238 ;;
239 ;; Type L - Register (0-7)
240 ;;
241Type_L: stf R0,*AR0 &|| stf R0,*AR0
242 stf R2,*AR0 &|| stf R0,*AR0
243 stf R7,*AR0 &|| stf R0,*AR0
244
245 ;;
246 ;; Type M - Register (2-3)
247 ;;
248Type_M: mpyf3 *AR0,*AR0,R0 &|| addf3 R0,R0,R2
249 mpyf3 *AR0,*AR0,R0 &|| addf3 R0,R0,R3
250
251 ;;
252 ;; Type N - Register (0-1)
253 ;;
254Type_N: mpyf3 *AR0,*AR0,R0 &|| addf3 R0,R0,R2
255 mpyf3 *AR0,*AR0,R1 &|| addf3 R0,R0,R2
256
257 ;;
258 ;; Type O - Indirect
259 ;;
260 .ifdef TEST_C4X
261Type_O: addc3 *+AR0(5),*+AR0(5),R0
262 .endif
263
264 ;;
265 ;; Type P - Displacement (PC rel)
266 ;;
267Type_P: callc start
268 callc 1
269
270 ;;
271 ;; Type Q - Register (all)
272 ;;
273Type_Q: ldi R0,R0
274 ldi AR0,R0
275 ldi DP,R0
276 ldi SP,R0
277
278 ;;
279 ;; Type q - Register (0-11)
280 ;;
281Type_qq:fix R0,R0
282 fix R7,R0
283 .ifdef TEST_C4X
284 fix R11,R0
285 absf R11,R0
286 .endif
287
288 ;;
289 ;; Type R - Register (all)
290 ;;
291Type_R: ldi R0,R0
292 ldi R0,AR0
293 ldi R0,DP
294 ldi R0,SP
295
296 ;;
297 ;; Type r - Register (0-11)
298 ;;
299Type_rr:ldf R0,R0
300 ldf R0,R7
301 .ifdef TEST_C4X
302 ldf R0,R11
303 .endif
304
305 ;;
306 ;; Type S - Signed immediate
307 ;;
308Type_S: ldi 0,R0
309 ldi -123,R0
310 ldi 6543,R0
311 ldi -32768, R0
312
313 ;;
314 ;; Type T - Integer
315 ;;
316 .ifdef TEST_C4X
317Type_T: stik 0,*AR0
318 stik 12,*AR0
319 stik -5,*AR0
320 .endif
321
322 ;;
323 ;; Type U - Unsigned integer
324 ;;
325Type_U: and 0,R0
326 and 256,R0
327 and 65535,R0
328
329 ;;
330 ;; Type V - Vector
331 ;;
332Type_V: trapu 12
333 trapu 0
334 trapu 31
335 .ifdef TEST_C4X
336 trapu 511
337 .endif
338
339 ;;
340 ;; Type W - Short int
341 ;;
342 .ifdef TEST_C4X
343Type_W: addc3 -3,R0,R0
344 addc3 5,R0,R0
345 .endif
346
347 ;;
348 ;; Type X - Expansion register
349 ;;
350 .ifdef TEST_C4X
351Type_X: ldep IVTP,R0
352 ldep TVTP,R0
353 .endif
354
355 ;;
356 ;; Type Y - Address register
357 ;;
358 .ifdef TEST_C4X
359Type_Y: lda R0,AR0
360 lda R0,DP
361 lda R0,SP
362 lda R0,IR0
363 .endif
364
365 ;;
366 ;; Type Z - Expansion register
367 ;;
368 .ifdef TEST_C4X
369Type_Z: ldpe R0,IVTP
370 ldpe R0,TVTP
371 .endif
This page took 0.47287 seconds and 4 git commands to generate.