Search
lxdream.org :: lxdream/test/sh4/addc.s
lxdream 0.9.1
released Jun 29
Download Now
filename test/sh4/addc.s
changeset 231:a9e61a96a885
prev226:0eeeb25447d3
author nkeynes
date Sat Jan 06 04:06:36 2007 +0000 (17 years ago)
permissions -rw-r--r--
last change Implement event queue.
Fix pvr2 timing (yes, again).
file annotate diff log raw
nkeynes@226
     1
.section .text
nkeynes@226
     2
.include "sh4/inc.s"
nkeynes@226
     3
nkeynes@226
     4
.global _test_addc
nkeynes@226
     5
_test_addc:
nkeynes@226
     6
	start_test
nkeynes@226
     7
nkeynes@226
     8
test_addc_1:	! test adding 0+0 = 0
nkeynes@226
     9
	clc
nkeynes@226
    10
	add #1, r12
nkeynes@226
    11
	xor r0,r0
nkeynes@226
    12
	xor r1,r1
nkeynes@226
    13
	xor r2,r2
nkeynes@226
    14
	addc r0,r1
nkeynes@226
    15
	stc sr, r4
nkeynes@226
    16
	cmp/eq r1, r2
nkeynes@226
    17
	bt test_addc_1_b
nkeynes@226
    18
	fail test_addc_str_k
nkeynes@226
    19
	bra test_addc_2
nkeynes@226
    20
	nop
nkeynes@226
    21
test_addc_1_b:
nkeynes@226
    22
	ldc r4, sr
nkeynes@226
    23
	assert_t_clear test_addc_str_k
nkeynes@226
    24
	
nkeynes@226
    25
test_addc_2:	! test 0+ constant 1 = 1
nkeynes@226
    26
	add #1, r12
nkeynes@226
    27
	clc
nkeynes@226
    28
	xor r0, r0
nkeynes@226
    29
	xor r1, r1
nkeynes@226
    30
	add #1, r0
nkeynes@226
    31
	addc r0, r1
nkeynes@226
    32
	stc sr, r4
nkeynes@226
    33
	mov.l test_addc_2_result, r2
nkeynes@226
    34
	cmp/eq r1, r2
nkeynes@226
    35
	bt test_addc_2_b
nkeynes@226
    36
	fail test_addc_str_k
nkeynes@226
    37
	bra test_addc_3
nkeynes@226
    38
	nop
nkeynes@226
    39
test_addc_2_b:
nkeynes@226
    40
	ldc r4, sr
nkeynes@226
    41
	assert_t_clear test_addc_str_k
nkeynes@226
    42
	bra test_addc_3
nkeynes@226
    43
	nop
nkeynes@226
    44
	
nkeynes@226
    45
	.align 4
nkeynes@226
    46
test_addc_2_result:
nkeynes@226
    47
	.long 0x00000001
nkeynes@226
    48
	
nkeynes@226
    49
test_addc_3:	! test 0 + constant -1 = -1
nkeynes@226
    50
	add #1, r12
nkeynes@226
    51
	clc
nkeynes@226
    52
	xor r0, r0
nkeynes@226
    53
	xor r1, r1
nkeynes@226
    54
	add #-1, r0
nkeynes@226
    55
	addc r0, r1
nkeynes@226
    56
	mov.l test_addc_3_result, r2
nkeynes@226
    57
	stc sr, r3
nkeynes@226
    58
	cmp/eq r1, r2
nkeynes@226
    59
	bt test_addc_3_b
nkeynes@226
    60
	fail test_addc_str_k
nkeynes@226
    61
	bra test_addc_4
nkeynes@226
    62
	nop
nkeynes@226
    63
test_addc_3_b:	
nkeynes@226
    64
	ldc r3, sr
nkeynes@226
    65
	assert_t_clear test_addc_str_k
nkeynes@226
    66
	bra test_addc_4
nkeynes@226
    67
	nop
nkeynes@226
    68
	
nkeynes@226
    69
	.align 4
nkeynes@226
    70
test_addc_3_result:
nkeynes@226
    71
	.long 0xFFFFFFFF
nkeynes@226
    72
	
nkeynes@226
    73
test_addc_4:	! test a+b = c w/ carry set
nkeynes@226
    74
	add #1, r12
nkeynes@226
    75
	clc
nkeynes@226
    76
	mov.l test_addc_4_op1, r4
nkeynes@226
    77
	mov.l test_addc_4_op2, r5
nkeynes@226
    78
	mov.l test_addc_4_result, r0
nkeynes@226
    79
	addc r4, r5
nkeynes@226
    80
	stc sr, r1
nkeynes@226
    81
	cmp/eq r5, r0
nkeynes@226
    82
	bt test_addc_4_b
nkeynes@226
    83
	fail test_addc_str_k
nkeynes@226
    84
	bra test_addc_5
nkeynes@226
    85
	nop
nkeynes@226
    86
test_addc_4_b:
nkeynes@226
    87
	ldc r1, sr
nkeynes@226
    88
	assert_t_set test_addc_str_k
nkeynes@226
    89
	bra test_addc_5
nkeynes@226
    90
	nop
nkeynes@226
    91
nkeynes@226
    92
	.align 4
nkeynes@226
    93
test_addc_4_op1:
nkeynes@226
    94
	.long 0x98765432
nkeynes@226
    95
test_addc_4_op2:
nkeynes@226
    96
	.long 0xA1234567
nkeynes@226
    97
test_addc_4_result:
nkeynes@226
    98
	.long 0x39999999
nkeynes@226
    99
nkeynes@226
   100
test_addc_5:	! test carry used and cleared
nkeynes@226
   101
	add #1, r12
nkeynes@231
   102
	mov.l test_addc_5_op1, r4
nkeynes@231
   103
	mov.l test_addc_5_op2, r5
nkeynes@231
   104
	stc sr, r6
nkeynes@226
   105
	xor r0,r0
nkeynes@226
   106
	add #1, r0
nkeynes@231
   107
	or r0,r6
nkeynes@231
   108
	ldc r6, sr
nkeynes@231
   109
	addc r5,r4
nkeynes@226
   110
	stc sr, r1
nkeynes@231
   111
	mov.l test_addc_5_result, r7
nkeynes@231
   112
	cmp/eq r7, r4
nkeynes@226
   113
	bt test_addc_5_b
nkeynes@226
   114
	fail test_addc_str_k
nkeynes@226
   115
	bra test_addc_6
nkeynes@226
   116
	nop
nkeynes@226
   117
test_addc_5_b:
nkeynes@226
   118
	ldc r1, sr
nkeynes@226
   119
	assert_t_clear test_addc_str_k
nkeynes@226
   120
	bra test_addc_6
nkeynes@226
   121
	nop
nkeynes@226
   122
	
nkeynes@226
   123
test_addc_5_op1:
nkeynes@226
   124
	.long 0x11111111
nkeynes@226
   125
test_addc_5_op2:	
nkeynes@226
   126
	.long 0x1000FFFF
nkeynes@226
   127
test_addc_5_result:	
nkeynes@226
   128
	.long 0x21121111
nkeynes@226
   129
	
nkeynes@226
   130
test_addc_6: ! test carry set on full rollover (ie n + 0xFFFFFFFF + carry )
nkeynes@226
   131
	add #1, r12
nkeynes@226
   132
	setc
nkeynes@226
   133
	mov.l test_addc_6_op1, r5
nkeynes@226
   134
	mov.l test_addc_6_op2, r6
nkeynes@226
   135
	addc r5, r6
nkeynes@226
   136
	stc sr, r1
nkeynes@226
   137
	cmp/eq r5, r6
nkeynes@226
   138
	bt test_addc_6_b
nkeynes@226
   139
	fail test_addc_str_k
nkeynes@226
   140
	bra test_addc_7
nkeynes@226
   141
	nop
nkeynes@226
   142
test_addc_6_b:
nkeynes@226
   143
	ldc r1, sr
nkeynes@226
   144
	assert_t_set test_addc_str_k
nkeynes@226
   145
	bra test_addc_7	
nkeynes@226
   146
	nop
nkeynes@226
   147
		
nkeynes@226
   148
test_addc_6_op1:
nkeynes@226
   149
	.long 0x12346789
nkeynes@226
   150
test_addc_6_op2:
nkeynes@226
   151
	.long 0xFFFFFFFF
nkeynes@226
   152
nkeynes@226
   153
	
nkeynes@226
   154
test_addc_7:
nkeynes@226
   155
	add #1, r12
nkeynes@226
   156
	clc
nkeynes@226
   157
	mov.l test_addc_7_op1, r5
nkeynes@226
   158
	mov.l test_addc_7_op2, r6
nkeynes@226
   159
	addc r5, r6
nkeynes@226
   160
	stc sr, r1
nkeynes@226
   161
	mov.l test_addc_7_result, r2
nkeynes@226
   162
	cmp/eq r2, r6
nkeynes@226
   163
	bt test_addc_7_b
nkeynes@226
   164
	fail test_addc_str_k
nkeynes@226
   165
	bra test_addc_8
nkeynes@226
   166
	nop
nkeynes@226
   167
test_addc_7_b:
nkeynes@226
   168
	ldc r1, sr
nkeynes@226
   169
	assert_t_set test_addc_str_k
nkeynes@226
   170
	bra test_addc_8	
nkeynes@226
   171
	nop
nkeynes@226
   172
		
nkeynes@226
   173
test_addc_7_op1:
nkeynes@226
   174
	.long 0x98765432
nkeynes@226
   175
test_addc_7_op2:
nkeynes@226
   176
	.long 0xFFFFFFFF
nkeynes@226
   177
test_addc_7_result:	
nkeynes@226
   178
	.long 0x98765431	
nkeynes@226
   179
nkeynes@226
   180
test_addc_8:
nkeynes@226
   181
	add #1, r12
nkeynes@226
   182
	setc
nkeynes@226
   183
	xor r0,r0
nkeynes@226
   184
	addc r0, r0
nkeynes@226
   185
	stc sr, r3
nkeynes@226
   186
	mov.l test_addc_8_result, r1
nkeynes@226
   187
	cmp/eq r0, r1
nkeynes@226
   188
	bt test_addc_8_b
nkeynes@226
   189
	fail test_addc_str_k
nkeynes@226
   190
	bra test_addc_9
nkeynes@226
   191
	nop
nkeynes@226
   192
test_addc_8_b:
nkeynes@226
   193
	ldc r3, sr
nkeynes@226
   194
	assert_t_clear test_addc_str_k
nkeynes@226
   195
	bra test_addc_9
nkeynes@226
   196
	nop
nkeynes@226
   197
nkeynes@226
   198
test_addc_8_result:
nkeynes@226
   199
	.long 0x00000001
nkeynes@226
   200
nkeynes@226
   201
test_addc_9:	
nkeynes@226
   202
test_addc_end:
nkeynes@226
   203
	end_test test_addc_str_k
nkeynes@226
   204
nkeynes@226
   205
test_addc_str:
nkeynes@226
   206
	.string "ADDC"
nkeynes@226
   207
nkeynes@226
   208
.align 4	
nkeynes@226
   209
test_addc_str_k:	
nkeynes@226
   210
	.long test_addc_str
.