Search
lxdream.org :: lxdream/test/sh4/addc.s :: diff
lxdream 0.9.1
released Jun 29
Download Now
filename test/sh4/addc.s
changeset 226:0eeeb25447d3
next231:a9e61a96a885
author nkeynes
date Sat Sep 23 10:35:29 2006 +0000 (14 years ago)
permissions -rw-r--r--
last change SH4 tests: Add tests for addc, addv, and
file annotate diff log raw
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/test/sh4/addc.s Sat Sep 23 10:35:29 2006 +0000
1.3 @@ -0,0 +1,210 @@
1.4 +.section .text
1.5 +.include "sh4/inc.s"
1.6 +
1.7 +.global _test_addc
1.8 +_test_addc:
1.9 + start_test
1.10 +
1.11 +test_addc_1: ! test adding 0+0 = 0
1.12 + clc
1.13 + add #1, r12
1.14 + xor r0,r0
1.15 + xor r1,r1
1.16 + xor r2,r2
1.17 + addc r0,r1
1.18 + stc sr, r4
1.19 + cmp/eq r1, r2
1.20 + bt test_addc_1_b
1.21 + fail test_addc_str_k
1.22 + bra test_addc_2
1.23 + nop
1.24 +test_addc_1_b:
1.25 + ldc r4, sr
1.26 + assert_t_clear test_addc_str_k
1.27 +
1.28 +test_addc_2: ! test 0+ constant 1 = 1
1.29 + add #1, r12
1.30 + clc
1.31 + xor r0, r0
1.32 + xor r1, r1
1.33 + add #1, r0
1.34 + addc r0, r1
1.35 + stc sr, r4
1.36 + mov.l test_addc_2_result, r2
1.37 + cmp/eq r1, r2
1.38 + bt test_addc_2_b
1.39 + fail test_addc_str_k
1.40 + bra test_addc_3
1.41 + nop
1.42 +test_addc_2_b:
1.43 + ldc r4, sr
1.44 + assert_t_clear test_addc_str_k
1.45 + bra test_addc_3
1.46 + nop
1.47 +
1.48 + .align 4
1.49 +test_addc_2_result:
1.50 + .long 0x00000001
1.51 +
1.52 +test_addc_3: ! test 0 + constant -1 = -1
1.53 + add #1, r12
1.54 + clc
1.55 + xor r0, r0
1.56 + xor r1, r1
1.57 + add #-1, r0
1.58 + addc r0, r1
1.59 + mov.l test_addc_3_result, r2
1.60 + stc sr, r3
1.61 + cmp/eq r1, r2
1.62 + bt test_addc_3_b
1.63 + fail test_addc_str_k
1.64 + bra test_addc_4
1.65 + nop
1.66 +test_addc_3_b:
1.67 + ldc r3, sr
1.68 + assert_t_clear test_addc_str_k
1.69 + bra test_addc_4
1.70 + nop
1.71 +
1.72 + .align 4
1.73 +test_addc_3_result:
1.74 + .long 0xFFFFFFFF
1.75 +
1.76 +test_addc_4: ! test a+b = c w/ carry set
1.77 + add #1, r12
1.78 + clc
1.79 + mov.l test_addc_4_op1, r4
1.80 + mov.l test_addc_4_op2, r5
1.81 + mov.l test_addc_4_result, r0
1.82 + addc r4, r5
1.83 + stc sr, r1
1.84 + cmp/eq r5, r0
1.85 + bt test_addc_4_b
1.86 + fail test_addc_str_k
1.87 + bra test_addc_5
1.88 + nop
1.89 +test_addc_4_b:
1.90 + ldc r1, sr
1.91 + assert_t_set test_addc_str_k
1.92 + bra test_addc_5
1.93 + nop
1.94 +
1.95 + .align 4
1.96 +test_addc_4_op1:
1.97 + .long 0x98765432
1.98 +test_addc_4_op2:
1.99 + .long 0xA1234567
1.100 +test_addc_4_result:
1.101 + .long 0x39999999
1.102 +
1.103 +test_addc_5: ! test carry used and cleared
1.104 + add #1, r12
1.105 + mov.l test_addc_5_op1, r8
1.106 + mov.l test_addc_5_op2, r9
1.107 + stc sr, r10
1.108 + xor r0,r0
1.109 + add #1, r0
1.110 + or r0,r10
1.111 + ldc r10, sr
1.112 + addc r9,r8
1.113 + stc sr, r1
1.114 + mov.l test_addc_5_result, r11
1.115 + cmp/eq r11, r8
1.116 + bt test_addc_5_b
1.117 + fail test_addc_str_k
1.118 + bra test_addc_6
1.119 + nop
1.120 +test_addc_5_b:
1.121 + ldc r1, sr
1.122 + assert_t_clear test_addc_str_k
1.123 + bra test_addc_6
1.124 + nop
1.125 +
1.126 +test_addc_5_op1:
1.127 + .long 0x11111111
1.128 +test_addc_5_op2:
1.129 + .long 0x1000FFFF
1.130 +test_addc_5_result:
1.131 + .long 0x21121111
1.132 +
1.133 +test_addc_6: ! test carry set on full rollover (ie n + 0xFFFFFFFF + carry )
1.134 + add #1, r12
1.135 + setc
1.136 + mov.l test_addc_6_op1, r5
1.137 + mov.l test_addc_6_op2, r6
1.138 + addc r5, r6
1.139 + stc sr, r1
1.140 + cmp/eq r5, r6
1.141 + bt test_addc_6_b
1.142 + fail test_addc_str_k
1.143 + bra test_addc_7
1.144 + nop
1.145 +test_addc_6_b:
1.146 + ldc r1, sr
1.147 + assert_t_set test_addc_str_k
1.148 + bra test_addc_7
1.149 + nop
1.150 +
1.151 +test_addc_6_op1:
1.152 + .long 0x12346789
1.153 +test_addc_6_op2:
1.154 + .long 0xFFFFFFFF
1.155 +
1.156 +
1.157 +test_addc_7:
1.158 + add #1, r12
1.159 + clc
1.160 + mov.l test_addc_7_op1, r5
1.161 + mov.l test_addc_7_op2, r6
1.162 + addc r5, r6
1.163 + stc sr, r1
1.164 + mov.l test_addc_7_result, r2
1.165 + cmp/eq r2, r6
1.166 + bt test_addc_7_b
1.167 + fail test_addc_str_k
1.168 + bra test_addc_8
1.169 + nop
1.170 +test_addc_7_b:
1.171 + ldc r1, sr
1.172 + assert_t_set test_addc_str_k
1.173 + bra test_addc_8
1.174 + nop
1.175 +
1.176 +test_addc_7_op1:
1.177 + .long 0x98765432
1.178 +test_addc_7_op2:
1.179 + .long 0xFFFFFFFF
1.180 +test_addc_7_result:
1.181 + .long 0x98765431
1.182 +
1.183 +test_addc_8:
1.184 + add #1, r12
1.185 + setc
1.186 + xor r0,r0
1.187 + addc r0, r0
1.188 + stc sr, r3
1.189 + mov.l test_addc_8_result, r1
1.190 + cmp/eq r0, r1
1.191 + bt test_addc_8_b
1.192 + fail test_addc_str_k
1.193 + bra test_addc_9
1.194 + nop
1.195 +test_addc_8_b:
1.196 + ldc r3, sr
1.197 + assert_t_clear test_addc_str_k
1.198 + bra test_addc_9
1.199 + nop
1.200 +
1.201 +test_addc_8_result:
1.202 + .long 0x00000001
1.203 +
1.204 +test_addc_9:
1.205 +test_addc_end:
1.206 + end_test test_addc_str_k
1.207 +
1.208 +test_addc_str:
1.209 + .string "ADDC"
1.210 +
1.211 +.align 4
1.212 +test_addc_str_k:
1.213 + .long test_addc_str
.