1	.text
2	.global start
3
4!	Starting point
5start:
6
7!	test all ASRs
8
9	rd	%asr0, %l0
10	rd	%asr1, %l0
11	rd	%asr15, %l0
12	rd	%asr17, %l0
13	rd	%asr18, %l0
14	rd	%asr19, %l0	! should stop the processor
15	rd	%asr20, %l0
16	rd	%asr21, %l0
17	rd	%asr22, %l0
18
19	wr	%l0, 0, %asr0
20	wr	%l0, 0, %asr1
21	wr	%l0, 0, %asr15
22	wr	%l0, 0, %asr17
23	wr	%l0, 0, %asr18
24	wr	%l0, 0, %asr19
25	wr	%l0, 0, %asr20
26	wr	%l0, 0, %asr21
27	wr	%l0, 0, %asr22
28
29!	test UMUL with no overflow inside Y
30test_umul:
31	umul	%g1, %g2, %g3
32
33!	test UMUL with an overflow inside Y
34
35	umul	%g1, %g2, %g3	! %g3 must be equal to 0
36
37!	test SMUL with negative result
38test_smul:
39	smul	%g1, %g2, %g3
40
41!	test SMUL with positive result
42
43	smul	%g1, %g2, %g3
44
45!	test STBAR: there are two possible syntaxes
46test_stbar:
47	stbar			! is a valid V8 syntax, at least a synthetic
48				! instruction
49	rd	%asr15, %g0	! other solution
50
51!	test UNIMP
52	unimp	1
53
54!	test FLUSH
55	flush	%l1		! is the official V8 syntax
56
57!	test SCAN: find first 0
58test_scan:
59	scan	%l1, 0xffffffff, %l3
60
61!	test scan: find first 1
62
63	scan	%l1, 0, %l3
64
65!	test scan: find first bit != bit-0
66
67	scan	%l1, %l1, %l3
68
69!	test SHUFFLE
70test_shuffle:
71	shuffle	%l0, 0x1, %l1
72	shuffle	%l0, 0x2, %l1
73	shuffle	%l0, 0x4, %l1
74	shuffle	%l0, 0x8, %l1
75	shuffle	%l0, 0x10, %l1
76	shuffle	%l0, 0x18, %l1
77
78!	test UMAC
79test_umac:
80	umac	%l1, %l2, %l0
81	umac	%l1, 2, %l0
82	umac	2, %l1, %l0
83
84!	test UMACD
85test_umacd:
86	umacd	%l2, %l4, %l0
87	umacd	%l2, 3, %l0
88	umacd	3, %l2, %l0
89
90!	test SMAC
91test_smac:
92	smac	%l1, %l2, %l0
93	smac	%l1, -42, %l0
94	smac	-42, %l1, %l0
95
96!	test SMACD
97test_smacd:
98	smacd	%l2, %l4, %l0
99	smacd	%l2, 123, %l0
100	smacd	123, %l2, %l0
101
102!	test UMULD
103test_umuld:
104	umuld	%o2, %o4, %o0
105	umuld	%o2, 0x234, %o0
106	umuld	0x567, %o2, %o0
107
108!	test SMULD
109test_smuld:
110	smuld	%i2, %i4, %i0
111	smuld	%i2, -4096, %i0
112	smuld	4095, %i4, %i0
113
114!	Coprocessor instructions
115test_coprocessor:
116!	%ccsr	is register # 0
117!	%ccfr	is register # 1
118!	%ccpr	is register # 3
119!	%cccrcr is register # 2
120
121!	test CPUSH: just syntax
122
123	cpush	%l0, %l1
124	cpush	%l0, 1
125	cpusha	%l0, %l1
126	cpusha	%l0, 1
127
128!	test CPULL: just syntax
129
130	cpull	%l0
131
132!	test CPRDCXT: just syntax
133
134	crdcxt	%ccsr, %l0
135	crdcxt	%ccfr, %l0
136	crdcxt	%ccpr, %l0
137	crdcxt	%cccrcr, %l0
138
139!	test CPWRCXT: just syntax
140
141	cwrcxt	%l0, %ccsr
142	cwrcxt	%l0, %ccfr
143	cwrcxt	%l0, %ccpr
144	cwrcxt	%l0, %cccrcr
145
146!	test CBccc: just syntax
147
148	cbn	stop
149	nop
150	cbn,a	stop
151	nop
152	cbe	stop
153	nop
154	cbe,a	stop
155	nop
156	cbf	stop
157	nop
158	cbf,a	stop
159	nop
160	cbef	stop
161	nop
162	cbef,a	stop
163	nop
164	cbr	stop
165	nop
166	cbr,a	stop
167	nop
168	cber	stop
169	nop
170	cber,a	stop
171	nop
172	cbfr	stop
173	nop
174	cbfr,a	stop
175	nop
176	cbefr	stop
177	nop
178	cbefr,a	stop
179	nop
180	cba	stop
181	nop
182	cba,a	stop
183	nop
184	cbne	stop
185	nop
186	cbne,a	stop
187	nop
188	cbnf	stop
189	nop
190	cbnf,a	stop
191	nop
192	cbnef	stop
193	nop
194	cbnef,a	stop
195	nop
196	cbnr	stop
197	nop
198	cbnr,a	stop
199	nop
200	cbner	stop
201	nop
202	cbner,a	stop
203	nop
204	cbnfr	stop
205	nop
206	cbnfr,a	stop
207	nop
208	cbnefr	stop
209	nop
210	cbnefr,a	stop
211	nop
212