1 ; Test program to tic80 alu operations
2 ; compile with tic80-coff-gcc -nostartfiles -nostdlib
10 addu 1b,r0,r4 ; string
11 addu 2b-1b,r0,r6 ; length
12 addu 4,r0,r15 ; write system call #
16 .macro expect reg, value, string
17 xor \value,\reg,r19 ; produces r19 == 0 if matches expected value
20 1: .ascii "Expected \value for \string\n"
23 addu 1,r0,r2 ; filedes
24 addu 1b,r0,r4 ; string
25 addu 2b-1b,r0,r6 ; length
26 addu 4,r0,r15 ; write system call #
48 expect r9,0x2468acf0,"add #1"
52 expect r9,0x54545479,"add #2"
56 expect r9,0x2468acf0,"add #3"
58 ; This will cause overflow
59 ; add 0x789abcde,r8,r9
60 ; expect r9,0x8acf1356,"add #4"
66 expect r9,0x2468acf0,"addu #1"
70 expect r9,0x54545479,"addu #2"
74 expect r9,0x2468acf0,"addu #3"
77 expect r9,0x8acf1356,"addu #4"
83 expect r9,0x8,"and #1"
86 expect r9,0x5678,"add #2"
89 expect r9,0x12000078,"add #3"
95 expect r9,0x8,"and.tt #1"
98 expect r9,0x5678,"add.tt #2"
100 and.tt 0xff0000ff,r8,r9
101 expect r9,0x12000078,"add.tt #3"
105 addu 0x12345678,r0,r8
107 expect r9,0xedcba980,"and.ff #1"
110 expect r9,0xedcb8000,"add.ff #2"
112 and.ff 0xff0000ff,r8,r9
113 expect r9,0x00cba900,"add.ff #3"
117 addu 0x12345678,r0,r8
119 expect r9,0x12345670,"and.ft #1"
122 expect r9,0x12340000,"add.ft #2"
124 and.ft 0xff0000ff,r8,r9
125 expect r9,0x00345600,"add.ft #3"
129 addu 0x12345678,r0,r8
131 expect r9,0x7,"and.tf #1"
134 expect r9,0x2987,"add.tf #2"
136 and.tf 0xff0000ff,r8,r9
137 expect r9,0xed000087,"add.tf #3"
140 addu 0x12345678,r0,r7
141 addu 0x54545478,r0,r8
143 expect r9,0x19a99aa9,"cmp #1"
146 expect r9,0x19a96a5a,"cmp #2"
149 expect r9,0x26666aa9,"cmp #3"
152 expect r9,0x19a66a5a,"cmp #4"
157 addu 0x10203040,r0,r7
159 expect r9,0xffffff82,"exts #1"
162 expect r9,0xffffff82,"exts #2"
164 addu 0x0f0e0d0c,r0,r9
166 expect r7,0x00000068,"exts #3"
169 expect r7,0x00000068,"exts #4"
174 addu 0x10203040,r0,r7
176 expect r9,0x00000082,"extu #1"
179 expect r9,0x00000082,"extu #2"
181 addu 0x0f0e0d0c,r0,r9
183 expect r7,0x00000068,"extu #3"
186 expect r7,0x00000068,"extu #4"
191 addu 0xfedcba98,r0,r9
193 expect r9,0xfedcbe78,"ins #1"
195 addu 0xfedcba98,r0,r9
197 expect r9,0xfedcbe78,"ins #2"
199 addu 0xfedcba98,r0,r9
201 expect r7,0x01234187,"ins #3"
204 addu 0xfedcba98,r0,r9
206 expect r7,0x01234187,"ins #4"
211 expect r9,0xc,"lmo #1"
214 expect r9,32,"lmo #2"
220 addu 0x0000000f,r0,r7
221 addu 0x12345678,r0,r8
223 expect r9,0x1234567f,"or #1"
226 expect r9,0x12347fff,"or #2"
229 expect r9,0xff3456ff,"or #3"
232 addu 0x0000000f,r0,r7
233 addu 0x12345678,r0,r8
235 expect r9,0x1234567f,"or.tt #1"
238 expect r9,0x12347fff,"or.tt #2"
240 or.tt 0xff0000ff,r8,r9
241 expect r9,0xff3456ff,"or.tt #3"
244 addu 0x0000000f,r0,r7
245 addu 0x12345678,r0,r8
247 expect r9,0xfffffff7,"or.ff #1"
250 expect r9,0xffffa987,"or.ff #2"
252 or.ff 0xff0000ff,r8,r9
253 expect r9,0xedffff87,"or.ff #3"
256 addu 0x0000000f,r0,r7
257 addu 0x12345678,r0,r8
259 expect r9,0xfffffff8,"or.ft #1"
262 expect r9,0xffffd678,"or.ft #2"
264 or.ft 0xff0000ff,r8,r9
265 expect r9,0x12ffff78,"or.ft #3"
268 addu 0x0000000f,r0,r7
269 addu 0x12345678,r0,r8
271 expect r9,0xedcba98f,"or.tf #1"
274 expect r9,0xedcbffff,"or.tf #2"
276 or.tf 0xff0000ff,r8,r9
277 expect r9,0xffcba9ff,"or.tf #3"
280 addu 0xdcba9800,r0,r7
282 expect r9,0x14,"rmo #1"
285 expect r9,32,"rmo #2"
291 expect r9,0x38091a2b,"rotl #1"
294 expect r9,0x38091a2b,"rotl #2"
300 expect r9,0x38091a2b,"rotr #1"
303 expect r9,0x38091a2b,"rotr #2"
309 expect r9,0x2468ace0,"shl #1"
312 expect r9,0x2468ace0,"shl #2"
317 addu 0xfedcba98,r0,r9
319 expect r9,0xfedcbe78,"sl #1"
321 addu 0xfedcba98,r0,r9
323 expect r9,0xfedcbe78,"sl #2"
325 addu 0xfedcba98,r0,r9
327 expect r7,0x01234187,"sl #3"
330 addu 0xfedcba98,r0,r9
332 expect r7,0x01234187,"sl #4"
337 expect r9,0x38091a2b,"sl #5"
340 expect r9,0x38091a2b,"sl #6"
345 expect r9,0x2468ace0,"sl #7"
348 expect r9,0x2468ace0,"sl #8"
353 addu 0xfedcba98,r0,r9
355 expect r9,0x12345298,"sli #1"
357 addu 0xfedcba98,r0,r9
359 expect r9,0x12345298,"sli #2"
361 addu 0xfedcba98,r0,r9
363 expect r7,0xedcbad67,"sli #3"
367 expect r7,0xedcbad67,"sli #4"
373 expect r9,0x38091a2b,"sr #1"
376 expect r9,0x38091a2b,"sr #2"
380 addu 0xfedcba98,r0,r9
382 expect r9,0x00091a2b,"sr #3"
385 expect r9,0x00091a2b,"sr #4"
387 addu 0xfedcba98,r0,r9
389 expect r7,0xfff6e5d4,"sr #5"
393 expect r7,0xfff6e5d4,"sr #6"
397 addu 0xfedcba98,r0,r9
399 expect r9,0x00091a2b,"sr #7"
402 expect r9,0x00091a2b,"sr #8"
404 addu 0xfedcba98,r0,r9
406 expect r7,0x07f6e5d4,"sr #9"
410 expect r7,0x07f6e5d4,"sr #10"
414 addu 0x10203040,r0,r7
416 expect r9,0xffffff82,"sr #11"
419 expect r9,0xffffff82,"sr #12"
421 addu 0x0f0e0d0c,r0,r9
423 expect r7,0x00000068,"sr #13"
426 expect r7,0x00000068,"sr #14"
430 addu 0x10203040,r0,r7
432 expect r9,0x00000082,"sr #15"
435 expect r9,0x00000082,"sr #16"
437 addu 0x0f0e0d0c,r0,r9
439 expect r7,0x00000068,"sr #17"
442 expect r7,0x00000068,"sr #18"
447 addu 0xfedcba98,r0,r9
449 expect r9,0x00091a2b,"sra #1"
452 expect r9,0x00091a2b,"sra #2"
454 addu 0xfedcba98,r0,r9
456 expect r7,0xfff6e5d4,"sra #3"
460 expect r7,0xfff6e5d4,"sra #4"
462 addu 0xaabbccdd, r0, r4
464 expect r2, 0xaabbccdd, "sra #5"
469 addu 0xfedcba98,r0,r9
471 expect r9,0xf8091a98,"sri #1"
474 expect r9,0xf8091a98,"sri #2"
479 addu 0xfedcba98,r0,r9
481 expect r9,0x00091a2b,"srl #1"
484 expect r9,0x00091a2b,"srl #2"
486 addu 0xfedcba98,r0,r9
488 expect r7,0x07f6e5d4,"srl #3"
492 expect r7,0x07f6e5d4,"srl #4"
495 addu 0x12345678,r0,r7
496 addu 0x12345677,r0,r8
504 addu 0x12345677,r0,r8
510 ; addu 0x80000000,r0,r8
512 ; expect r9,0x80000000,"sub #4"
515 addu 0x12345678,r0,r7
516 addu 0x12345677,r0,r8
518 expect r9,1,"subu #1"
522 expect r9,1,"subu #2"
524 addu 0x12345677,r0,r8
525 subu 0x12345678,r8,r9
526 expect r9,1,"subu #3"
529 addu 0x80000000,r0,r8
531 expect r9,0x80000000,"subu #4"
535 addu 0x12345678,r0,r8
537 expect r9,0xedcba988,"xnor #1"
540 expect r9,0xedcbd678,"xnor #2"
542 xnor 0xff0000ff,r8,r9
543 expect r9,0x12cba978,"xnor #3"
547 addu 0x12345678,r0,r8
549 expect r9,0x12345677,"xor #1"
552 expect r9,0x12342987,"xor #2"
555 expect r9,0xed345687,"xor #3"
558 ld _errors(r0),r2 ; # of errors
559 addu 1,r0,r15 ; exit system call number