filename | test/sh4/mac.s |
changeset | 358:65043a8f5785 |
author | nkeynes |
date | Thu Feb 14 13:54:11 2008 +0000 (16 years ago) |
branch | lxdream-render |
permissions | -rw-r--r-- |
last change | Commit render work in progress. Main changes: * Preliminary OSMesa support * Move the generic gl code out to pvr2/ * Implement scene data structure + reader * Remove the 1/z adjustments |
file | annotate | diff | log | raw |
nkeynes@358 | 1 | .section .text |
nkeynes@358 | 2 | .include "sh4/inc.s" |
nkeynes@358 | 3 | ! |
nkeynes@358 | 4 | ! Test MAC Rm,Rn operation |
nkeynes@358 | 5 | ! |
nkeynes@358 | 6 | .global _test_mac |
nkeynes@358 | 7 | _test_mac: |
nkeynes@358 | 8 | start_test |
nkeynes@358 | 9 | |
nkeynes@358 | 10 | test_macl_1: ! Basic mac.l ops. |
nkeynes@358 | 11 | add #1, r12 |
nkeynes@358 | 12 | clrmac |
nkeynes@358 | 13 | clrs |
nkeynes@358 | 14 | mov.l test_macl_1_inputs_k, r0 |
nkeynes@358 | 15 | mov.l test_macl_1_results_k, r6 |
nkeynes@358 | 16 | mov r0, r1 |
nkeynes@358 | 17 | mac.l @r0+, @r1+ |
nkeynes@358 | 18 | sts macl, r2 |
nkeynes@358 | 19 | sts mach, r3 |
nkeynes@358 | 20 | mov.l @r6+, r4 |
nkeynes@358 | 21 | cmp/eq r2, r4 |
nkeynes@358 | 22 | bf test_macl_1_fail |
nkeynes@358 | 23 | xor r5, r5 |
nkeynes@358 | 24 | cmp/eq r3, r5 |
nkeynes@358 | 25 | bf test_macl_1_fail |
nkeynes@358 | 26 | cmp/eq r0, r1 |
nkeynes@358 | 27 | bf test_macl_1_fail |
nkeynes@358 | 28 | mov.l test_macl_1_inputs_k, r0 |
nkeynes@358 | 29 | cmp/eq r0, r1 |
nkeynes@358 | 30 | bt test_macl_1_fail |
nkeynes@358 | 31 | add #-4, r1 |
nkeynes@358 | 32 | cmp/eq r0, r1 |
nkeynes@358 | 33 | bf test_macl_1_fail |
nkeynes@358 | 34 | |
nkeynes@358 | 35 | mac.l @r0+, @r0+ |
nkeynes@358 | 36 | sts macl, r2 |
nkeynes@358 | 37 | sts mach, r3 |
nkeynes@358 | 38 | mov.l @r6+, r4 |
nkeynes@358 | 39 | cmp/eq r2, r4 |
nkeynes@358 | 40 | bf test_macl_1_fail |
nkeynes@358 | 41 | xor r5, r5 |
nkeynes@358 | 42 | cmp/eq r3, r5 |
nkeynes@358 | 43 | bf test_macl_1_fail |
nkeynes@358 | 44 | add #8, r1 |
nkeynes@358 | 45 | cmp/eq r0, r1 |
nkeynes@358 | 46 | bf test_macl_1_fail |
nkeynes@358 | 47 | |
nkeynes@358 | 48 | mac.l @r0+, @r1+ |
nkeynes@358 | 49 | sts macl, r2 |
nkeynes@358 | 50 | sts mach, r3 |
nkeynes@358 | 51 | mov.l @r6+, r4 |
nkeynes@358 | 52 | cmp/eq r2, r4 |
nkeynes@358 | 53 | bf test_macl_1_fail |
nkeynes@358 | 54 | mov.l @r6+, r5 |
nkeynes@358 | 55 | cmp/eq r3, r5 |
nkeynes@358 | 56 | bf test_macl_1_fail |
nkeynes@358 | 57 | bra test_macl_2 |
nkeynes@358 | 58 | nop |
nkeynes@358 | 59 | test_macl_1_fail: |
nkeynes@358 | 60 | fail test_mac_str_k |
nkeynes@358 | 61 | bra test_macl_2 |
nkeynes@358 | 62 | nop |
nkeynes@358 | 63 | test_macl_1_inputs_k: |
nkeynes@358 | 64 | .long test_macl_1_inputs |
nkeynes@358 | 65 | test_macl_1_inputs: |
nkeynes@358 | 66 | .long 0x00000010 |
nkeynes@358 | 67 | .long 0x00000021 |
nkeynes@358 | 68 | .long 0xF0000002 |
nkeynes@358 | 69 | test_macl_1_results_k: |
nkeynes@358 | 70 | .long test_macl_1_results |
nkeynes@358 | 71 | test_macl_1_results: |
nkeynes@358 | 72 | .long 0x00000100 |
nkeynes@358 | 73 | .long 0x00000310 |
nkeynes@358 | 74 | .long 0xC0000314 |
nkeynes@358 | 75 | .long 0x00FFFFFF |
nkeynes@358 | 76 | |
nkeynes@358 | 77 | test_macl_2: ! Test saturation |
nkeynes@358 | 78 | add #1, r12 |
nkeynes@358 | 79 | sets |
nkeynes@358 | 80 | mova test_macl_2_results, r0 |
nkeynes@358 | 81 | mov r0, r3 |
nkeynes@358 | 82 | mova test_macl_2_inputs, r0 |
nkeynes@358 | 83 | mac.l @r0+, @r0+ |
nkeynes@358 | 84 | sts macl, r1 |
nkeynes@358 | 85 | mov.l @r3+, r2 |
nkeynes@358 | 86 | cmp/eq r1, r2 |
nkeynes@358 | 87 | bf test_macl_2_fail |
nkeynes@358 | 88 | sts mach, r1 |
nkeynes@358 | 89 | mov.l @r3+, r2 |
nkeynes@358 | 90 | cmp/eq r1, r2 |
nkeynes@358 | 91 | bf test_macl_2_fail |
nkeynes@358 | 92 | mov r0, r1 |
nkeynes@358 | 93 | mova test_macl_2_inputs, r0 |
nkeynes@358 | 94 | add #8, r0 |
nkeynes@358 | 95 | cmp/eq r0, r1 |
nkeynes@358 | 96 | bf test_macl_2_fail |
nkeynes@358 | 97 | |
nkeynes@358 | 98 | mac.l @r0+, @r0+ |
nkeynes@358 | 99 | sts macl, r1 |
nkeynes@358 | 100 | mov.l @r3+, r2 |
nkeynes@358 | 101 | cmp/eq r1, r2 |
nkeynes@358 | 102 | bf test_macl_2_fail |
nkeynes@358 | 103 | sts mach, r1 |
nkeynes@358 | 104 | mov.l @r3+, r2 |
nkeynes@358 | 105 | cmp/eq r1, r2 |
nkeynes@358 | 106 | bt test_macw_1 |
nkeynes@358 | 107 | |
nkeynes@358 | 108 | test_macl_2_fail: |
nkeynes@358 | 109 | fail test_mac_str_k |
nkeynes@358 | 110 | bra test_macw_1 |
nkeynes@358 | 111 | nop |
nkeynes@358 | 112 | test_macl_2_inputs: |
nkeynes@358 | 113 | .long 0x00000000 |
nkeynes@358 | 114 | .long 0x00000010 |
nkeynes@358 | 115 | .long 0x7FFFFFDB |
nkeynes@358 | 116 | .long 0x800000EC |
nkeynes@358 | 117 | |
nkeynes@358 | 118 | test_macl_2_results: |
nkeynes@358 | 119 | .long 0xFFFFFFFF |
nkeynes@358 | 120 | .long 0x00007FFF |
nkeynes@358 | 121 | .long 0x00000000 |
nkeynes@358 | 122 | .long 0xFFFF8000 |
nkeynes@358 | 123 | |
nkeynes@358 | 124 | test_macw_1: |
nkeynes@358 | 125 | add #1, r12 |
nkeynes@358 | 126 | clrs |
nkeynes@358 | 127 | clrmac |
nkeynes@358 | 128 | |
nkeynes@358 | 129 | mova test_macw_1_results, r0 |
nkeynes@358 | 130 | mov r0, r4 |
nkeynes@358 | 131 | mova test_macw_1_inputs, r0 |
nkeynes@358 | 132 | mov r0, r1 |
nkeynes@358 | 133 | mac.w @r0+, @r1+ |
nkeynes@358 | 134 | sts macl, r2 |
nkeynes@358 | 135 | mov.l @r4+, r3 |
nkeynes@358 | 136 | cmp/eq r2, r3 |
nkeynes@358 | 137 | bf test_macw_1_fail |
nkeynes@358 | 138 | sts mach, r2 |
nkeynes@358 | 139 | tst r2,r2 |
nkeynes@358 | 140 | bf test_macw_1_fail |
nkeynes@358 | 141 | cmp/eq r0, r1 |
nkeynes@358 | 142 | bf test_macw_1_fail |
nkeynes@358 | 143 | mova test_macw_1_inputs, r0 |
nkeynes@358 | 144 | add #-2, r1 |
nkeynes@358 | 145 | cmp/eq r0, r1 |
nkeynes@358 | 146 | bf test_macw_1_fail |
nkeynes@358 | 147 | |
nkeynes@358 | 148 | mac.w @r0+, @r0+ |
nkeynes@358 | 149 | sts macl, r2 |
nkeynes@358 | 150 | mov.l @r4+, r3 |
nkeynes@358 | 151 | cmp/eq r2, r3 |
nkeynes@358 | 152 | bf test_macw_1_fail |
nkeynes@358 | 153 | sts mach, r2 |
nkeynes@358 | 154 | tst r2, r2 |
nkeynes@358 | 155 | bf test_macw_1_fail |
nkeynes@358 | 156 | add #4, r1 |
nkeynes@358 | 157 | cmp/eq r0, r1 |
nkeynes@358 | 158 | bf test_macw_1_fail |
nkeynes@358 | 159 | |
nkeynes@358 | 160 | add #2, r1 |
nkeynes@358 | 161 | mac.w @r0+, @r1+ |
nkeynes@358 | 162 | sts macl, r2 |
nkeynes@358 | 163 | mov.l @r4+, r3 |
nkeynes@358 | 164 | cmp/eq r2, r3 |
nkeynes@358 | 165 | bf test_macw_1_fail |
nkeynes@358 | 166 | sts mach, r2 |
nkeynes@358 | 167 | tst r2, r2 |
nkeynes@358 | 168 | bf test_macw_1_fail |
nkeynes@358 | 169 | bra test_macw_2 |
nkeynes@358 | 170 | nop |
nkeynes@358 | 171 | |
nkeynes@358 | 172 | test_macw_1_fail: |
nkeynes@358 | 173 | fail test_mac_str_k |
nkeynes@358 | 174 | bra test_macw_2 |
nkeynes@358 | 175 | nop |
nkeynes@358 | 176 | test_macw_1_inputs: |
nkeynes@358 | 177 | .long 0x00210014 |
nkeynes@358 | 178 | .long 0x0002FFFF |
nkeynes@358 | 179 | test_macw_1_results: |
nkeynes@358 | 180 | .long 0x00000190 |
nkeynes@358 | 181 | .long 0x00000424 |
nkeynes@358 | 182 | .long 0x00000422 |
nkeynes@358 | 183 | |
nkeynes@358 | 184 | test_macw_2: |
nkeynes@358 | 185 | add #1, r12 |
nkeynes@358 | 186 | sets |
nkeynes@358 | 187 | clrmac |
nkeynes@358 | 188 | xor r0, r0 |
nkeynes@358 | 189 | not r0, r0 |
nkeynes@358 | 190 | lds r0, mach |
nkeynes@358 | 191 | |
nkeynes@358 | 192 | mova test_macw_2_results, r0 |
nkeynes@358 | 193 | mov r0, r3 |
nkeynes@358 | 194 | mova test_macw_2_inputs, r0 |
nkeynes@358 | 195 | mov #3, r6 |
nkeynes@358 | 196 | test_macw_2_loop: |
nkeynes@358 | 197 | mac.w @r0+, @r0+ |
nkeynes@358 | 198 | sts macl, r1 |
nkeynes@358 | 199 | mov.l @r3+, r2 |
nkeynes@358 | 200 | cmp/eq r1, r2 |
nkeynes@358 | 201 | bf test_macw_2_fail |
nkeynes@358 | 202 | sts mach, r1 |
nkeynes@358 | 203 | mov.l @r3+, r2 |
nkeynes@358 | 204 | cmp/eq r1, r2 |
nkeynes@358 | 205 | bf test_macw_2_fail |
nkeynes@358 | 206 | dt r6 |
nkeynes@358 | 207 | bf test_macw_2_loop |
nkeynes@358 | 208 | |
nkeynes@358 | 209 | clrmac |
nkeynes@358 | 210 | mov #3, r6 |
nkeynes@358 | 211 | test_macw_2_loop_2: |
nkeynes@358 | 212 | mac.w @r0+, @r0+ |
nkeynes@358 | 213 | sts macl, r1 |
nkeynes@358 | 214 | mov.l @r3+, r2 |
nkeynes@358 | 215 | cmp/eq r1, r2 |
nkeynes@358 | 216 | bf test_macw_2_fail |
nkeynes@358 | 217 | sts mach, r1 |
nkeynes@358 | 218 | mov.l @r3+, r2 |
nkeynes@358 | 219 | cmp/eq r1, r2 |
nkeynes@358 | 220 | bf test_macw_2_fail |
nkeynes@358 | 221 | dt r6 |
nkeynes@358 | 222 | bf test_macw_2_loop_2 |
nkeynes@358 | 223 | bra test_mac_end |
nkeynes@358 | 224 | nop |
nkeynes@358 | 225 | |
nkeynes@358 | 226 | test_macw_2_fail: |
nkeynes@358 | 227 | fail test_mac_str_k |
nkeynes@358 | 228 | bra test_mac_end |
nkeynes@358 | 229 | nop |
nkeynes@358 | 230 | test_macw_2_inputs: |
nkeynes@358 | 231 | .long 0x7FFE7FFF |
nkeynes@358 | 232 | .long 0x7FFF7FFD |
nkeynes@358 | 233 | .long 0x7FFB7FFC |
nkeynes@358 | 234 | .long 0x80007FF1 |
nkeynes@358 | 235 | .long 0x7FF28003 |
nkeynes@358 | 236 | .long 0x80047FF5 |
nkeynes@358 | 237 | test_macw_2_results: |
nkeynes@358 | 238 | .long 0x3FFE8002 |
nkeynes@358 | 239 | .long 0xFFFFFFFF |
nkeynes@358 | 240 | .long 0x7FFC8005 |
nkeynes@358 | 241 | .long 0xFFFFFFFF |
nkeynes@358 | 242 | .long 0x7FFFFFFF |
nkeynes@358 | 243 | .long 0x00000001 |
nkeynes@358 | 244 | .long 0xC0078000 |
nkeynes@358 | 245 | .long 0x00000000 |
nkeynes@358 | 246 | .long 0x800FFFD6 |
nkeynes@358 | 247 | .long 0x00000000 |
nkeynes@358 | 248 | .long 0x80000000 |
nkeynes@358 | 249 | .long 0x00000001 |
nkeynes@358 | 250 | |
nkeynes@358 | 251 | test_mac_end: |
nkeynes@358 | 252 | end_test test_mac_str_k |
nkeynes@358 | 253 | |
nkeynes@358 | 254 | test_mac_data_end: |
nkeynes@358 | 255 | .align 4 |
nkeynes@358 | 256 | test_mac_data_end_k: |
nkeynes@358 | 257 | .long test_mac_data_end |
nkeynes@358 | 258 | test_mac_str_k: |
nkeynes@358 | 259 | .long test_mac_str |
nkeynes@358 | 260 | test_mac_str: |
nkeynes@358 | 261 | .string "MAC" |
nkeynes@358 | 262 |
.