revision 358:65043a8f5785
summary |
tree |
shortlog |
changelog |
graph |
changeset |
raw | bz2 | zip | gz changeset | 358:65043a8f5785 |
parent | 357:3592a10b3242 |
child | 359:c588dce7ebde |
author | nkeynes |
date | Thu Aug 23 12:31:31 2007 +0000 (16 years ago) |
Add tests for mac.l and mac.w
Start test cases for fmov
Update exception tests
Start test cases for fmov
Update exception tests
![]() | test/Makefile | view | annotate | diff | log | |
![]() | test/sh4/excslot.s | view | annotate | diff | log | |
![]() | test/sh4/float.s | view | annotate | diff | log | |
![]() | test/sh4/fmov.s | view | annotate | diff | log | |
![]() | test/sh4/ftrc.s | view | annotate | diff | log | |
![]() | test/sh4/mac.s | view | annotate | diff | log | |
![]() | test/sh4/testsh4.c | view | annotate | diff | log | |
![]() | test/sh4/undef.s | view | annotate | diff | log |
1.1 --- a/test/Makefile Tue Feb 13 08:34:27 2007 +00001.2 +++ b/test/Makefile Thu Aug 23 12:31:31 2007 +00001.3 @@ -74,7 +74,7 @@1.4 testsh4: crt0.so sh4/testsh4.so timer.so interrupt.so \1.5 sh4/add.so sh4/addc.so sh4/addv.so sh4/and.so sh4/andi.so \1.6 sh4/bf.so sh4/bt.so sh4/cmp.so \1.7 - sh4/float.so sh4/ftrc.so \1.8 + sh4/float.so sh4/fmov.so sh4/ftrc.so sh4/mac.s \1.9 sh4/excslot.so sh4/undef.so1.10 $(SH4CC) $(SH4LDFLAGS) $^ -o $@ $(SH4LIBS)1.11 $(SH4OBJCOPY) testsh4 testsh4.bin
2.1 --- a/test/sh4/excslot.s Tue Feb 13 08:34:27 2007 +00002.2 +++ b/test/sh4/excslot.s Thu Aug 23 12:31:31 2007 +00002.3 @@ -169,16 +169,39 @@2.4 .word 0xFFFD2.5 assert_exc_caught test_slot_str_k test_slot_17_pc2.7 +test_slot_18: ! "Undefined (FPU disabled)" 0xFFFD2.8 + add #1, r122.9 + stc sr, r02.10 + xor r1, r12.11 + add #32, r12.12 + shll2 r12.13 + shll8 r12.14 + or r0, r12.15 + ldc r1, sr2.16 + expect_exc 0x000001A02.17 +test_slot_18_pc:2.18 + bsr test_slot_fail2.19 + .word 0xFFFD2.20 + assert_exc_caught test_slot_str_k test_slot_18_pc2.21 + stc sr, r02.22 + xor r1, r12.23 + add #32, r12.24 + shll2 r12.25 + shll8 r12.26 + not r1, r12.27 + and r0, r12.28 + ldc r1, sr2.29 +2.30 !2.31 ! Ok now the privilege tests. These should raise SLOT_ILLEGAL when executed2.32 ! in a delay slot (otherwise it's GENERAL_ILLEGAL)2.34 -test_slot_18: ! LDC Rn, SPC in user mode2.35 +test_slot_19: ! LDC Rn, SPC in user mode2.36 ! add #1, r122.37 ! expect_exc 0x000001A02.38 ! stc spc, r42.39 ! usermode2.40 -!test_slot_18_pc:2.41 +!test_slot_19_pc:2.42 ! bsr test_slot_fail2.43 ! ldc r4, spc2.44 ! systemmode
3.1 --- a/test/sh4/float.s Tue Feb 13 08:34:27 2007 +00003.2 +++ b/test/sh4/float.s Thu Aug 23 12:31:31 2007 +00003.3 @@ -186,24 +186,83 @@3.4 sts fpul, r23.5 mov.l test_float_6_result, r13.6 cmp/eq r1, r23.7 - bt test_float_end3.8 + bt test_float_73.10 test_float_6_fail:3.11 fail test_float_str_k3.12 - bra test_float_end3.13 + bra test_float_73.14 nop3.16 test_float_6_input:3.17 .long 0x800000003.18 test_float_6_result:3.19 .long 0xCF0000003.20 +3.21 +test_float_7:3.22 + add #1, r123.23 + fldi0 fr83.24 + fldi0 fr93.25 + fldi0 fr103.26 + frchg3.27 + fldi0 fr83.28 + fldi0 fr93.29 + fldi0 fr103.30 + setpr3.31 + mov.l test_float_7_input, r03.32 + lds r0, fpul3.33 + float fpul, fr93.34 + sts fpul,r13.35 + cmp/eq r0,r13.36 + bf test_float_7_fail3.37 + flds fr8, fpul3.38 + sts fpul, r03.39 + tst r0, r03.40 + bf test_float_7_fail3.41 + flds fr9, fpul3.42 + sts fpul, r03.43 + mov.l test_float_7_output_a, r13.44 + cmp/eq r0, r13.45 + bf test_float_7_fail3.46 + flds fr10, fpul3.47 + sts fpul, r03.48 + tst r0, r03.49 + bf test_float_7_fail3.50 + frchg3.51 + flds fr8, fpul3.52 + sts fpul, r03.53 + flds fr9, fpul3.54 + sts fpul, r13.55 + flds fr10, fpul3.56 + sts fpul, r23.57 + tst r0, r03.58 + bf test_float_7_fail3.59 + tst r1, r13.60 + bf test_float_7_fail3.61 + tst r2, r23.62 + bt test_float_end3.63 +test_float_7_fail:3.64 + fail test_float_str_k3.65 + bra test_float_end3.66 + nop3.67 +3.68 +test_float_7_input:3.69 + .long 0x123456783.70 +test_float_7_output_a:3.71 + .long 0x41B234563.72 +test_float_7_output_b:3.73 + .long 0x780000003.74 +printf_k:3.75 + .long _printf3.77 test_float_end:3.78 end_test test_float_str_k3.80 test_float_str:3.81 .string "FLOAT"3.82 + .align 43.83 +printf_fmt:3.84 + .string "%08X %08X\n"3.86 .align 43.87 test_float_str_k:3.88 - .long test_float_str3.89 \ No newline at end of file3.90 + .long test_float_str
4.1 --- /dev/null Thu Jan 01 00:00:00 1970 +00004.2 +++ b/test/sh4/fmov.s Thu Aug 23 12:31:31 2007 +00004.3 @@ -0,0 +1,320 @@4.4 +.section .text4.5 +.include "sh4/inc.s"4.6 +!4.7 +! Test fmov (all variants)4.8 +! (not arithmetic)4.9 +4.10 +.global _test_fmov4.11 +_test_fmov:4.12 + start_test4.13 +4.14 + xor r0,r04.15 + lds r0, fpscr4.16 +4.17 +test_fmov_1: ! single precision reg-to-reg4.18 + add #1, r124.19 +4.20 + fldi0 fr04.21 + fldi1 fr14.22 + flds fr0, fpul4.23 + sts fpul, r04.24 + tst r0, r04.25 + bf test_fmov_1_fail4.26 + fmov fr1, fr04.27 + flds fr0, fpul4.28 + sts fpul, r04.29 + mov.l test_fmov_1_result, r14.30 + cmp/eq r0, r14.31 + bt test_fmov_24.32 +test_fmov_1_fail:4.33 + fail test_fmov_str_k4.34 + bra test_fmov_24.35 + nop4.36 +4.37 +test_fmov_1_result:4.38 + .long 0x3F8000004.39 +4.40 +test_fmov_2: ! reg-to-reg double prec4.41 + add #1, r124.42 + mov.l test_fmov_2_input_a, r14.43 + lds r1, fpul4.44 + fsts fpul, fr44.45 + mov.l test_fmov_2_input_b, r34.46 + lds r3, fpul4.47 + fsts fpul, fr54.48 + fldi0 fr84.49 + fldi0 fr94.50 + fschg4.51 + flds fr8, fpul4.52 + sts fpul, r04.53 + tst r0, r04.54 + bf test_fmov_2_fail4.55 + flds fr9, fpul4.56 + sts fpul, r04.57 + tst r0, r04.58 + bf test_fmov_2_fail4.59 + fmov fr4, fr84.60 + flds fr8, fpul4.61 + sts fpul, r04.62 + flds fr9, fpul4.63 + sts fpul, r24.64 + cmp/eq r0, r14.65 + bf test_fmov_2_fail4.66 + cmp/eq r2, r34.67 + bt test_fmov_34.68 +test_fmov_2_fail:4.69 + fail test_fmov_str_k4.70 + bra test_fmov_34.71 + nop4.72 +test_fmov_2_input_a:4.73 + .long 0x123456784.74 +test_fmov_2_input_b:4.75 + .long 0x9ABCDEF04.76 +4.77 +test_fmov_3: ! double size DRm to XDn4.78 + add #1, r124.79 + frchg4.80 + fldi0 fr84.81 + fldi0 fr94.82 + frchg4.83 + fldi0 fr84.84 + fldi0 fr94.85 + mov.l test_fmov_3_input_a, r24.86 + lds r2, fpul4.87 + fsts fpul, fr24.88 + mov.l test_fmov_3_input_b, r34.89 + lds r3, fpul4.90 + fsts fpul, fr34.91 +4.92 + fmov fr2, fr94.93 + flds fr8, fpul4.94 + sts fpul, r04.95 + flds fr9, fpul4.96 + sts fpul, r14.97 + tst r0, r04.98 + bf test_fmov_3_fail4.99 + tst r1, r14.100 + bf test_fmov_3_fail4.101 + frchg4.102 + flds fr8, fpul4.103 + sts fpul, r04.104 + flds fr9, fpul4.105 + sts fpul, r14.106 + cmp/eq r0, r24.107 + bf test_fmov_3_fail4.108 + cmp/eq r1, r34.109 + bt test_fmov_44.110 +4.111 +test_fmov_3_fail:4.112 + fail test_fmov_str_k4.113 + bra test_fmov_44.114 + nop4.115 +4.116 +test_fmov_3_input_a:4.117 + .long 0x864213574.118 +test_fmov_3_input_b:4.119 + .long 0x975324684.120 +4.121 +test_fmov_4: ! double size XDm to DRn4.122 + add #1, r124.123 + mov.l test_fmov_4_input_a, r24.124 + lds r2, fpul4.125 + fsts fpul, fr64.126 + mov.l test_fmov_4_input_b, r34.127 + lds r3, fpul4.128 + fsts fpul, fr74.129 + fldi0 fr04.130 + fldi0 fr14.131 + frchg4.132 + fldi0 fr64.133 + fldi0 fr74.134 +4.135 + fmov fr7, fr04.136 + flds fr0, fpul4.137 + sts fpul, r04.138 + flds fr1, fpul4.139 + sts fpul, r14.140 + cmp/eq r0, r24.141 + bf test_fmov_4_fail4.142 + cmp/eq r1, r34.143 + bf test_fmov_4_fail4.144 + frchg4.145 + flds fr0, fpul4.146 + sts fpul, r04.147 + flds fr1, fpul4.148 + sts fpul, r14.149 + tst r0, r04.150 + bf test_fmov_4_fail4.151 + tst r1, r14.152 + bt test_fmov_54.153 +4.154 +test_fmov_4_fail:4.155 + fail test_fmov_str_k4.156 + bra test_fmov_54.157 + nop4.158 +4.159 +test_fmov_4_input_a:4.160 + .long 0xACADACA04.161 +test_fmov_4_input_b:4.162 + .long 0x122334454.163 +4.164 +4.165 +test_fmov_5: ! double size @Rm to DRn, DRm to @Rn4.166 + add #1, r124.167 + mova test_fmov_5_data_a, r04.168 + mov r0, r44.169 + xor r1, r14.170 + mov.l r1, @r04.171 + add #4, r04.172 + mov.l r1, @r04.173 + mova test_fmov_5_input_a, r04.174 + fmov @r0, fr84.175 + mov.l test_fmov_5_input_a, r04.176 + mov.l test_fmov_5_input_b, r14.177 + flds fr8, fpul4.178 + sts fpul, r54.179 + flds fr9, fpul4.180 + sts fpul, r64.181 + cmp/eq r0, r54.182 + bf test_fmov_5_fail4.183 + cmp/eq r1, r64.184 + bf test_fmov_5_fail4.185 + fmov fr8, @r44.186 + mov.l test_fmov_5_data_a, r24.187 + mov.l test_fmov_5_data_b, r34.188 + cmp/eq r0, r24.189 + bf test_fmov_5_fail4.190 + cmp/eq r1, r34.191 + bt test_fmov_64.192 +test_fmov_5_fail:4.193 + fail test_fmov_str_k4.194 + bra test_fmov_64.195 + nop4.196 +4.197 +test_fmov_5_input_a:4.198 + .long 0xFEEDBEEF4.199 +test_fmov_5_input_b:4.200 + .long 0xDEAD12344.201 +test_fmov_5_data_a:4.202 + .long 04.203 +test_fmov_5_data_b:4.204 + .long 04.205 +4.206 +test_fmov_6: ! double size @Rm+ to DRn, DRm to @-Rn4.207 + add #1, r124.208 + mova test_fmov_6_data_a, r04.209 + mov r0, r44.210 + xor r1, r14.211 + mov.l r1, @r44.212 + add #4, r44.213 + mov.l r1, @r44.214 + add #4, r44.215 + mova test_fmov_6_input_a, r04.216 + mov r0, r74.217 + fmov @r7+, fr104.218 + mov.l test_fmov_6_input_a, r04.219 + mov.l test_fmov_6_input_b, r14.220 + flds fr10, fpul4.221 + sts fpul, r54.222 + flds fr11, fpul4.223 + sts fpul, r64.224 + cmp/eq r0, r54.225 + bf test_fmov_6_fail4.226 + cmp/eq r1, r64.227 + bf test_fmov_6_fail4.228 + fmov fr10, @-r44.229 + mov.l test_fmov_6_data_a, r24.230 + mov.l test_fmov_6_data_b, r34.231 + cmp/eq r0, r24.232 + bf test_fmov_6_fail4.233 + cmp/eq r1, r34.234 + bf test_fmov_6_fail4.235 + mova test_fmov_6_data_a, r04.236 + cmp/eq r0, r44.237 + bf test_fmov_6_fail4.238 + cmp/eq r0, r74.239 + bt test_fmov_74.240 +test_fmov_6_fail:4.241 + fail test_fmov_str_k4.242 + bra test_fmov_74.243 + nop4.244 +4.245 +test_fmov_6_input_a:4.246 + .long 0x423185764.247 +test_fmov_6_input_b:4.248 + .long 0xF0AFD34F4.249 +test_fmov_6_data_a:4.250 + .long 04.251 +test_fmov_6_data_b:4.252 + .long 04.253 +4.254 +test_fmov_7: ! double size @Rm,@R0 to DRn, DRm to @Rn,@R04.255 + add #1, r124.256 + mova test_fmov_7_data_a, r04.257 + mov r0, r44.258 + xor r1, r14.259 + mov.l r1, @r44.260 + add #4, r44.261 + mov.l r1, @r44.262 + add #48, r44.263 + mova test_fmov_7_input_a, r04.264 + mov r0, r74.265 + xor r0, r04.266 + add #-31, r74.267 + add #31, r04.268 + fmov @(r0,r7), fr104.269 + mov.l test_fmov_7_input_a, r04.270 + mov.l test_fmov_7_input_b, r14.271 + flds fr10, fpul4.272 + sts fpul, r54.273 + flds fr11, fpul4.274 + sts fpul, r64.275 + cmp/eq r0, r54.276 + bf test_fmov_7_fail4.277 + cmp/eq r1, r64.278 + bf test_fmov_7_fail4.279 + xor r0, r04.280 + add #-52, r04.281 + fmov fr10, @(r0,r4)4.282 + mov.l test_fmov_7_input_a, r04.283 + mov.l test_fmov_7_data_a, r24.284 + mov.l test_fmov_7_data_b, r34.285 + cmp/eq r0, r24.286 + bf test_fmov_7_fail4.287 + cmp/eq r1, r34.288 + bf test_fmov_7_fail4.289 + mova test_fmov_7_data_a, r04.290 + add #52, r04.291 + cmp/eq r0, r44.292 + bf test_fmov_7_fail4.293 + mova test_fmov_7_input_a, r04.294 + add #-31, r04.295 + cmp/eq r0, r74.296 + bt test_fmov_84.297 +test_fmov_7_fail:4.298 + fail test_fmov_str_k4.299 + bra test_fmov_84.300 + nop4.301 +4.302 +test_fmov_7_input_a:4.303 + .long 0xABBACADA4.304 +test_fmov_7_input_b:4.305 + .long 0x435465764.306 +test_fmov_7_data_a:4.307 + .long 04.308 +test_fmov_7_data_b:4.309 + .long 04.310 +4.311 +test_fmov_8:4.312 +4.313 +test_fmov_end:4.314 + xor r0, r04.315 + lds r0, fpscr4.316 + end_test test_fmov_str_k4.317 +4.318 +test_fmov_str:4.319 + .string "FMOV"4.320 +4.321 +.align 44.322 +test_fmov_str_k:4.323 + .long test_fmov_str
5.1 --- a/test/sh4/ftrc.s Tue Feb 13 08:34:27 2007 +00005.2 +++ b/test/sh4/ftrc.s Thu Aug 23 12:31:31 2007 +00005.3 @@ -101,11 +101,11 @@5.4 nop5.6 test_ftrc_4_input_a:5.7 - .long 0x41DFFFFF5.8 + .long 0x40FFFF115.9 test_ftrc_4_input_b:5.10 - .long 0xFFC000005.11 + .long 0x111111115.12 test_ftrc_4_result:5.13 - .long 0x7FFFFFFF5.14 + .long 0x0001FFF15.17 test_ftrc_5: ! test w/ max +int, sz=0, pr=0, fr=15.18 @@ -177,7 +177,7 @@5.19 bt test_ftrc_85.20 test_ftrc_7_fail:5.21 fail test_ftrc_str_k5.22 - bra test_ftrc_75.23 + bra test_ftrc_85.24 nop5.26 test_ftrc_7_input:5.27 @@ -194,10 +194,10 @@5.28 sts fpul, r25.29 mov.l test_ftrc_8_result, r15.30 cmp/eq r1, r25.31 - bt test_ftrc_end5.32 + bt test_ftrc_95.33 test_ftrc_8_fail:5.34 fail test_ftrc_str_k5.35 - bra test_ftrc_85.36 + bra test_ftrc_95.37 nop5.39 test_ftrc_8_input:5.40 @@ -205,7 +205,89 @@5.41 test_ftrc_8_result:5.42 .long 0x800000005.44 +test_ftrc_9: ! Test >max +int pr=15.45 + add #1, r125.46 + setpr5.47 + mov.l test_ftrc_9_input_a, r05.48 + lds r0, fpul5.49 + fsts fpul, fr65.50 + mov.l test_ftrc_9_input_b, r05.51 + lds r0, fpul5.52 + fsts fpul, fr75.53 + ftrc fr6, fpul5.54 + sts fpul, r25.55 + mov.l test_ftrc_9_result, r15.56 + cmp/eq r1, r25.57 + bt test_ftrc_105.58 +test_ftrc_9_fail:5.59 + fail test_ftrc_str_k5.60 + bra test_ftrc_105.61 + nop5.63 +test_ftrc_9_input_a:5.64 + .long 0x41DFFFFF5.65 +test_ftrc_9_input_b:5.66 + .long 0xFFC000005.67 +test_ftrc_9_result:5.68 + .long 0x7FFFFFFF5.69 +5.70 +test_ftrc_10: ! test < min -int5.71 + add #1, r125.72 + mov.l test_ftrc_10_input_a, r05.73 + lds r0, fpul5.74 + fsts fpul, fr85.75 + mov.l test_ftrc_10_input_b, r05.76 + lds r0, fpul5.77 + fsts fpul, fr95.78 + ftrc fr8, fpul5.79 + sts fpul, r25.80 + mov.l test_ftrc_10_result, r15.81 + cmp/eq r1, r25.82 + bt test_ftrc_115.83 +test_ftrc_10_fail:5.84 + fail test_ftrc_str_k5.85 + bra test_ftrc_115.86 + nop5.87 +5.88 +test_ftrc_10_input_a:5.89 + .long 0xFE1111115.90 +test_ftrc_10_input_b:5.91 + .long 0x111111115.92 +test_ftrc_10_result:5.93 + .long 0x800000005.94 +5.95 +test_ftrc_11: ! test undefined instruction, pr=15.96 + add #1, r125.97 + mov.l test_ftrc_11_input_a, r05.98 + lds r0, fpul5.99 + fsts fpul, fr05.100 + mov.l test_ftrc_11_input_b, r15.101 + lds r1, fpul5.102 + fsts fpul, fr15.103 + mov.l test_ftrc_11_input_c, r05.104 + lds r0, fpul5.105 + fsts fpul, fr25.106 + xor r0, r05.107 + not r0, r05.108 + lds r0, fpul5.109 + ftrc fr1, fpul5.110 + sts fpul, r15.111 + mov.l test_ftrc_11_result, r25.112 + cmp/eq r1, r25.113 + bt test_ftrc_end5.114 +test_ftrc_11_fail:5.115 + fail test_ftrc_str_k5.116 + bra test_ftrc_end5.117 + nop5.118 +test_ftrc_11_input_a:5.119 + .long 0x40FFFF115.120 +test_ftrc_11_input_b:5.121 + .long 0x111111115.122 +test_ftrc_11_input_c:5.123 + .long 0x42FFFF115.124 +test_ftrc_11_result:5.125 + .long 0x000000005.126 +5.127 test_ftrc_end:5.128 end_test test_ftrc_str_k
6.1 --- /dev/null Thu Jan 01 00:00:00 1970 +00006.2 +++ b/test/sh4/mac.s Thu Aug 23 12:31:31 2007 +00006.3 @@ -0,0 +1,262 @@6.4 +.section .text6.5 +.include "sh4/inc.s"6.6 +!6.7 +! Test MAC Rm,Rn operation6.8 +!6.9 +.global _test_mac6.10 +_test_mac:6.11 + start_test6.12 +6.13 +test_macl_1: ! Basic mac.l ops.6.14 + add #1, r126.15 + clrmac6.16 + clrs6.17 + mov.l test_macl_1_inputs_k, r06.18 + mov.l test_macl_1_results_k, r66.19 + mov r0, r16.20 + mac.l @r0+, @r1+6.21 + sts macl, r26.22 + sts mach, r36.23 + mov.l @r6+, r46.24 + cmp/eq r2, r46.25 + bf test_macl_1_fail6.26 + xor r5, r56.27 + cmp/eq r3, r56.28 + bf test_macl_1_fail6.29 + cmp/eq r0, r16.30 + bf test_macl_1_fail6.31 + mov.l test_macl_1_inputs_k, r06.32 + cmp/eq r0, r16.33 + bt test_macl_1_fail6.34 + add #-4, r16.35 + cmp/eq r0, r16.36 + bf test_macl_1_fail6.37 +6.38 + mac.l @r0+, @r0+6.39 + sts macl, r26.40 + sts mach, r36.41 + mov.l @r6+, r46.42 + cmp/eq r2, r46.43 + bf test_macl_1_fail6.44 + xor r5, r56.45 + cmp/eq r3, r56.46 + bf test_macl_1_fail6.47 + add #8, r16.48 + cmp/eq r0, r16.49 + bf test_macl_1_fail6.50 +6.51 + mac.l @r0+, @r1+6.52 + sts macl, r26.53 + sts mach, r36.54 + mov.l @r6+, r46.55 + cmp/eq r2, r46.56 + bf test_macl_1_fail6.57 + mov.l @r6+, r56.58 + cmp/eq r3, r56.59 + bf test_macl_1_fail6.60 + bra test_macl_26.61 + nop6.62 +test_macl_1_fail:6.63 + fail test_mac_str_k6.64 + bra test_macl_26.65 + nop6.66 +test_macl_1_inputs_k:6.67 + .long test_macl_1_inputs6.68 +test_macl_1_inputs:6.69 + .long 0x000000106.70 + .long 0x000000216.71 + .long 0xF00000026.72 +test_macl_1_results_k:6.73 + .long test_macl_1_results6.74 +test_macl_1_results:6.75 + .long 0x000001006.76 + .long 0x000003106.77 + .long 0xC00003146.78 + .long 0x00FFFFFF6.79 +6.80 +test_macl_2: ! Test saturation6.81 + add #1, r126.82 + sets6.83 + mova test_macl_2_results, r06.84 + mov r0, r36.85 + mova test_macl_2_inputs, r06.86 + mac.l @r0+, @r0+6.87 + sts macl, r16.88 + mov.l @r3+, r26.89 + cmp/eq r1, r26.90 + bf test_macl_2_fail6.91 + sts mach, r16.92 + mov.l @r3+, r26.93 + cmp/eq r1, r26.94 + bf test_macl_2_fail6.95 + mov r0, r16.96 + mova test_macl_2_inputs, r06.97 + add #8, r06.98 + cmp/eq r0, r16.99 + bf test_macl_2_fail6.100 +6.101 + mac.l @r0+, @r0+6.102 + sts macl, r16.103 + mov.l @r3+, r26.104 + cmp/eq r1, r26.105 + bf test_macl_2_fail6.106 + sts mach, r16.107 + mov.l @r3+, r26.108 + cmp/eq r1, r26.109 + bt test_macw_16.110 +6.111 +test_macl_2_fail:6.112 + fail test_mac_str_k6.113 + bra test_macw_16.114 + nop6.115 +test_macl_2_inputs:6.116 + .long 0x000000006.117 + .long 0x000000106.118 + .long 0x7FFFFFDB6.119 + .long 0x800000EC6.120 +6.121 +test_macl_2_results:6.122 + .long 0xFFFFFFFF6.123 + .long 0x00007FFF6.124 + .long 0x000000006.125 + .long 0xFFFF80006.126 +6.127 +test_macw_1:6.128 + add #1, r126.129 + clrs6.130 + clrmac6.131 +6.132 + mova test_macw_1_results, r06.133 + mov r0, r46.134 + mova test_macw_1_inputs, r06.135 + mov r0, r16.136 + mac.w @r0+, @r1+6.137 + sts macl, r26.138 + mov.l @r4+, r36.139 + cmp/eq r2, r36.140 + bf test_macw_1_fail6.141 + sts mach, r26.142 + tst r2,r26.143 + bf test_macw_1_fail6.144 + cmp/eq r0, r16.145 + bf test_macw_1_fail6.146 + mova test_macw_1_inputs, r06.147 + add #-2, r16.148 + cmp/eq r0, r16.149 + bf test_macw_1_fail6.150 +6.151 + mac.w @r0+, @r0+6.152 + sts macl, r26.153 + mov.l @r4+, r36.154 + cmp/eq r2, r36.155 + bf test_macw_1_fail6.156 + sts mach, r26.157 + tst r2, r26.158 + bf test_macw_1_fail6.159 + add #4, r16.160 + cmp/eq r0, r16.161 + bf test_macw_1_fail6.162 +6.163 + add #2, r16.164 + mac.w @r0+, @r1+6.165 + sts macl, r26.166 + mov.l @r4+, r36.167 + cmp/eq r2, r36.168 + bf test_macw_1_fail6.169 + sts mach, r26.170 + tst r2, r26.171 + bf test_macw_1_fail6.172 + bra test_macw_26.173 + nop6.174 +6.175 +test_macw_1_fail:6.176 + fail test_mac_str_k6.177 + bra test_macw_26.178 + nop6.179 +test_macw_1_inputs:6.180 + .long 0x002100146.181 + .long 0x0002FFFF6.182 +test_macw_1_results:6.183 + .long 0x000001906.184 + .long 0x000004246.185 + .long 0x000004226.186 +6.187 +test_macw_2:6.188 + add #1, r126.189 + sets6.190 + clrmac6.191 + xor r0, r06.192 + not r0, r06.193 + lds r0, mach6.194 +6.195 + mova test_macw_2_results, r06.196 + mov r0, r36.197 + mova test_macw_2_inputs, r06.198 + mov #3, r66.199 +test_macw_2_loop:6.200 + mac.w @r0+, @r0+6.201 + sts macl, r16.202 + mov.l @r3+, r26.203 + cmp/eq r1, r26.204 + bf test_macw_2_fail6.205 + sts mach, r16.206 + mov.l @r3+, r26.207 + cmp/eq r1, r26.208 + bf test_macw_2_fail6.209 + dt r66.210 + bf test_macw_2_loop6.211 +6.212 + clrmac6.213 + mov #3, r66.214 +test_macw_2_loop_2:6.215 + mac.w @r0+, @r0+6.216 + sts macl, r16.217 + mov.l @r3+, r26.218 + cmp/eq r1, r26.219 + bf test_macw_2_fail6.220 + sts mach, r16.221 + mov.l @r3+, r26.222 + cmp/eq r1, r26.223 + bf test_macw_2_fail6.224 + dt r66.225 + bf test_macw_2_loop_26.226 + bra test_mac_end6.227 + nop6.228 +6.229 +test_macw_2_fail:6.230 + fail test_mac_str_k6.231 + bra test_mac_end6.232 + nop6.233 +test_macw_2_inputs:6.234 + .long 0x7FFE7FFF6.235 + .long 0x7FFF7FFD6.236 + .long 0x7FFB7FFC6.237 + .long 0x80007FF16.238 + .long 0x7FF280036.239 + .long 0x80047FF56.240 +test_macw_2_results:6.241 + .long 0x3FFE80026.242 + .long 0xFFFFFFFF6.243 + .long 0x7FFC80056.244 + .long 0xFFFFFFFF6.245 + .long 0x7FFFFFFF6.246 + .long 0x000000016.247 + .long 0xC00780006.248 + .long 0x000000006.249 + .long 0x800FFFD66.250 + .long 0x000000006.251 + .long 0x800000006.252 + .long 0x000000016.253 +6.254 +test_mac_end:6.255 + end_test test_mac_str_k6.256 +6.257 +test_mac_data_end:6.258 + .align 46.259 +test_mac_data_end_k:6.260 + .long test_mac_data_end6.261 +test_mac_str_k:6.262 + .long test_mac_str6.263 +test_mac_str:6.264 + .string "MAC"6.265 +6.266 \ No newline at end of file
7.1 --- a/test/sh4/testsh4.c Tue Feb 13 08:34:27 2007 +00007.2 +++ b/test/sh4/testsh4.c Thu Aug 23 12:31:31 2007 +00007.3 @@ -55,7 +55,9 @@7.4 test_bt();7.5 test_cmp();7.6 test_float();7.7 + test_fmov();7.8 test_ftrc();7.9 + test_mac();7.10 fprintf( stdout, "--> %d/%d instruction tests passed (%d%%)\n\n",7.11 total_tests-total_fails, total_tests,7.12 ((total_tests-total_fails)*100)/total_tests );
8.1 --- a/test/sh4/undef.s Tue Feb 13 08:34:27 2007 +00008.2 +++ b/test/sh4/undef.s Thu Aug 23 12:31:31 2007 +00008.3 @@ -18,6 +18,28 @@8.4 .word 0xFFFD8.5 assert_exc_caught test_undef_str_k test_undef_1_pc8.7 +test_undef_1a: ! 0xFFFD with FPU disabled - should still be an 0x1808.8 + add #1, r128.9 + stc sr, r08.10 + xor r1, r18.11 + add #32, r18.12 + shll2 r18.13 + shll8 r18.14 + or r0, r18.15 + ldc r1, sr8.16 + expect_exc 0x000001808.17 +test_undef_1a_pc:8.18 + .word 0xFFFD8.19 + assert_exc_caught test_undef_str_k test_undef_1a_pc8.20 + stc sr, r08.21 + xor r1, r18.22 + add #32, r18.23 + shll2 r18.24 + shll8 r18.25 + not r1, r18.26 + and r0, r18.27 + ldc r1, sr8.28 +8.29 ! Gaps in the STC range (0x0nn2)8.30 test_undef_2: ! 0x528.31 add #1, r12
.