1 .data
2foodata: .word 42
3	 .text
4footext:
5
6.macro test insn text=""
7	.export \insn
8\insn:
9	\insn \text
10.endm
11
12	test abs   r0
13	test addc  "r1,r2"	// A double forward slash starts a line comment
14	test addi  "r3, 1"	# So does a hash
15	test addu  "r4, r5"	// White space between operands should be ignored
16	test and   "r6,r7"   ;	test andi  "r8,2" // A semicolon seperates statements
17	test andn  "r9, r10"
18	test asr   "r11, R12"	// Uppercase R is allowed as a register prefix
19	test asrc  "r13"
20	test asri  "r14,0x1f"
21	test bclri "r15,0"
22	test bf    footext
23	test bgeni "sp, 7"	// r0 can also be refered to as 'sp'
24	test BGENI "r0, 8"	// Officially upper case or mixed case
25	test BGENi "r0, 31"	// mnemonics should not be allowed, but we relax this...
26	test bgenr "r1, r2"
27	test bkpt
28	test bmaski "r3,8"
29	test BMASKI "r3,0x1f"
30	test br     .  // Dot means the current address
31	test brev   r4
32	test bseti  "r5,30"
33	test bsr    footext
34	test bt     footext
35	test btsti  "r6, 27"
36	test clrc
37	test clrf   r7
38	test clrt   r8
39	test cmphs  "r9,r10"
40	test cmplt  "r11,r12"
41	test cmplei "r11, 14"
42	test cmplti "r13,32"
43	test cmpne  "r14, r15"
44	test cmpnei "r0,0"
45	test decf   r1
46	test decgt  r2
47	test declt  r3
48	test decne  r4
49	test dect   r5
50	test divs   "r6,r1"
51	test divu   "r8, r1"
52	test doze
53	test ff1    r10
54	test incf   r11
55	test inct   r12
56	test ixh    "r13,r14"
57	test ixw    "r15,r0"
58	test jbf    footext
59	test jbr    fooloop
60	test jbsr   footext
61	test jbt    fooloop
62	test jmp    r1
63	test jmpi   footext
64	test jsr    r2
65	test jsri   footext
66	test ld.b   "r3,(r4,0)"
67	test ld.h   "r5 , ( r6, 2)"
68	test ld.w   "r7, (r8, 0x4)"
69	test ldb    "r9,(r10,0xf)"
70	test ldh    "r11, (r12, 30)"
71	test ld     "r13, (r14, 20)"
72	test ldw    "r13, (r14, 60)"
73	test ldm    "r2-r15,(r0)"
74	.export fooloop
75fooloop:
76	test ldq    "r4-r7,(r1)"
77	test loopt  "r8, fooloop"
78	test LRW    "r9, [foolit]"
79	test lrw    "r9, 0x4321"   	// PC rel indirect
80	.global foolit
81foolit:
82	.word 0x1234
83	test lsl    "r10,r11"
84	test lslc   r12
85	.literals			// Dump literals table
86	test lsli   "r13,31"
87	test lsr    "r14,r15"
88	test lsrc   r0
89	test lsri   "r1,1"
90	test mclri  "r4, 64"
91	test mfcr   "r2, cr0"
92	test mov    "r3,r4"
93	test movf   "r5, r6"
94	test movi   "r7, 127"
95	test movt   "r8, r9"
96	test mtcr   "r10, psr"
97	test mult   "r11, r12"
98	test mvc    r13
99	test mvcv   r14
100	test neg    r2
101	test not    r15
102	test or     "r0,r1"
103	test rfi
104	test rolc   "r6, 1"
105	test rori   "r9, 6"
106	test rotlc  "r6, 1"
107	test rotli  "r2, 10"
108	test rotri  "r9, 6"
109	test rsub   "r3, r4"
110	test rsubi  "r5, 0x0"
111	test rte
112	test rts
113	test setc
114	test sextb  r6
115	test sexth  r7
116	test st.b   "r8, (r9, 0)"
117	test st.h   "r10, (r11, 2)"
118	test st.w   "r12, (r13, 4)"
119	test stb    "r14, (r15, 15)"
120	test sth    "r0, (r1, 30)"
121	test stw    "r2, (r3, 0x3c)"
122	test st     "r4, (r5, 0)"
123	test stm    "r14 - r15 , (r0)"
124	test stop
125	test stq    "r4 - r7 , (r1)"
126	test subc   "r7, r13"
127	test subi   "r14, 32"
128	test subu   "r9, r3"
129	test sync
130	test tstlt  r5
131	test tstne  r7
132	test trap   2
133	test tst    "r14, r14"
134	test tstnbz r2
135	test wait
136	test xor    "r15,r0"
137	test xsr    r11
138	test xtrb0  "r1, r1"
139	test xtrb1  "r1, r2"
140	test xtrb2  "r1, r0"
141	test xtrb3  "r1, r13"
142	test zextb  r8
143	test zexth  r4
144	clrc			// These two instructions pad the object file
145	clrc			// out to a 16 byte boundary.
146