2 B condition 16--20 U,C,Z,LO,HI, etc.
3 C condition 23--27 U,C,Z,LO,HI, etc.
9 Argument types bits [classes] - example
10 -----------------------------------------------------------
11 * indirect (all) 0--15 [A,AB,AU,AF,A2,A3,A6,A7,AY,B,BA,BB,BI,B6,B7] - *+AR0(5), *++AR0(IR0)
12 # direct (for LDP) 0--15 [Z] - @start, start
13 @ direct 0--15 [A,AB,AU,AF,A3,A6,A7,AY,B,BA,BB,BI,B6,B7] - @start, start
14 A address register 22--24 [D] - AR0, AR7
15 B unsigned integer 0--23 [I,I2] - @start, start (absolute on C3x, relative on C4x)
16 C indirect (disp - C4x) 0--7 [S,SC,S2,T,TC,T2,T2C] - *+AR0(5)
17 E register (all) 0--7 [T,TC,T2,T2C] - R0, R7, R11, AR0, DP
18 e register (0-11) 0--7 [S,SC,S2] - R0, R7, R11
19 F short float immediate 0--15 [AF,B,BA,BB] - 3.5, 0e-3.5e-1
20 G register (all) 8--15 [T,TC,T2,T2C] - R0, R7, R11, AR0, DP
21 g register (0-11) 0--7 [S,SC,S2] - R0, R7, R11
22 H register (0-7) 18--16 [LS,M,P,Q] - R0, R7
23 I indirect (no disp) 0--7 [S,SC,S2,T,TC,T2,T2C] - *+AR0(1), *+AR0(IR0)
24 i indirect (enhanced) 0--7 [LL,LS,M,P,Q,QC] - *+AR0(1), R5
25 J indirect (no disp) 8--15 [LL,LS,P,Q,QC,S,SC,S2,T,TC,T2,T2C] - *+AR0(1), *+AR0(IR0)
26 j indirect (enhanced) 8--15 [M] - *+AR0(1), R5
27 K register 19--21 [LL,M,Q,QC] - R0, R7
28 L register 22--24 [LL,LS,P,Q,QC] - R0, R7
29 M register (R2,R3) 22--22 [M] R2, R3
30 N register (R0,R1) 23--23 [M] R0, R1
31 O indirect(disp - C4x) 8--15 [S,SC,S2,T,TC,T2] - *+AR0(5)
32 P displacement (PC Rel) 0--15 [D,J,JS] - @start, start
33 Q register (all) 0--15 [A,AB,AU,A2,A3,AY,BA,BI,D,I2,J,JS] - R0, AR0, DP, SP
34 q register (0-11) 0--15 [AF,B,BB] - R0, R7, R11
35 R register (all) 16--20 [A,AB,AU,AF,A6,A7,R,T,TC] - R0, AR0, DP, SP
36 r register (0-11) 16--20 [B,BA,BB,BI,B6,B7,RF,S,SC] - R0, R1, R11
37 S short int immediate 0--15 [A,AB,AY,BI] - -5, 5
38 T integer (C4x) 16--20 [Z] - -5, 12
39 U unsigned integer 0--15 [AU,A3] - 0, 65535
40 V vector (C4x: 0--8) 0--4 [Z] - 25, 7
41 W short int (C4x) 0--7 [T,TC,T2,T2C] - -3, 5
42 X expansion reg (C4x) 0--4 [Z] - IVTP, TVTP
43 Y address reg (C4x) 16--20 [Z] - AR0, DP, SP, IR0
44 Z expansion reg (C4x) 16--20 [Z] - IVTP, TVTP
47 /* A: General 2-operand integer operations
49 src = Register (Q), Direct (@), Indirect (*), Signed immediate (S)
51 Instr: 15/8 - ABSI, ADDC, ADDI, ASH, CMPI, LDI, LSH, MPYI, NEGB, NEGI,
52 SUBB, SUBC, SUBI, SUBRB, SUBRI, C4x: LBn, LHn, LWLn, LWRn,
53 MBn, MHn, MPYSHI, MPYUHI
55 #define A_CLASS(name, level) \
58 name AR1, AR0 /* Q;R */ &\
60 name @start, AR0 /* @,R */ &\
61 name *+AR0(5), AR0 /* *,R */ &\
62 name -5, AR0 /* S,R */ &\
66 /* AB: General 2-operand integer operation with condition
69 src = Register (Q), Direct (@), Indirect (*), Signed immediate (S)
73 #define AB_CLASS(name, level) \
76 name AR1, AR0 /* Q;R */ &\
78 name @start, AR0 /* @,R */ &\
79 name *+AR0(5), AR0 /* *,R */ &\
80 name -5, AR0 /* S,R */ &\
84 /* AU: General 2-operand unsigned integer operation
86 src = Register (Q), Direct (@), Indirect (*), Unsigned immediate (U)
88 Instr: 6/2 - AND, ANDN, NOT, OR, TSTB, XOR, C4x: LBUn, LHUn
90 #define AU_CLASS(name, level) \
93 name AR1, AR0 /* Q;R */ &\
95 name @start, AR0 /* @,R */ &\
96 name *+AR0(5), AR0 /* *,R */ &\
97 name 5, AR0 /* U,R */ &\
101 /* AF: General 2-operand float to integer operation
103 src = Register 0-11 (q), Direct (@), Indirect (*), Float immediate (F)
107 #define AF_CLASS(name, level) \
110 name R1, R0 /* q;R */ &\
112 name @start, AR0 /* @,R */ &\
113 name *+AR0(5), AR0 /* *,R */ &\
114 name 3.5, AR0 /* F,R */ &\
118 /* A2: Limited 1-operand (integer) operation
120 src = Register (Q), Indirect (*), None
123 #define A2_CLASS(name, level) \
127 name *+AR0(5) /* * */ &\
132 /* A3: General 1-operand unsigned integer operation
134 src = Register (Q), Direct (@), Indirect (*), Unsigned immediate (U)
137 #define A3_CLASS(name, level) \
141 name @start /* @ */ &\
142 name *+AR0(5) /* * */ &\
147 /* A6: Limited 2-operand integer operation
149 src = Direct (@), Indirect (*)
151 Instr: 1/1 - LDII, C4x: SIGI
153 #define A6_CLASS(name, level) \
156 name @start, AR0 /* @,R */ &\
157 name *+AR0(5), AR0 /* *,R */ &\
161 /* A7: Limited 2-operand integer store operation
164 dst = Direct (@), Indirect (*)
165 Instr: 2/0 - STI, STII
167 #define A7_CLASS(name, level) \
170 name AR0, @start /* R,@ */ &\
171 name AR0, *+AR0(5) /* R,* */ &\
175 /* AY: General 2-operand signed address load operation
177 src = Register (Q), Direct (@), Indirect (*), Signed immediate (S)
178 dst = Address register - ARx, IRx, DP, BK, SP (Y)
179 Instr: 0/1 - C4x: LDA
180 Note: Q and Y should *never* be the same register
182 #define AY_CLASS(name, level) \
185 name AR1, AR0 /* Q,Y */ &\
186 name @start, AR0 /* @,Y */ &\
187 name *+AR0(5), AR0 /* *,Y */ &\
188 name -5, AR0 /* S,Y */ &\
192 /* B: General 2-operand float operation
194 src = Register 0-11 (q), Direct (@), Indirect (*), Float immediate (F)
195 dst = Register 0-11 (r)
196 Instr: 12/2 - ABSF, ADDF, CMPF, LDE, LDF, LDM, MPYF, NEGF, NORM, RND,
197 SUBF, SUBRF, C4x: RSQRF, TOIEEE
199 #define B_CLASS(name, level) \
202 name R1, R0 /* q;r */ &\
204 name @start, R0 /* @,r */ &\
205 name *+AR0(5), R0 /* *,r */ &\
206 name 3.5, R0 /* F,r */ &\
210 /* BA: General 2-operand integer to float operation
212 src = Register (Q), Direct (@), Indirect (*), Float immediate (F)
213 dst = Register 0-11 (r)
214 Instr: 0/1 - C4x: CRCPF
216 #define BA_CLASS(name, level) \
219 name AR1, R0 /* Q;r */ &\
221 name @start, R0 /* @,r */ &\
222 name *+AR0(5), R0 /* *,r */ &\
223 name 3.5, R0 /* F,r */ &\
227 /* BB: General 2-operand conditional float operation
228 Syntax: <i>c src, dst
230 src = Register 0-11 (q), Direct (@), Indirect (*), Float immediate (F)
231 dst = Register 0-11 (r)
234 #define BB_CLASS(name, level) \
237 name R1, R0 /* q;r */ &\
239 name @start, R0 /* @,r */ &\
240 name *+AR0(5), R0 /* *,r */ &\
241 name 3.5, R0 /* F,r */ &\
245 /* BI: General 2-operand integer to float operation (yet different to BA)
247 src = Register (Q), Direct (@), Indirect (*), Signed immediate (S)
248 dst = Register 0-11 (r)
251 #define BI_CLASS(name, level) \
254 name AR1, R0 /* Q;r */ &\
256 name @start, R0 /* @,r */ &\
257 name *+AR0(5), R0 /* *,r */ &\
258 name -5, R0 /* S,r */ &\
262 /* B6: Limited 2-operand float operation
264 src = Direct (@), Indirect (*)
265 dst = Register 0-11 (r)
266 Instr: 1/1 - LDFI, C4x: FRIEEE
268 #define B6_CLASS(name, level) \
271 name @start, R0 /* @,r */ &\
272 name *+AR0(5), R0 /* *,r */ &\
276 /* B7: Limited 2-operand float store operation
278 src = Register 0-11 (r)
279 dst = Direct (@), Indirect (*)
280 Instr: 2/0 - STF, STFI
282 #define B7_CLASS(name, level) \
285 name R0, @start /* r,@ */ &\
286 name R0, *+AR0(5) /* r,* */ &\
290 /* D: Decrement and brach operations
291 Syntax: <i>c ARn, dst
293 ARn = AR register 0-7 (A)
294 dst = Register (Q), PC-relative (P)
295 Instr: 2/0 - DBc, DBcD
296 Alias: <namea> <nameb>
298 #define D_CLASS(namea, nameb, level) \
301 namea AR0, R0 /* A,Q */ &\
302 namea AR0, start /* A,P */ &\
304 nameb AR0, R0 /* A,Q */ &\
305 nameb AR0, start /* A,P */ &\
309 /* J: General conditional branch operations
312 dst = Register (Q), PC-relative (P)
313 Instr: 2/3 - Bc, BcD, C4x: BcAF, BcAT, LAJc
314 Alias: <namea> <nameb>
316 #define J_CLASS(namea, nameb, level) \
320 namea start /* P */ &\
323 nameb start /* P */ &\
327 /* LL: Load-load parallell operation
328 Syntax: <i> src2, dst2 || <i> src1, dst1
329 src1 = Indirect 0,1,IR0,IR1 (J)
330 dst1 = Register 0-7 (K)
331 src2 = Indirect 0,1,IR0,IR1, ENH: Register (i)
332 dst2 = Register 0-7 (L)
333 Instr: 2/0 - LDF||LDF, LDI||LDI
334 Alias: i||i, i1||i2, i2||i1
336 #define LL_CLASS(name, level) \
339 name *+AR0(1), R0 &|| name *+AR1(1), R1 /* i;L|J,K */ &\
340 name##2 *+AR0(1), R0 &|| name##1 *+AR1(1), R1 /* i;L|J,K */ &\
341 name##1 *+AR1(1), R1 &|| name##2 *+AR0(1), R0 /* J,K|i;L */ &\
345 name R0, R0 &|| name *+AR1(1), R1 /* i;L|J,K */ &\
346 name R0 &|| name *+AR1(1), R1 /* i;L|J,K */ &\
347 name##2 R0, R0 &|| name##1 *+AR1(1), R1 /* i;L|J,K */ &\
348 name##2 R0 &|| name##1 *+AR1(1), R1 /* i;L|J,K */ &\
349 name##1 *+AR1(1), R1 &|| name##2 R0, R0 /* J,K|i;L */ &\
350 name##1 *+AR1(1), R1 &|| name##2 R0 /* J,K|i;L */ &\
355 /* LS: Store-store parallell operation
356 Syntax: <i> src2, dst2 || <i> src1, dst1
357 src1 = Register 0-7 (H)
358 dst1 = Indirect 0,1,IR0,IR1 (J)
359 src2 = Register 0-7 (L)
360 dst2 = Indirect 0,1,IR0,IR1, ENH: register (i)
361 Instr: 2/0 - STF||STF, STI||STI
362 Alias: i||i, i1||i2, i2||i1.
364 #define LS_CLASS(name, level) \
367 name R0, *+AR0(1) &|| name R1, *+AR1(1) /* L;i|H,J */ &\
368 name##2 R0, *+AR0(1) &|| name##1 R1, *+AR1(1) /* L;i|H,J */ &\
369 name##1 R1, *+AR1(1) &|| name##2 R0, *+AR0(1) /* H,J|L;i */ &\
373 name R0, R0 &|| name R1, *+AR1(1) /* L;i|H,J */ &\
374 name R0 &|| name R1, *+AR1(1) /* L;i|H,J */ &\
375 name##2 R0, R0 &|| name##1 R1, *+AR1(1) /* L;i|H,J */ &\
376 name##2 R0 &|| name##1 R1, *+AR1(1) /* L;i|H,J */ &\
377 name##1 R1, *+AR1(1) &|| name##2 R0, R0 /* H,J|L;i */ &\
378 name##1 R1, *+AR1(1) &|| name##2 R0 /* H,J|L;i */ &\
382 /* M: General multiply and add/sub operations
383 Syntax: <ia> src3,src4,dst1 || <ib> src2,src1,dst2 [00] - Manual
384 <ia> src3,src1,dst1 || <ib> src2,src4,dst2 [01] - Manual
385 <ia> src1,src3,dst1 || <ib> src2,src4,dst2 [01]
386 <ia> src1,src2,dst1 || <ib> src4,src3,dst2 [02] - Manual
387 <ia> src3,src1,dst1 || <ib> src4,src2,dst2 [03] - Manual
388 <ia> src1,src3,dst1 || <ib> src4,src2,dst2 [03]
389 src1 = Register 0-7 (K)
390 src2 = Register 0-7 (H)
391 src3 = Indirect 0,1,IR0,IR1, ENH: register (j)
392 src4 = Indirect 0,1,IR0,IR1, ENH: register (i)
393 dst1 = Register 0-1 (N)
394 dst2 = Register 2-3 (M)
395 Instr: 4/0 - MPYF3||ADDF3, MPYF3||SUBF3, MPYI3||ADDI3, MPYI3||SUBI3
396 Alias: a||b, a3||n, a||b3, a3||b3, b||a, b3||a, b||a3, b3||a3
398 #define M_CLASS(namea, nameb, level) \
400 namea##_##nameb##_M: &\
401 namea *+AR0(1), *+AR1(1), R0 &|| nameb R0, R1, R2 /* i;j;N|H;K;M */ &\
402 namea *+AR0(1), *+AR1(1), R0 &|| nameb R0, R2 /* i;j;N|H;K;M */ &\
403 namea *+AR0(1), R0, R0 &|| nameb R0, *+AR1(1), R2 /* j;K;N|H;i;M */ &\
404 namea *+AR0(1), R0 &|| nameb R0, *+AR1(1), R2 /* j;K;N|H;i;M */ &\
405 namea R0, *+AR0(1), R0 &|| nameb R0, *+AR1(1), R2 /* K;j;N|H;i;M */ &\
406 namea R2, R1, R0 &|| nameb *+AR0(1), *+AR1(1), R2 /* H;K;N|i;j;M */ &\
407 namea R2, R0 &|| nameb *+AR0(1), *+AR1(1), R2 /* H;K;N|i;j;M */ &\
408 namea *+AR0(1), R1, R0 &|| nameb *+AR1(1), R3, R2 /* j;K;N|i;H;M */ &\
409 namea *+AR0(1), R0 &|| nameb *+AR1(1), R3, R2 /* j;K;N|i;H;M */ &\
410 namea *+AR0(1), R1, R0 &|| nameb *+AR1(1), R2 /* j;K;N|i;H;M */ &\
411 namea *+AR0(1), R0 &|| nameb *+AR1(1), R2 /* j;K;N|i;H;M */ &\
412 namea R0, *+AR0(1), R0 &|| nameb *+AR1(1), R0, R2 /* K;j;N|i;H;M */ &\
413 namea R0, *+AR0(1), R0 &|| nameb *+AR1(1), R2 /* K;j;N|i;H;M */ &\
416 namea##_##nameb##_M_enh: &\
417 namea R0, R0, R0 &|| nameb R2, R2, R2 /* i;j;N|H;K;M */ &\
418 namea R0, R0 &|| nameb R2, R2, R2 /* i;j;N|H;K;M */ &\
419 namea R0 &|| nameb R2, R2, R2 /* i;j;N|H;K;M */ &\
420 namea R0, R0 &|| nameb R2, R2 /* i;j;N|H;K;M */ &\
421 namea R0 &|| nameb R2, R2 /* i;j;N|H;K;M */ &\
422 namea R0 &|| nameb R2 /* i;j;N|H;K;M */ &\
423 namea AR0, AR0, R0 &|| nameb R2, R2, R2 /* i;j;N|H;K;M */ &\
424 namea AR0, R0, R0 &|| nameb R0, AR0, R2 /* j;K;N|H;i;M */ &\
425 namea R0, AR0, R0 &|| nameb R0, AR0, R2 /* K;j;N|H;i;M */ &\
426 namea R2, R1, R0 &|| nameb AR0, AR1, R2 /* H;K;N|i;j;M */ &\
427 namea AR0, R1, R0 &|| nameb AR0, R3, R2 /* j;K;N|i;H;M */ &\
428 namea R0, AR0, R0 &|| nameb AR0, R0, R2 /* K;j;N|i;H;M */ &\
431 namea##3_##nameb##_M: &\
432 namea##3 *+AR0(1), *+AR1(1), R0 &|| nameb R0, R1, R2 /* i;j;N|H;K;M */ &\
433 namea##3 *+AR0(1), *+AR1(1), R0 &|| nameb R0, R2 /* i;j;N|H;K;M */ &\
434 namea##3 *+AR0(1), R0, R0 &|| nameb R0, *+AR1(1), R2 /* j;K;N|H;i;M */ &\
435 namea##3 *+AR0(1), R0 &|| nameb R0, *+AR1(1), R2 /* j;K;N|H;i;M */ &\
436 namea##3 R0, *+AR0(1), R0 &|| nameb R0, *+AR1(1), R2 /* K;j;N|H;i;M */ &\
437 namea##3 R2, R1, R0 &|| nameb *+AR0(1), *+AR1(1), R2 /* H;K;N|i;j;M */ &\
438 namea##3 R2, R0 &|| nameb *+AR0(1), *+AR1(1), R2 /* H;K;N|i;j;M */ &\
439 namea##3 *+AR0(1), R1, R0 &|| nameb *+AR1(1), R3, R2 /* j;K;N|i;H;M */ &\
440 namea##3 *+AR0(1), R0 &|| nameb *+AR1(1), R3, R2 /* j;K;N|i;H;M */ &\
441 namea##3 *+AR0(1), R1, R0 &|| nameb *+AR1(1), R2 /* j;K;N|i;H;M */ &\
442 namea##3 *+AR0(1), R0 &|| nameb *+AR1(1), R2 /* j;K;N|i;H;M */ &\
443 namea##3 R0, *+AR0(1), R0 &|| nameb *+AR1(1), R0, R2 /* K;j;N|i;H;M */ &\
444 namea##3 R0, *+AR0(1), R0 &|| nameb *+AR1(1), R2 /* K;j;N|i;H;M */ &\
447 namea##3_##nameb##_M_enh: &\
448 namea##3 R0, R0, R0 &|| nameb R2, R2, R2 /* i;j;N|H;K;M */ &\
449 namea##3 R0, R0 &|| nameb R2, R2, R2 /* i;j;N|H;K;M */ &\
450 namea##3 R0 &|| nameb R2, R2, R2 /* i;j;N|H;K;M */ &\
451 namea##3 R0, R0 &|| nameb R2, R2 /* i;j;N|H;K;M */ &\
452 namea##3 R0 &|| nameb R2, R2 /* i;j;N|H;K;M */ &\
453 namea##3 R0 &|| nameb R2 /* i;j;N|H;K;M */ &\
454 namea##3 AR0, AR0, R0 &|| nameb R2, R2, R2 /* i;j;N|H;K;M */ &\
455 namea##3 AR0, R0, R0 &|| nameb R0, AR0, R2 /* j;K;N|H;i;M */ &\
456 namea##3 R0, AR0, R0 &|| nameb R0, AR0, R2 /* K;j;N|H;i;M */ &\
457 namea##3 R2, R1, R0 &|| nameb AR0, AR1, R2 /* H;K;N|i;j;M */ &\
458 namea##3 AR0, R1, R0 &|| nameb AR0, R3, R2 /* j;K;N|i;H;M */ &\
459 namea##3 R0, AR0, R0 &|| nameb AR0, R0, R2 /* K;j;N|i;H;M */ &\
462 namea##_##nameb##3_M: &\
463 namea *+AR0(1), *+AR1(1), R0 &|| nameb##3 R0, R1, R2 /* i;j;N|H;K;M */ &\
464 namea *+AR0(1), *+AR1(1), R0 &|| nameb##3 R0, R2 /* i;j;N|H;K;M */ &\
465 namea *+AR0(1), R0, R0 &|| nameb##3 R0, *+AR1(1), R2 /* j;K;N|H;i;M */ &\
466 namea *+AR0(1), R0 &|| nameb##3 R0, *+AR1(1), R2 /* j;K;N|H;i;M */ &\
467 namea R0, *+AR0(1), R0 &|| nameb##3 R0, *+AR1(1), R2 /* K;j;N|H;i;M */ &\
468 namea R2, R1, R0 &|| nameb##3 *+AR0(1), *+AR1(1), R2 /* H;K;N|i;j;M */ &\
469 namea R2, R0 &|| nameb##3 *+AR0(1), *+AR1(1), R2 /* H;K;N|i;j;M */ &\
470 namea *+AR0(1), R1, R0 &|| nameb##3 *+AR1(1), R3, R2 /* j;K;N|i;H;M */ &\
471 namea *+AR0(1), R0 &|| nameb##3 *+AR1(1), R3, R2 /* j;K;N|i;H;M */ &\
472 namea *+AR0(1), R1, R0 &|| nameb##3 *+AR1(1), R2 /* j;K;N|i;H;M */ &\
473 namea *+AR0(1), R0 &|| nameb##3 *+AR1(1), R2 /* j;K;N|i;H;M */ &\
474 namea R0, *+AR0(1), R0 &|| nameb##3 *+AR1(1), R0, R2 /* K;j;N|i;H;M */ &\
475 namea R0, *+AR0(1), R0 &|| nameb##3 *+AR1(1), R2 /* K;j;N|i;H;M */ &\
478 namea##_##nameb##3_M_enh: &\
479 namea R0, R0, R0 &|| nameb##3 R2, R2, R2 /* i;j;N|H;K;M */ &\
480 namea R0, R0 &|| nameb##3 R2, R2, R2 /* i;j;N|H;K;M */ &\
481 namea R0 &|| nameb##3 R2, R2, R2 /* i;j;N|H;K;M */ &\
482 namea R0, R0 &|| nameb##3 R2, R2 /* i;j;N|H;K;M */ &\
483 namea R0 &|| nameb##3 R2, R2 /* i;j;N|H;K;M */ &\
484 namea R0 &|| nameb##3 R2 /* i;j;N|H;K;M */ &\
485 namea AR0, AR0, R0 &|| nameb##3 R2, R2, R2 /* i;j;N|H;K;M */ &\
486 namea AR0, R0, R0 &|| nameb##3 R0, AR0, R2 /* j;K;N|H;i;M */ &\
487 namea R0, AR0, R0 &|| nameb##3 R0, AR0, R2 /* K;j;N|H;i;M */ &\
488 namea R2, R1, R0 &|| nameb##3 AR0, AR1, R2 /* H;K;N|i;j;M */ &\
489 namea AR0, R1, R0 &|| nameb##3 AR0, R3, R2 /* j;K;N|i;H;M */ &\
490 namea R0, AR0, R0 &|| nameb##3 AR0, R0, R2 /* K;j;N|i;H;M */ &\
493 namea##3_##nameb##3_M: &\
494 namea##3 *+AR0(1), *+AR1(1), R0 &|| nameb##3 R0, R1, R2 /* i;j;N|H;K;M */ &\
495 namea##3 *+AR0(1), *+AR1(1), R0 &|| nameb##3 R0, R2 /* i;j;N|H;K;M */ &\
496 namea##3 *+AR0(1), R0, R0 &|| nameb##3 R0, *+AR1(1), R2 /* j;K;N|H;i;M */ &\
497 namea##3 *+AR0(1), R0 &|| nameb##3 R0, *+AR1(1), R2 /* j;K;N|H;i;M */ &\
498 namea##3 R0, *+AR0(1), R0 &|| nameb##3 R0, *+AR1(1), R2 /* K;j;N|H;i;M */ &\
499 namea##3 R2, R1, R0 &|| nameb##3 *+AR0(1), *+AR1(1), R2 /* H;K;N|i;j;M */ &\
500 namea##3 R2, R0 &|| nameb##3 *+AR0(1), *+AR1(1), R2 /* H;K;N|i;j;M */ &\
501 namea##3 *+AR0(1), R1, R0 &|| nameb##3 *+AR1(1), R3, R2 /* j;K;N|i;H;M */ &\
502 namea##3 *+AR0(1), R0 &|| nameb##3 *+AR1(1), R3, R2 /* j;K;N|i;H;M */ &\
503 namea##3 *+AR0(1), R1, R0 &|| nameb##3 *+AR1(1), R2 /* j;K;N|i;H;M */ &\
504 namea##3 *+AR0(1), R0 &|| nameb##3 *+AR1(1), R2 /* j;K;N|i;H;M */ &\
505 namea##3 R0, *+AR0(1), R0 &|| nameb##3 *+AR1(1), R0, R2 /* K;j;N|i;H;M */ &\
506 namea##3 R0, *+AR0(1), R0 &|| nameb##3 *+AR1(1), R2 /* K;j;N|i;H;M */ &\
509 namea##3_##nameb##3_M_enh: &\
510 namea##3 R0, R0, R0 &|| nameb##3 R2, R2, R2 /* i;j;N|H;K;M */ &\
511 namea##3 R0, R0 &|| nameb##3 R2, R2, R2 /* i;j;N|H;K;M */ &\
512 namea##3 R0 &|| nameb##3 R2, R2, R2 /* i;j;N|H;K;M */ &\
513 namea##3 R0, R0 &|| nameb##3 R2, R2 /* i;j;N|H;K;M */ &\
514 namea##3 R0 &|| nameb##3 R2, R2 /* i;j;N|H;K;M */ &\
515 namea##3 R0 &|| nameb##3 R2 /* i;j;N|H;K;M */ &\
516 namea##3 AR0, AR0, R0 &|| nameb##3 R2, R2, R2 /* i;j;N|H;K;M */ &\
517 namea##3 AR0, R0, R0 &|| nameb##3 R0, AR0, R2 /* j;K;N|H;i;M */ &\
518 namea##3 R0, AR0, R0 &|| nameb##3 R0, AR0, R2 /* K;j;N|H;i;M */ &\
519 namea##3 R2, R1, R0 &|| nameb##3 AR0, AR1, R2 /* H;K;N|i;j;M */ &\
520 namea##3 AR0, R1, R0 &|| nameb##3 AR0, R3, R2 /* j;K;N|i;H;M */ &\
521 namea##3 R0, AR0, R0 &|| nameb##3 AR0, R0, R2 /* K;j;N|i;H;M */ &\
524 nameb##_##namea##_M: &\
525 nameb R0, R1, R2 &|| namea *+AR0(1), *+AR1(1), R0 /* H;K;M|i;j;N */ &\
526 nameb R0, R2 &|| namea *+AR0(1), *+AR1(1), R0 /* H;K;M|i;j;N */ &\
527 nameb R0, *+AR1(1), R2 &|| namea *+AR0(1), R0, R0 /* H;i;M|j;K;N */ &\
528 nameb R0, *+AR1(1), R2 &|| namea *+AR0(1), R0 /* H;i;M|j;K;N */ &\
529 nameb R0, *+AR1(1), R2 &|| namea R0, *+AR0(1), R0 /* H;i;M|K;j;N */ &\
530 nameb *+AR0(1), *+AR1(1), R2 &|| namea R2, R1, R0 /* i;j;M|H;K;N */ &\
531 nameb *+AR0(1), *+AR1(1), R2 &|| namea R2, R0 /* i;j;M|H;K;N */ &\
532 nameb *+AR1(1), R3, R2 &|| namea *+AR0(1), R1, R0 /* i;H;M|j;K;N */ &\
533 nameb *+AR1(1), R3, R2 &|| namea *+AR0(1), R0 /* i;H;M|j;K;N */ &\
534 nameb *+AR1(1), R2 &|| namea *+AR0(1), R1, R0 /* i;H;M|j;K;N */ &\
535 nameb *+AR1(1), R2 &|| namea *+AR0(1), R0 /* i;H;M|j;K;N */ &\
536 nameb *+AR1(1), R0, R2 &|| namea R0, *+AR0(1), R0 /* i;H;M|K;j;N */ &\
537 nameb *+AR1(1), R2 &|| namea R0, *+AR0(1), R0 /* i;H;M|K;j;N */ &\
540 nameb##_##namea##_M_enh: &\
541 nameb R2, R2, R2 &|| namea R0, R0, R0 /* H;K;M|i;j;N */ &\
542 nameb R2, R2, R2 &|| namea R0, R0 /* H;K;M|i;j;N */ &\
543 nameb R2, R2, R2 &|| namea R0 /* H;K;M|i;j;N */ &\
544 nameb R2, R2 &|| namea R0, R0 /* H;K;M|i;j;N */ &\
545 nameb R2, R2 &|| namea R0 /* H;K;M|i;j;N */ &\
546 nameb R2 &|| namea R0 /* H;K;M|i;j;N */ &\
547 nameb R2, R2, R2 &|| namea AR0, AR0, R0 /* H;K;M|i;j;N */ &\
548 nameb R0, AR0, R2 &|| namea AR0, R0, R0 /* H;i;M|j;K;N */ &\
549 nameb R0, AR0, R2 &|| namea R0, AR0, R0 /* H;i;M|K;j;N */ &\
550 nameb AR0, AR1, R2 &|| namea R2, R1, R0 /* i;j;M|H;K;N */ &\
551 nameb AR0, R3, R2 &|| namea AR0, R1, R0 /* i;H;M|j;K;N */ &\
552 nameb AR0, R0, R2 &|| namea R0, AR0, R0 /* i;H;M|K;j;N */ &\
555 nameb##3_##namea##_M: &\
556 nameb##3 R0, R1, R2 &|| namea *+AR0(1), *+AR1(1), R0 /* H;K;M|i;j;N */ &\
557 nameb##3 R0, R2 &|| namea *+AR0(1), *+AR1(1), R0 /* H;K;M|i;j;N */ &\
558 nameb##3 R0, *+AR1(1), R2 &|| namea *+AR0(1), R0, R0 /* H;i;M|j;K;N */ &\
559 nameb##3 R0, *+AR1(1), R2 &|| namea *+AR0(1), R0 /* H;i;M|j;K;N */ &\
560 nameb##3 R0, *+AR1(1), R2 &|| namea R0, *+AR0(1), R0 /* H;i;M|K;j;N */ &\
561 nameb##3 *+AR0(1), *+AR1(1), R2 &|| namea R2, R1, R0 /* i;j;M|H;K;N */ &\
562 nameb##3 *+AR0(1), *+AR1(1), R2 &|| namea R2, R0 /* i;j;M|H;K;N */ &\
563 nameb##3 *+AR1(1), R3, R2 &|| namea *+AR0(1), R1, R0 /* i;H;M|j;K;N */ &\
564 nameb##3 *+AR1(1), R3, R2 &|| namea *+AR0(1), R0 /* i;H;M|j;K;N */ &\
565 nameb##3 *+AR1(1), R2 &|| namea *+AR0(1), R1, R0 /* i;H;M|j;K;N */ &\
566 nameb##3 *+AR1(1), R2 &|| namea *+AR0(1), R0 /* i;H;M|j;K;N */ &\
567 nameb##3 *+AR1(1), R0, R2 &|| namea R0, *+AR0(1), R0 /* i;H;M|K;j;N */ &\
568 nameb##3 *+AR1(1), R2 &|| namea R0, *+AR0(1), R0 /* i;H;M|K;j;N */ &\
571 nameb##3_##namea##_M_enh: &\
572 nameb##3 R2, R2, R2 &|| namea R0, R0, R0 /* H;K;M|i;j;N */ &\
573 nameb##3 R2, R2, R2 &|| namea R0, R0 /* H;K;M|i;j;N */ &\
574 nameb##3 R2, R2, R2 &|| namea R0 /* H;K;M|i;j;N */ &\
575 nameb##3 R2, R2 &|| namea R0, R0 /* H;K;M|i;j;N */ &\
576 nameb##3 R2, R2 &|| namea R0 /* H;K;M|i;j;N */ &\
577 nameb##3 R2 &|| namea R0 /* H;K;M|i;j;N */ &\
578 nameb##3 R2, R2, R2 &|| namea AR0, AR0, R0 /* H;K;M|i;j;N */ &\
579 nameb##3 R0, AR0, R2 &|| namea AR0, R0, R0 /* H;i;M|j;K;N */ &\
580 nameb##3 R0, AR0, R2 &|| namea R0, AR0, R0 /* H;i;M|K;j;N */ &\
581 nameb##3 AR0, AR1, R2 &|| namea R2, R1, R0 /* i;j;M|H;K;N */ &\
582 nameb##3 AR0, R3, R2 &|| namea AR0, R1, R0 /* i;H;M|j;K;N */ &\
583 nameb##3 AR0, R0, R2 &|| namea R0, AR0, R0 /* i;H;M|K;j;N */ &\
586 nameb##_##namea##3_M: &\
587 nameb R0, R1, R2 &|| namea##3 *+AR0(1), *+AR1(1), R0 /* H;K;M|i;j;N */ &\
588 nameb R0, R2 &|| namea##3 *+AR0(1), *+AR1(1), R0 /* H;K;M|i;j;N */ &\
589 nameb R0, *+AR1(1), R2 &|| namea##3 *+AR0(1), R0, R0 /* H;i;M|j;K;N */ &\
590 nameb R0, *+AR1(1), R2 &|| namea##3 *+AR0(1), R0 /* H;i;M|j;K;N */ &\
591 nameb R0, *+AR1(1), R2 &|| namea##3 R0, *+AR0(1), R0 /* H;i;M|K;j;N */ &\
592 nameb *+AR0(1), *+AR1(1), R2 &|| namea##3 R2, R1, R0 /* i;j;M|H;K;N */ &\
593 nameb *+AR0(1), *+AR1(1), R2 &|| namea##3 R2, R0 /* i;j;M|H;K;N */ &\
594 nameb *+AR1(1), R3, R2 &|| namea##3 *+AR0(1), R1, R0 /* i;H;M|j;K;N */ &\
595 nameb *+AR1(1), R3, R2 &|| namea##3 *+AR0(1), R0 /* i;H;M|j;K;N */ &\
596 nameb *+AR1(1), R2 &|| namea##3 *+AR0(1), R1, R0 /* i;H;M|j;K;N */ &\
597 nameb *+AR1(1), R2 &|| namea##3 *+AR0(1), R0 /* i;H;M|j;K;N */ &\
598 nameb *+AR1(1), R0, R2 &|| namea##3 R0, *+AR0(1), R0 /* i;H;M|K;j;N */ &\
599 nameb *+AR1(1), R2 &|| namea##3 R0, *+AR0(1), R0 /* i;H;M|K;j;N */ &\
602 nameb##_##namea##3_M_enh: &\
603 nameb R2, R2, R2 &|| namea##3 R0, R0, R0 /* H;K;M|i;j;N */ &\
604 nameb R2, R2, R2 &|| namea##3 R0, R0 /* H;K;M|i;j;N */ &\
605 nameb R2, R2, R2 &|| namea##3 R0 /* H;K;M|i;j;N */ &\
606 nameb R2, R2 &|| namea##3 R0, R0 /* H;K;M|i;j;N */ &\
607 nameb R2, R2 &|| namea##3 R0 /* H;K;M|i;j;N */ &\
608 nameb R2 &|| namea##3 R0 /* H;K;M|i;j;N */ &\
609 nameb R2, R2, R2 &|| namea##3 AR0, AR0, R0 /* H;K;M|i;j;N */ &\
610 nameb R0, AR0, R2 &|| namea##3 AR0, R0, R0 /* H;i;M|j;K;N */ &\
611 nameb R0, AR0, R2 &|| namea##3 R0, AR0, R0 /* H;i;M|K;j;N */ &\
612 nameb AR0, AR1, R2 &|| namea##3 R2, R1, R0 /* i;j;M|H;K;N */ &\
613 nameb AR0, R3, R2 &|| namea##3 AR0, R1, R0 /* i;H;M|j;K;N */ &\
614 nameb AR0, R0, R2 &|| namea##3 R0, AR0, R0 /* i;H;M|K;j;N */ &\
617 nameb##3_##namea##3_M: &\
618 nameb##3 R0, R1, R2 &|| namea##3 *+AR0(1), *+AR1(1), R0 /* H;K;M|i;j;N */ &\
619 nameb##3 R0, R2 &|| namea##3 *+AR0(1), *+AR1(1), R0 /* H;K;M|i;j;N */ &\
620 nameb##3 R0, *+AR1(1), R2 &|| namea##3 *+AR0(1), R0, R0 /* H;i;M|j;K;N */ &\
621 nameb##3 R0, *+AR1(1), R2 &|| namea##3 *+AR0(1), R0 /* H;i;M|j;K;N */ &\
622 nameb##3 R0, *+AR1(1), R2 &|| namea##3 R0, *+AR0(1), R0 /* H;i;M|K;j;N */ &\
623 nameb##3 *+AR0(1), *+AR1(1), R2 &|| namea##3 R2, R1, R0 /* i;j;M|H;K;N */ &\
624 nameb##3 *+AR0(1), *+AR1(1), R2 &|| namea##3 R2, R0 /* i;j;M|H;K;N */ &\
625 nameb##3 *+AR1(1), R3, R2 &|| namea##3 *+AR0(1), R1, R0 /* i;H;M|j;K;N */ &\
626 nameb##3 *+AR1(1), R3, R2 &|| namea##3 *+AR0(1), R0 /* i;H;M|j;K;N */ &\
627 nameb##3 *+AR1(1), R2 &|| namea##3 *+AR0(1), R1, R0 /* i;H;M|j;K;N */ &\
628 nameb##3 *+AR1(1), R2 &|| namea##3 *+AR0(1), R0 /* i;H;M|j;K;N */ &\
629 nameb##3 *+AR1(1), R0, R2 &|| namea##3 R0, *+AR0(1), R0 /* i;H;M|K;j;N */ &\
630 nameb##3 *+AR1(1), R2 &|| namea##3 R0, *+AR0(1), R0 /* i;H;M|K;j;N */ &\
633 nameb##3_##namea##3_M_enh: &\
634 nameb##3 R2, R2, R2 &|| namea##3 R0, R0, R0 /* H;K;M|i;j;N */ &\
635 nameb##3 R2, R2, R2 &|| namea##3 R0, R0 /* H;K;M|i;j;N */ &\
636 nameb##3 R2, R2, R2 &|| namea##3 R0 /* H;K;M|i;j;N */ &\
637 nameb##3 R2, R2 &|| namea##3 R0, R0 /* H;K;M|i;j;N */ &\
638 nameb##3 R2, R2 &|| namea##3 R0 /* H;K;M|i;j;N */ &\
639 nameb##3 R2 &|| namea##3 R0 /* H;K;M|i;j;N */ &\
640 nameb##3 R2, R2, R2 &|| namea##3 AR0, AR0, R0 /* H;K;M|i;j;N */ &\
641 nameb##3 R0, AR0, R2 &|| namea##3 AR0, R0, R0 /* H;i;M|j;K;N */ &\
642 nameb##3 R0, AR0, R2 &|| namea##3 R0, AR0, R0 /* H;i;M|K;j;N */ &\
643 nameb##3 AR0, AR1, R2 &|| namea##3 R2, R1, R0 /* i;j;M|H;K;N */ &\
644 nameb##3 AR0, R3, R2 &|| namea##3 AR0, R1, R0 /* i;H;M|j;K;N */ &\
645 nameb##3 AR0, R0, R2 &|| namea##3 R0, AR0, R0 /* i;H;M|K;j;N */ &\
648 /* P: General 2-operand operation with parallell store
649 Syntax: <ia> src2, dst1 || <ib> src3, dst2
650 src2 = Indirect 0,1,IR0,IR1, ENH: register (i)
651 dst1 = Register 0-7 (L)
652 src3 = Register 0-7 (H)
653 dst2 = Indirect 0,1,IR0,IR1 (J)
654 Instr: 9/2 - ABSF||STF, ABSI||STI, FIX||STI, FLOAT||STF, LDF||STF,
655 LDI||STI, NEGF||STF, NEGI||STI, NOT||STI, C4x: FRIEEE||STF,
659 #define P_CLASS(namea, nameb, level) \
661 namea##_##nameb##_P: &\
662 namea *+AR0(1), R0 &|| nameb R1, *+AR1(1) /* i;L|H,J */ &\
663 nameb R1, *+AR1(1) &|| namea *+AR0(1), R0 /* H,J|i;L */ &\
666 namea##_##nameb##_P_enh: &\
667 namea R0, R0 &|| nameb R1, *+AR1(1) /* i;L|H,J */ &\
668 namea R0 &|| nameb R1, *+AR1(1) /* i;L|H,J */ &\
669 nameb R1, *+AR1(1) &|| namea R0, R0 /* H,J|i;L */ &\
670 nameb R1, *+AR1(1) &|| namea R0 /* H,J|i;L */ &\
674 /* Q: General 3-operand operation with parallell store
675 Syntax: <ia> src1, src2, dst1 || <ib> src3, dst2
676 src1 = Register 0-7 (K)
677 src2 = Indirect 0,1,IR0,IR1, ENH: register (i)
678 dst1 = Register 0-7 (L)
679 src3 = Register 0-7 (H)
680 dst2 = Indirect 0,1,IR0,IR1 (J)
681 Instr: 4/0 - ASH3||STI, LSH3||STI, SUBF3||STF, SUBI3||STI
682 Alias: a||b, b||a, a3||b, b||a3
684 #define Q_CLASS(namea, nameb, level) \
686 namea##_##nameb##_Q: &\
687 namea R0, *+AR0(1), R0 &|| nameb R1, *+AR1(1) /* K,i;L|H,J */ &\
688 nameb R1, *+AR1(1) &|| namea R0, *+AR0(1), R0 /* H,J|K,i;L */ &\
691 namea##_##nameb##_Q_enh: &\
692 namea R0, R0, R0 &|| nameb R1, *+AR1(1) /* K,i;L|H,J */ &\
693 namea R0, R0 &|| nameb R1, *+AR1(1) /* K,i;L|H,J */ &\
694 nameb R1, *+AR1(1) &|| namea R0, R0, R0 /* H,J|K,i;L */ &\
695 nameb R1, *+AR1(1) &|| namea R0, R0 /* H,J|K,i;L */ &\
698 namea##3_##nameb##_Q: &\
699 namea##3 R0, *+AR0(1), R0 &|| nameb R1, *+AR1(1) /* K,i;L|H,J */ &\
700 nameb R1, *+AR1(1) &|| namea##3 R0, *+AR0(1), R0 /* H,J|K,i;L */ &\
703 namea##3_##nameb##_Q_enh: &\
704 namea##3 R0, R0, R0 &|| nameb R1, *+AR1(1) /* K,i;L|H,J */ &\
705 namea##3 R0, R0 &|| nameb R1, *+AR1(1) /* K,i;L|H,J */ &\
706 nameb R1, *+AR1(1) &|| namea##3 R0, R0, R0 /* H,J|K,i;L */ &\
707 nameb R1, *+AR1(1) &|| namea##3 R0, R0 /* H,J|K,i;L */ &\
711 /* QC: General commutative 3-operand operation with parallell store
712 Syntax: <ia> src2, src1, dst1 || <ib> src3, dst2
713 <ia> src1, src2, dst1 || <ib> src3, dst2 - Manual
714 src1 = Register 0-7 (K)
715 src2 = Indirect 0,1,IR0,IR1, ENH: register (i)
716 dst1 = Register 0-7 (L)
717 src3 = Register 0-7 (H)
718 dst2 = Indirect 0,1,IR0,IR1 (J)
719 Instr: 7/0 - ADDF3||STF, ADDI3||STI, AND3||STI, MPYF3||STF, MPYI3||STI,
721 Alias: a||b, b||a, a3||b, b||a3
723 #define QC_CLASS(namea, nameb, level) \
725 namea##_##nameb##_QC: &\
726 namea *+AR0(1), R1, R0 &|| nameb R1, *+AR1(1) /* i;K;L|H,J */ &\
727 namea *+AR0(1), R0 &|| nameb R1, *+AR1(1) /* i;K;L|H,J */ &\
728 namea R0, *+AR0(1), R0 &|| nameb R1, *+AR1(1) /* K;i;L|H,J */ &\
729 nameb R1, *+AR1(1) &|| namea *+AR0(1), R1, R0 /* H,J|i;K;L */ &\
730 nameb R1, *+AR1(1) &|| namea *+AR0(1), R0 /* H,J|i;K;L */ &\
731 nameb R1, *+AR1(1) &|| namea R0, *+AR0(1), R0 /* H,J|K;i;L */ &\
734 namea##_##nameb##_QC_enh: &\
735 namea AR0, R1, R0 &|| nameb R1, *+AR1(1) /* i;K;L|H,J */ &\
736 namea R2, R1, R0 &|| nameb R1, *+AR1(1) /* i;K;L|H,J */ &\
737 namea R1, R0 &|| nameb R1, *+AR1(1) /* i;K;L|H,J */ &\
738 namea R0 &|| nameb R1, *+AR1(1) /* i;K;L|H,J */ &\
739 namea R0, AR0, R0 &|| nameb R1, *+AR1(1) /* K;i;L|H,J */ &\
740 nameb R1, *+AR1(1) &|| namea AR0, R1, R0 /* H,J|i;K;L */ &\
741 nameb R1, *+AR1(1) &|| namea R2, R1, R0 /* H,J|i;K;L */ &\
742 nameb R1, *+AR1(1) &|| namea R1, R0 /* H,J|i;K;L */ &\
743 nameb R1, *+AR1(1) &|| namea R0 /* H,J|i;K;L */ &\
744 nameb R1, *+AR1(1) &|| namea R0, AR0, R0 /* H,J|K;i;L */ &\
747 namea##3_##nameb##_QC: &\
748 namea##3 *+AR0(1), R1, R0 &|| nameb R1, *+AR1(1) /* i;K;L|H,J */ &\
749 namea##3 *+AR0(1), R0 &|| nameb R1, *+AR1(1) /* i;K;L|H,J */ &\
750 namea##3 R0, *+AR0(1), R0 &|| nameb R1, *+AR1(1) /* K;i;L|H,J */ &\
751 nameb R1, *+AR1(1) &|| namea##3 *+AR0(1), R1, R0 /* H,J|i;K;L */ &\
752 nameb R1, *+AR1(1) &|| namea##3 *+AR0(1), R0 /* H,J|i;K;L */ &\
753 nameb R1, *+AR1(1) &|| namea##3 R0, *+AR0(1), R0 /* H,J|K;i;L */ &\
756 namea##3_##nameb##_QC_enh: &\
757 namea##3 AR0, R1, R0 &|| nameb R1, *+AR1(1) /* i;K;L|H,J */ &\
758 namea##3 R2, R1, R0 &|| nameb R1, *+AR1(1) /* i;K;L|H,J */ &\
759 namea##3 R1, R0 &|| nameb R1, *+AR1(1) /* i;K;L|H,J */ &\
760 namea##3 R0 &|| nameb R1, *+AR1(1) /* i;K;L|H,J */ &\
761 namea##3 R0, AR0, R0 &|| nameb R1, *+AR1(1) /* K;i;L|H,J */ &\
762 nameb R1, *+AR1(1) &|| namea##3 AR0, R1, R0 /* H,J|i;K;L */ &\
763 nameb R1, *+AR1(1) &|| namea##3 R2, R1, R0 /* H,J|i;K;L */ &\
764 nameb R1, *+AR1(1) &|| namea##3 R1, R0 /* H,J|i;K;L */ &\
765 nameb R1, *+AR1(1) &|| namea##3 R0 /* H,J|i;K;L */ &\
766 nameb R1, *+AR1(1) &|| namea##3 R0, AR0, R0 /* H,J|K;i;L */ &\
770 /* R: General register integer operation
773 Instr: 6/0 - POP, PUSH, ROL, ROLC, ROR, RORC
775 #define R_CLASS(name, level) \
782 /* RF: General register float operation
784 dst = Register 0-11 (r)
785 Instr: 2/0 - POPF, PUSHF
787 #define RF_CLASS(name, level) \
794 /* S: General 3-operand float operation
795 Syntax: <i> src2, src1, dst
796 src2 = Register 0-11 (e), Indirect 0,1,IR0,IR1 (I), C4x T2: Indirect (C)
797 src1 = Register 0-11 (g), Indirect 0,1,IR0,IR1 (J), C4x T2: Indirect (O)
798 dst = Register 0-11 (r)
802 #define S_CLASS(name, level) \
805 name R2, R1, R0 /* e,g;r */ &\
806 name R1, R0 /* e,g;r */ &\
807 name R1, *+AR0(1), R0 /* e,J,r */ &\
808 name *+AR0(1), R1, R0 /* I,g;r */ &\
809 name *+AR0(1), R0 /* I,g;r */ &\
810 name *+AR0(1), *+AR1(1), R0 /* I,J,r */ &\
814 name *+AR0(5), R1, R0 /* C,g;r */ &\
815 name *+AR0(5), R0 /* C,g;r */ &\
816 name *+AR0(5), *+AR1(5), R0 /* C,O,r */ &\
820 name##3 R2, R1, R0 /* e,g;r */ &\
821 name##3 R1, R0 /* e,g;r */ &\
822 name##3 R1, *+AR0(1), R0 /* e,J,r */ &\
823 name##3 *+AR0(1), R1, R0 /* I,g;r */ &\
824 name##3 *+AR0(1), R0 /* I,g;r */ &\
825 name##3 *+AR0(1), *+AR1(1), R0 /* I,J,r */ &\
829 name##3 *+AR0(5), R1, R0 /* C,g;r */ &\
830 name##3 *+AR0(5), R0 /* C,g;r */ &\
831 name##3 *+AR0(5), *+AR1(5), R0 /* C,O,r */ &\
835 /* SC: General commutative 3-operand float operation
836 Syntax: <i> src2, src1, dst - Manual
838 src2 = Register 0-11 (e), Indirect 0,1,IR0,IR1 (I), C4x T2: Indirect (C)
839 src1 = Register 0-11 (g), Indirect 0,1,IR0,IR1 (J), C4x T2: Indirect (O)
840 dst = Register 0-11 (r)
841 Instr: 2/0 - ADDF3, MPYF3
844 #define SC_CLASS(name, level) \
847 name R2, R1, R0 /* e,g;r */ &\
848 name R1, R0 /* e,g;r */ &\
849 name R1, *+AR0(1), R0 /* e,J,r */ &\
850 name *+AR0(1), R1, R0 /* I,g;r */ &\
851 name *+AR0(1), R0 /* I,g;r */ &\
852 name *+AR0(1), *+AR1(1), R0 /* I,J,r */ &\
856 name *+AR0(5), R1, R0 /* C,g;r */ &\
857 name *+AR0(5), R0 /* C,g;r */ &\
858 name R1, *+AR0(5), R0 /* g,C,r */ &\
859 name *+AR0(5), *+AR1(5), R0 /* C,O,r */ &\
863 name##3 R2, R1, R0 /* e,g;r */ &\
864 name##3 R1, R0 /* e,g;r */ &\
865 name##3 R1, *+AR0(1), R0 /* e,J,r */ &\
866 name##3 *+AR0(1), R1, R0 /* I,g;r */ &\
867 name##3 *+AR0(1), R0 /* I,g;r */ &\
868 name##3 *+AR0(1), *+AR1(1), R0 /* I,J,r */ &\
872 name##3 *+AR0(5), R1, R0 /* C,g;r */ &\
873 name##3 *+AR0(5), R0 /* C,g;r */ &\
874 name##3 R1, *+AR0(5), R0 /* g,C,r */ &\
875 name##3 *+AR0(5), *+AR1(5), R0 /* C,O,r */ &\
879 /* S2: General 3-operand float operation with 2 args
880 Syntax: <i> src2, src1
881 src2 = Register 0-11 (e), Indirect 0,1,IR0,IR1 (I), C4x T2: Indirect (C)
882 src1 = Register 0-11 (g), Indirect 0,1,IR0,IR1 (J), C4x T2: Indirect (O)
886 #define S2_CLASS(name, level) \
889 name R2, R1 /* e,g */ &\
890 name R1, *+AR0(1) /* e,J */ &\
891 name *+AR0(1), R1 /* I,g */ &\
892 name *+AR0(1), *+AR1(1) /* I,J */ &\
896 name *+AR0(5), R1 /* C,g */ &\
897 name *+AR0(5), *+AR1(5) /* C,O */ &\
901 name##3 R2, R1 /* e,g */ &\
902 name##3 R1, *+AR0(1) /* e,J */ &\
903 name##3 *+AR0(1), R1 /* I,g */ &\
904 name##3 *+AR0(1), *+AR1(1) /* I,J */ &\
908 name##3 *+AR0(5), R1 /* C,g */ &\
909 name##3 *+AR0(5), *+AR1(5) /* C,O */ &\
913 /* T: General 3-operand integer operand
914 Syntax: <i> src2, src1, dst
915 src2 = Register (E), Indirect 0,1,IR0,IR1 (I), C4x T2: Indirect (C), Immediate (W)
916 src1 = Register (G), Indirect 0,1,IR0,IR1 (J), C4x T2: Indirect (O)
918 Instr: 5/0 - ANDN3, ASH3, LSH3, SUBB3, SUBI3
921 #define T_CLASS(name, level) \
924 name AR2, AR1, AR0 /* E,G;R */ &\
925 name AR1, AR0 /* E,G;R */ &\
926 name AR1, *+AR0(1), AR0 /* E,J,R */ &\
927 name *+AR0(1), AR1, AR0 /* I,G;R */ &\
928 name *+AR0(1), AR0 /* I,G;R */ &\
929 name *+AR1(1), *+AR0(1), AR0 /* I,J,R */ &\
933 name -5, AR1, AR0 /* W,G;R */ &\
934 name -5, AR0 /* W,G;R */ &\
935 name *+AR0(5), AR1, AR0 /* C,G;R */ &\
936 name *+AR0(5), AR0 /* C,G;R */ &\
937 name -5, *+AR0(5), AR0 /* W,O,R */ &\
938 name *+AR0(5), *+AR1(5), AR0 /* C,O,R */ &\
942 name##3 AR2, AR1, AR0 /* E,G;R */ &\
943 name##3 AR1, AR0 /* E,G;R */ &\
944 name##3 AR1, *+AR0(1), AR0 /* E,J,R */ &\
945 name##3 *+AR0(1), AR1, AR0 /* I,G;R */ &\
946 name##3 *+AR0(1), AR0 /* I,G;R */ &\
947 name##3 *+AR1(1), *+AR0(1), AR0 /* I,J,R */ &\
951 name##3 -5, AR1, AR0 /* W,G;R */ &\
952 name##3 -5, AR0 /* W,G;R */ &\
953 name##3 *+AR0(5), AR1, AR0 /* C,G;R */ &\
954 name##3 *+AR0(5), AR0 /* C,G;R */ &\
955 name##3 -5, *+AR0(5), AR0 /* W,O,R */ &\
956 name##3 *+AR0(5), *+AR1(5), AR0 /* C,O,R */ &\
960 /* TC: General commutative 3-operand integer operation
961 Syntax: <i> src2, src1, dst
963 src2 = Register (E), Indirect 0,1,IR0,IR1 (I), C4x T2: Indirect (C), Immediate (W)
964 src1 = Register (G), Indirect 0,1,IR0,IR1 (J), C4x T2: Indirect (O)
966 Instr: 6/2 - ADDC3, ADDI3, AND3, MPYI3, OR3, XOR3, C4x: MPYSHI, MPYUHI
969 #define TC_CLASS(name, level) \
972 name AR2, AR1, AR0 /* E,G;R */ &\
973 name AR1, AR0 /* E,G;R */ &\
974 name AR1, *+AR0(1), AR0 /* E,J,R */ &\
975 name *+AR0(1), AR1, AR0 /* I,G;R */ &\
976 name *+AR0(1), AR0 /* I,G;R */ &\
977 name *+AR1(1), *+AR0(1), AR0 /* I,J,R */ &\
981 name -5, AR1, AR0 /* W,G;R */ &\
982 name -5, AR0 /* W,G;R */ &\
983 name AR1, -5, AR0 /* G,W,R */ &\
984 name *+AR0(5), AR1, AR0 /* C,G;R */ &\
985 name *+AR0(5), AR0 /* C,G;R */ &\
986 name AR1, *+AR0(5), AR0 /* G,C,R */ &\
987 name -5, *+AR0(5), AR0 /* W,O,R */ &\
988 name *+AR0(5), -5, AR0 /* O,W,R */ &\
989 name *+AR0(5), *+AR1(5), AR0 /* C,O,R */ &\
993 name##3 AR2, AR1, AR0 /* E,G;R */ &\
994 name##3 AR1, AR0 /* E,G;R */ &\
995 name##3 AR1, *+AR0(1), AR0 /* E,J,R */ &\
996 name##3 *+AR0(1), AR1, AR0 /* I,G;R */ &\
997 name##3 *+AR0(1), AR0 /* I,G;R */ &\
998 name##3 *+AR1(1), *+AR0(1), AR0 /* I,J,R */ &\
1002 name##3 -5, AR1, AR0 /* W,G;R */ &\
1003 name##3 -5, AR0 /* W,G;R */ &\
1004 name##3 AR1, -5, AR0 /* G,W,R */ &\
1005 name##3 *+AR0(5), AR1, AR0 /* C,G;R */ &\
1006 name##3 *+AR0(5), AR0 /* C,G;R */ &\
1007 name##3 AR1, *+AR0(5), AR0 /* G,C,R */ &\
1008 name##3 -5, *+AR0(5), AR0 /* W,O,R */ &\
1009 name##3 *+AR0(5), -5, AR0 /* O,W,R */ &\
1010 name##3 *+AR0(5), *+AR1(5), AR0 /* C,O,R */ &\
1014 /* T2: General 3-operand integer operation with 2 args
1015 Syntax: <i> src2, src1
1016 src2 = Register (E), Indirect 0,1,IR0,IR1 (I), C4x T2: Indirect (C), Immediate (W)
1017 src1 = Register (G), Indirect 0,1,IR0,IR1 (J), C4x T2: Indirect (O)
1021 #define T2_CLASS(name, level) \
1024 name AR2, AR1 /* E,G */ &\
1025 name AR1, *+AR0(1) /* E,J */ &\
1026 name *+AR0(1), AR1 /* I,G */ &\
1027 name *+AR1(1), *+AR0(1) /* I,J */ &\
1031 name -5, AR1 /* W,G */ &\
1032 name *+AR0(5), AR1 /* C,G */ &\
1033 name -5, *+AR0(5) /* W,O */ &\
1034 name *+AR0(5), *+AR1(5) /* C,O */ &\
1038 name##3 AR2, AR1 /* E,G */ &\
1039 name##3 AR1, *+AR0(1) /* E,J */ &\
1040 name##3 *+AR0(1), AR1 /* I,G */ &\
1041 name##3 *+AR1(1), *+AR0(1) /* I,J */ &\
1045 name##3 -5, AR1 /* W,G */ &\
1046 name##3 *+AR0(5), AR1 /* C,G */ &\
1047 name##3 -5, *+AR0(5) /* W,O */ &\
1048 name##3 *+AR0(5), *+AR1(5) /* C,O */ &\
1052 /* T2C: General commutative 3-operand integer operation with 2 args
1053 Syntax: <i> src2, src1 - Manual
1055 src2 = Register (E), Indirect 0,1,IR0,IR1 (I), C4x T2: Indirect (C), Immediate (W)
1056 src1 = Register (G), Indirect 0,1,IR0,IR1 (J), C4x T2: Indirect (0)
1060 #define T2C_CLASS(name, level) \
1063 name AR2, AR1 /* E,G */ &\
1064 name AR1, *+AR0(1) /* E,J */ &\
1065 name *+AR0(1), AR1 /* I,G */ &\
1066 name *+AR1(1), *+AR0(1) /* I,J */ &\
1070 name -5, AR1 /* W,G */ &\
1071 name AR1, -5 /* G,W */ &\
1072 name *+AR0(5), AR1 /* C,G */ &\
1073 name AR1, *+AR0(5) /* G,C */ &\
1074 name -5, *+AR0(5) /* W,O */ &\
1075 name *+AR0(5), -5 /* O,W */ &\
1076 name *+AR0(5), *+AR1(5) /* C,O */ &\
1080 name##3 AR2, AR1 /* E,G */ &\
1081 name##3 AR1, *+AR0(1) /* E,J */ &\
1082 name##3 *+AR0(1), AR1 /* I,G */ &\
1083 name##3 *+AR1(1), *+AR0(1) /* I,J */ &\
1087 name##3 -5, AR1 /* W,G */ &\
1088 name##3 AR1, -5 /* G,W */ &\
1089 name##3 *+AR0(5), AR1 /* C,G */ &\
1090 name##3 AR1, *+AR0(5) /* G,C */ &\
1091 name##3 -5, *+AR0(5) /* W,O */ &\
1092 name##3 *+AR0(5), -5 /* O,W */ &\
1093 name##3 *+AR0(5), *+AR1(5) /* C,O */ &\