revision 357:3592a10b3242
summary |
tree |
shortlog |
changelog |
graph |
changeset |
raw | bz2 | zip | gz changeset | 357:3592a10b3242 |
parent | 356:b281cad966b7 |
child | 358:65043a8f5785 |
author | nkeynes |
date | Tue Feb 13 08:34:27 2007 +0000 (17 years ago) |
Add tests for FLOAT and FTRC
Comment out user-mode exception test (broken)
Comment out user-mode exception test (broken)
test/Makefile | view | annotate | diff | log | ||
test/sh4/excslot.s | view | annotate | diff | log | ||
test/sh4/float.s | view | annotate | diff | log | ||
test/sh4/ftrc.s | view | annotate | diff | log | ||
test/sh4/inc.s | view | annotate | diff | log | ||
test/sh4/testsh4.c | view | annotate | diff | log |
1.1 --- a/test/Makefile Tue Feb 13 08:28:50 2007 +00001.2 +++ b/test/Makefile Tue Feb 13 08:34:27 2007 +00001.3 @@ -74,6 +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/excslot.so sh4/undef.so1.9 $(SH4CC) $(SH4LDFLAGS) $^ -o $@ $(SH4LIBS)1.10 $(SH4OBJCOPY) testsh4 testsh4.bin
2.1 --- a/test/sh4/excslot.s Tue Feb 13 08:28:50 2007 +00002.2 +++ b/test/sh4/excslot.s Tue Feb 13 08:34:27 2007 +00002.3 @@ -174,15 +174,15 @@2.4 ! in a delay slot (otherwise it's GENERAL_ILLEGAL)2.6 test_slot_18: ! LDC Rn, SPC in user mode2.7 - add #1, r122.8 - expect_exc 0x000001A02.9 - stc spc, r42.10 - usermode2.11 -test_slot_18_pc:2.12 - bsr test_slot_fail2.13 - ldc r4, spc2.14 - systemmode2.15 - assert_exc_caught test_slot_str_k test_slot_18_pc2.16 +! add #1, r122.17 +! expect_exc 0x000001A02.18 +! stc spc, r42.19 +! usermode2.20 +!test_slot_18_pc:2.21 +! bsr test_slot_fail2.22 +! ldc r4, spc2.23 +! systemmode2.24 +! assert_exc_caught test_slot_str_k test_slot_18_pc2.27 test_slot_end:
3.1 --- /dev/null Thu Jan 01 00:00:00 1970 +00003.2 +++ b/test/sh4/float.s Tue Feb 13 08:34:27 2007 +00003.3 @@ -0,0 +1,209 @@3.4 +.section .text3.5 +.include "sh4/inc.s"3.6 +!3.7 +! Test float3.8 +3.9 +.global _test_float3.10 +_test_float:3.11 + start_test3.12 +3.13 + xor r0,r03.14 + lds r0, fpscr3.15 +3.16 +test_float_1: ! Load 1.0 single precision3.17 + add #1, r123.18 + add #1, r03.19 + fldi0 fr03.20 + fldi0 fr13.21 + lds r0, fpul3.22 + float fpul, fr03.23 + sts fpul, r13.24 + cmp/eq r0, r13.25 + bf test_float_1_fail3.26 + flds fr0, fpul3.27 + sts fpul, r03.28 + mov.l test_float_1_result, r13.29 + cmp/eq r0,r13.30 + bf test_float_1_fail3.31 + flds fr1, fpul3.32 + sts fpul, r03.33 + tst r0, r03.34 + bt test_float_23.35 +test_float_1_fail:3.36 + fail test_float_str_k3.37 + bra test_float_23.38 + nop3.39 +3.40 +.align 43.41 +test_float_1_result:3.42 + .long 0x3F8000003.43 +3.44 +test_float_2: ! Load -1.0 double precision3.45 + add #1, r123.46 + fldi0 fr03.47 + fldi1 fr13.48 + setpr3.49 + xor r0,r03.50 + add #-1, r03.51 + lds r0, fpul3.52 + float fpul, fr03.53 + sts fpul, r13.54 + cmp/eq r0, r13.55 + bf test_float_2_fail3.56 + flds fr0, fpul3.57 + sts fpul, r03.58 + flds fr1, fpul3.59 + sts fpul, r23.60 + mov.l test_float_2_result_a, r13.61 + mov.l test_float_2_result_b, r33.62 + cmp/eq r0,r13.63 + bf test_float_2_fail3.64 + cmp/eq r2,r33.65 + bt test_float_33.66 +test_float_2_fail:3.67 + fail test_float_str_k3.68 + bra test_float_33.69 + nop3.70 +3.71 +test_float_2_result_a:3.72 + .long 0xBFF000003.73 +test_float_2_result_b:3.74 + .long 0x000000003.75 +3.76 +test_float_3: ! pr=0, sz=13.77 + add #1, r123.78 + clrpr3.79 + fldi0 fr03.80 + fldi0 fr13.81 + fschg3.82 + mov.l test_float_3_input, r03.83 + lds r0, fpul3.84 + float fpul, fr03.85 + sts fpul, r13.86 + cmp/eq r0, r13.87 + bf test_float_3_fail3.88 + flds fr0, fpul3.89 + sts fpul, r03.90 + mov.l test_float_3_result, r13.91 + cmp/eq r0, r13.92 + bf test_float_3_fail3.93 + flds fr1, fpul3.94 + sts fpul, r03.95 + tst r0, r03.96 + bt test_float_43.97 +test_float_3_fail:3.98 + fail test_float_str_k3.99 + bra test_float_43.100 + nop3.101 +3.102 +test_float_3_input:3.103 + .long 0xCCCCCCCC3.104 +test_float_3_result:3.105 + .long 0xCE4CCCCD3.106 +3.107 +test_float_4: ! pr=1, sz=13.108 + add #1, r123.109 + fldi0 fr03.110 + fldi1 fr13.111 + setpr3.112 + mov.l test_float_4_input, r03.113 + lds r0, fpul3.114 + float fpul, fr03.115 + sts fpul, r13.116 + cmp/eq r0, r13.117 + bf test_float_4_fail3.118 + flds fr0, fpul3.119 + sts fpul, r03.120 + flds fr1, fpul3.121 + sts fpul, r23.122 + mov.l test_float_4_result_a, r13.123 + mov.l test_float_4_result_b, r33.124 + cmp/eq r0,r13.125 + bf test_float_4_fail3.126 + cmp/eq r2,r33.127 + bt test_float_53.128 +test_float_4_fail:3.129 + fail test_float_str_k3.130 + bra test_float_53.131 + nop3.132 +3.133 +test_float_4_input:3.134 + .long 0x7FFFFFFF3.135 +test_float_4_result_a:3.136 + .long 0x41DFFFFF3.137 +test_float_4_result_b:3.138 + .long 0xFFC000003.139 +3.140 +3.141 +test_float_5: ! test w/ max +int, sz=0, pr=0, fr=13.142 + add #1, r123.143 + xor r0,r03.144 + lds r0, fpscr3.145 + fldi0 fr03.146 + fldi0 fr13.147 + frchg3.148 + fldi0 fr03.149 + fldi0 fr13.150 + mov.l test_float_5_input, r03.151 + lds r0, fpul3.152 + float fpul, fr03.153 + sts fpul, r13.154 + cmp/eq r0, r13.155 + bf test_float_5_fail3.156 + flds fr0, fpul3.157 + sts fpul, r03.158 + mov.l test_float_5_result, r13.159 + cmp/eq r0, r13.160 + bf test_float_5_fail3.161 + flds fr1, fpul3.162 + sts fpul, r03.163 + tst r0, r03.164 + bf test_float_5_fail3.165 + lds r0, fpscr3.166 + flds fr0, fpul3.167 + sts fpul, r03.168 + tst r0, r03.169 + bt test_float_63.170 +test_float_5_fail:3.171 + fail test_float_str_k3.172 + bra test_float_63.173 + nop3.174 +3.175 +test_float_5_input:3.176 + .long 0x7FFFFFFF3.177 +test_float_5_result:3.178 + .long 0x4F0000003.179 +3.180 +test_float_6: ! Test max -int3.181 + add #1, r123.182 + mov.l test_float_6_input, r03.183 + lds r0, fpul3.184 + float fpul, fr53.185 + sts fpul, r13.186 + cmp/eq r0, r13.187 + bf test_float_6_fail3.188 + flds fr5, fpul3.189 + sts fpul, r23.190 + mov.l test_float_6_result, r13.191 + cmp/eq r1, r23.192 + bt test_float_end3.193 +3.194 +test_float_6_fail:3.195 + fail test_float_str_k3.196 + bra test_float_end3.197 + nop3.198 +3.199 +test_float_6_input:3.200 + .long 0x800000003.201 +test_float_6_result:3.202 + .long 0xCF0000003.203 +3.204 +test_float_end:3.205 + end_test test_float_str_k3.206 +3.207 +test_float_str:3.208 + .string "FLOAT"3.209 +3.210 +.align 43.211 +test_float_str_k:3.212 + .long test_float_str3.213 \ No newline at end of file
4.1 --- /dev/null Thu Jan 01 00:00:00 1970 +00004.2 +++ b/test/sh4/ftrc.s Tue Feb 13 08:34:27 2007 +00004.3 @@ -0,0 +1,217 @@4.4 + .section .text4.5 +.include "sh4/inc.s"4.6 +!4.7 +! Test ftrc4.8 +4.9 +.global _test_ftrc4.10 +_test_ftrc:4.11 + start_test4.12 +4.13 + xor r0,r04.14 + lds r0, fpscr4.15 +4.16 +test_ftrc_1: ! Load 1.0 single precision4.17 + add #1, r124.18 + mov.l test_ftrc_1_input, r04.19 + lds r0, fpul4.20 + fsts fpul, fr04.21 + ftrc fr0, fpul4.22 + sts fpul, r04.23 + mov.l test_ftrc_1_result, r14.24 + cmp/eq r0,r14.25 + bt test_ftrc_24.26 +test_ftrc_1_fail:4.27 + fail test_ftrc_str_k4.28 + bra test_ftrc_24.29 + nop4.30 +4.31 +.align 44.32 +test_ftrc_1_input:4.33 + .long 0x3F8000004.34 +test_ftrc_1_result:4.35 + .long 0x000000014.36 +4.37 +test_ftrc_2: ! Load -1.0 double precision4.38 + add #1, r124.39 + setpr4.40 + mov.l test_ftrc_2_input_a, r04.41 + lds r0, fpul4.42 + fsts fpul, fr04.43 + mov.l test_ftrc_2_input_b, r04.44 + lds r0, fpul4.45 + fsts fpul, fr14.46 + ftrc fr0, fpul4.47 + sts fpul, r04.48 + mov.l test_ftrc_2_result, r14.49 + cmp/eq r0,r14.50 + bt test_ftrc_34.51 +test_ftrc_2_fail:4.52 + fail test_ftrc_str_k4.53 + bra test_ftrc_34.54 + nop4.55 +4.56 +test_ftrc_2_input_a:4.57 + .long 0xBFF000004.58 +test_ftrc_2_input_b:4.59 + .long 0x000000004.60 +test_ftrc_2_result:4.61 + .long 0xFFFFFFFF4.62 +4.63 +test_ftrc_3: ! pr=0, sz=14.64 + add #1, r124.65 + clrpr4.66 + mov.l test_ftrc_3_input, r04.67 + lds r0, fpul4.68 + fsts fpul, fr04.69 + fschg4.70 + ftrc fr0, fpul4.71 + sts fpul, r04.72 + mov.l test_ftrc_3_result, r14.73 + cmp/eq r0, r14.74 + bt test_ftrc_44.75 +test_ftrc_3_fail:4.76 + fail test_ftrc_str_k4.77 + bra test_ftrc_44.78 + nop4.79 +4.80 +test_ftrc_3_input:4.81 + .long 0xCE4CCCCD4.82 +test_ftrc_3_result:4.83 + .long 0xCCCCCCC04.84 +4.85 +test_ftrc_4: ! pr=1, sz=14.86 + add #1, r124.87 + fldi0 fr04.88 + fldi1 fr14.89 + setpr4.90 + mov.l test_ftrc_4_input_a, r04.91 + lds r0, fpul4.92 + fsts fpul, fr04.93 + mov.l test_ftrc_4_input_b, r04.94 + lds r0, fpul4.95 + fsts fpul, fr14.96 + ftrc fr0, fpul4.97 + sts fpul, r04.98 + mov.l test_ftrc_4_result, r14.99 + cmp/eq r0,r14.100 + bt test_ftrc_54.101 +test_ftrc_4_fail:4.102 + fail test_ftrc_str_k4.103 + bra test_ftrc_54.104 + nop4.105 +4.106 +test_ftrc_4_input_a:4.107 + .long 0x41DFFFFF4.108 +test_ftrc_4_input_b:4.109 + .long 0xFFC000004.110 +test_ftrc_4_result:4.111 + .long 0x7FFFFFFF4.112 +4.113 +4.114 +test_ftrc_5: ! test w/ max +int, sz=0, pr=0, fr=14.115 + add #1, r124.116 + xor r0,r04.117 + lds r0, fpscr4.118 + fldi0 fr04.119 + fldi0 fr14.120 + frchg4.121 + fldi0 fr04.122 + fldi0 fr14.123 + mov.l test_ftrc_5_input, r04.124 + lds r0, fpul4.125 + fsts fpul, fr04.126 + ftrc fr0, fpul4.127 + sts fpul, r04.128 + mov.l test_ftrc_5_result, r14.129 + cmp/eq r0, r14.130 + bf test_ftrc_5_fail4.131 + flds fr1, fpul4.132 + sts fpul, r04.133 + tst r0, r04.134 + bf test_ftrc_5_fail4.135 + lds r0, fpscr4.136 + flds fr0, fpul4.137 + sts fpul, r04.138 + tst r0, r04.139 + bt test_ftrc_64.140 +test_ftrc_5_fail:4.141 + fail test_ftrc_str_k4.142 + bra test_ftrc_64.143 + nop4.144 +4.145 +test_ftrc_5_input:4.146 + .long 0x4F0000004.147 +test_ftrc_5_result:4.148 + .long 0x7FFFFFFF4.149 +4.150 +test_ftrc_6: ! Test max -int4.151 + add #1, r124.152 + mov.l test_ftrc_6_input, r04.153 + lds r0, fpul4.154 + fsts fpul, fr54.155 + ftrc fr5, fpul4.156 + sts fpul, r24.157 + mov.l test_ftrc_6_result, r14.158 + cmp/eq r1, r24.159 + bt test_ftrc_74.160 +4.161 +test_ftrc_6_fail:4.162 + fail test_ftrc_str_k4.163 + bra test_ftrc_74.164 + nop4.165 +4.166 +test_ftrc_6_input:4.167 + .long 0xCF0000004.168 +test_ftrc_6_result:4.169 + .long 0x800000004.170 +4.171 +test_ftrc_7: ! Test >max +int4.172 + add #1, r124.173 + mov.l test_ftrc_7_input, r04.174 + lds r0, fpul4.175 + fsts fpul, fr74.176 + ftrc fr7, fpul4.177 + sts fpul, r24.178 + mov.l test_ftrc_7_result, r14.179 + cmp/eq r1, r24.180 + bt test_ftrc_84.181 +test_ftrc_7_fail:4.182 + fail test_ftrc_str_k4.183 + bra test_ftrc_74.184 + nop4.185 +4.186 +test_ftrc_7_input:4.187 + .long 0x7E1111114.188 +test_ftrc_7_result:4.189 + .long 0x7FFFFFFF4.190 +4.191 +test_ftrc_8: ! test < min -int4.192 + add #1, r124.193 + mov.l test_ftrc_8_input, r04.194 + lds r0, fpul4.195 + fsts fpul, fr94.196 + ftrc fr9, fpul4.197 + sts fpul, r24.198 + mov.l test_ftrc_8_result, r14.199 + cmp/eq r1, r24.200 + bt test_ftrc_end4.201 +test_ftrc_8_fail:4.202 + fail test_ftrc_str_k4.203 + bra test_ftrc_84.204 + nop4.205 +4.206 +test_ftrc_8_input:4.207 + .long 0xFE1111114.208 +test_ftrc_8_result:4.209 + .long 0x800000004.210 +4.211 +4.212 +test_ftrc_end:4.213 + end_test test_ftrc_str_k4.214 +4.215 +test_ftrc_str:4.216 + .string "FTRC"4.217 +4.218 +.align 44.219 +test_ftrc_str_k:4.220 + .long test_ftrc_str
5.1 --- a/test/sh4/inc.s Tue Feb 13 08:28:50 2007 +00005.2 +++ b/test/sh4/inc.s Tue Feb 13 08:34:27 2007 +00005.3 @@ -189,6 +189,25 @@5.4 L2:5.5 .endm5.7 +.macro setpr5.8 + sts fpscr, r05.9 + xor r1, r15.10 + add #8, r15.11 + shll16 r15.12 + or r1, r05.13 + lds r0, fpscr5.14 +.endm5.15 +5.16 +.macro clrpr5.17 + sts fpscr, r05.18 + xor r1, r15.19 + add #8, r15.20 + shll16 r15.21 + not r1, r15.22 + and r1, r05.23 + lds r0, fpscr5.24 +.endm5.25 +5.26 .macro expect_exc code5.27 LOCAL L1, L2, L35.28 mov.l L1, r3
6.1 --- a/test/sh4/testsh4.c Tue Feb 13 08:28:50 2007 +00006.2 +++ b/test/sh4/testsh4.c Tue Feb 13 08:34:27 2007 +00006.3 @@ -54,6 +54,8 @@6.4 test_bf();6.5 test_bt();6.6 test_cmp();6.7 + test_float();6.8 + test_ftrc();6.9 fprintf( stdout, "--> %d/%d instruction tests passed (%d%%)\n\n",6.10 total_tests-total_fails, total_tests,6.11 ((total_tests-total_fails)*100)/total_tests );
.