filename | test/sh4/div0.s |
changeset | 364:d738f6883d4a |
author | nkeynes |
date | Sat Jun 14 11:54:15 2008 +0000 (15 years ago) |
permissions | -rw-r--r-- |
last change | Change colour params to float Convert background processing over to scene structure (fixes some depth issues as well) Add color unclamp when supported |
file | annotate | diff | log | raw |
nkeynes@364 | 1 | .section .text |
nkeynes@364 | 2 | .include "sh4/inc.s" |
nkeynes@364 | 3 | ! |
nkeynes@364 | 4 | ! Test DIV0 operation |
nkeynes@364 | 5 | ! |
nkeynes@364 | 6 | .global _test_div0 |
nkeynes@364 | 7 | _test_div0: |
nkeynes@364 | 8 | start_test |
nkeynes@364 | 9 | mov.l r11, @-r15 |
nkeynes@364 | 10 | mov.l r10, @-r15 |
nkeynes@364 | 11 | |
nkeynes@364 | 12 | test_div0u: |
nkeynes@364 | 13 | add #1, r12 |
nkeynes@364 | 14 | stc sr, r2 |
nkeynes@364 | 15 | mov.l test_div0_sr_mask, r0 |
nkeynes@364 | 16 | or r0, r2 |
nkeynes@364 | 17 | ldc r2, sr |
nkeynes@364 | 18 | |
nkeynes@364 | 19 | div0u |
nkeynes@364 | 20 | stc sr, r3 |
nkeynes@364 | 21 | mov r3, r4 |
nkeynes@364 | 22 | and r0, r4 |
nkeynes@364 | 23 | tst r4, r4 |
nkeynes@364 | 24 | bf test_div0u_fail |
nkeynes@364 | 25 | not r0, r0 |
nkeynes@364 | 26 | and r0, r3 |
nkeynes@364 | 27 | and r0, r2 |
nkeynes@364 | 28 | cmp/eq r2, r3 |
nkeynes@364 | 29 | bt test_div0s |
nkeynes@364 | 30 | test_div0u_fail: |
nkeynes@364 | 31 | fail test_div0_str_k |
nkeynes@364 | 32 | |
nkeynes@364 | 33 | test_div0s: |
nkeynes@364 | 34 | mova test_div0s_data, r0 |
nkeynes@364 | 35 | mov r0, r11 |
nkeynes@364 | 36 | mov #4, r10 |
nkeynes@364 | 37 | |
nkeynes@364 | 38 | test_div0s_loop: |
nkeynes@364 | 39 | add #1, r12 |
nkeynes@364 | 40 | mov.l @r11+, r1 |
nkeynes@364 | 41 | mov.l @r11+, r2 |
nkeynes@364 | 42 | mov.l @r11+, r3 |
nkeynes@364 | 43 | div0s r1,r2 |
nkeynes@364 | 44 | stc sr, r4 |
nkeynes@364 | 45 | mov.l test_div0_sr_mask, r0 |
nkeynes@364 | 46 | and r0,r4 |
nkeynes@364 | 47 | cmp/eq r3,r4 |
nkeynes@364 | 48 | bt test_div0s_ok |
nkeynes@364 | 49 | fail test_div0_str_k |
nkeynes@364 | 50 | test_div0s_ok: |
nkeynes@364 | 51 | dt r10 |
nkeynes@364 | 52 | bf test_div0s_loop |
nkeynes@364 | 53 | |
nkeynes@364 | 54 | test_div0_end: |
nkeynes@364 | 55 | mov.l @r15+, r10 |
nkeynes@364 | 56 | mov.l @r15+, r11 |
nkeynes@364 | 57 | end_test test_div0_str_k |
nkeynes@364 | 58 | |
nkeynes@364 | 59 | test_div0s_data: |
nkeynes@364 | 60 | .long 0x01234567 |
nkeynes@364 | 61 | .long 0x12345678 |
nkeynes@364 | 62 | .long 0x00000000 |
nkeynes@364 | 63 | .long 0xFFFF8912 |
nkeynes@364 | 64 | .long 0x7ABC1526 |
nkeynes@364 | 65 | .long 0x00000201 |
nkeynes@364 | 66 | .long 0x55443322 |
nkeynes@364 | 67 | .long 0x80000234 |
nkeynes@364 | 68 | .long 0x00000101 |
nkeynes@364 | 69 | .long 0xFFFFFFFF |
nkeynes@364 | 70 | .long 0x9CD39495 |
nkeynes@364 | 71 | .long 0x00000300 |
nkeynes@364 | 72 | |
nkeynes@364 | 73 | test_div0_sr_mask: |
nkeynes@364 | 74 | .long 0x00000301 |
nkeynes@364 | 75 | |
nkeynes@364 | 76 | test_div0_str_k: |
nkeynes@364 | 77 | .long test_div0_str |
nkeynes@364 | 78 | test_div0_str: |
nkeynes@364 | 79 | .string "DIV0" |
nkeynes@364 | 80 |
.