Search
lxdream.org :: lxdream/test/sh4/div0.s
lxdream 0.9.1
released Jun 29
Download Now
filename test/sh4/div0.s
changeset 364:d738f6883d4a
author nkeynes
date Sat Jun 14 11:54:15 2008 +0000 (15 years ago)
permissions -rw-r--r--
last change Change colour params to float
Convert background processing over to scene structure (fixes some depth issues as well)
Add color unclamp when supported
file annotate diff log raw
nkeynes@364
     1
.section .text
nkeynes@364
     2
.include "sh4/inc.s"
nkeynes@364
     3
!
nkeynes@364
     4
! Test DIV0 operation
nkeynes@364
     5
!
nkeynes@364
     6
.global _test_div0
nkeynes@364
     7
_test_div0:
nkeynes@364
     8
	start_test
nkeynes@364
     9
	mov.l r11, @-r15
nkeynes@364
    10
	mov.l r10, @-r15
nkeynes@364
    11
nkeynes@364
    12
test_div0u:
nkeynes@364
    13
	add #1, r12
nkeynes@364
    14
	stc sr, r2
nkeynes@364
    15
	mov.l test_div0_sr_mask, r0
nkeynes@364
    16
	or r0, r2
nkeynes@364
    17
	ldc r2, sr
nkeynes@364
    18
nkeynes@364
    19
	div0u
nkeynes@364
    20
	stc sr, r3
nkeynes@364
    21
	mov r3, r4
nkeynes@364
    22
	and r0, r4
nkeynes@364
    23
	tst r4, r4
nkeynes@364
    24
	bf test_div0u_fail
nkeynes@364
    25
	not r0, r0
nkeynes@364
    26
	and r0, r3
nkeynes@364
    27
	and r0, r2
nkeynes@364
    28
	cmp/eq r2, r3
nkeynes@364
    29
	bt test_div0s
nkeynes@364
    30
test_div0u_fail:
nkeynes@364
    31
	fail test_div0_str_k
nkeynes@364
    32
	
nkeynes@364
    33
test_div0s:	
nkeynes@364
    34
	mova test_div0s_data, r0
nkeynes@364
    35
	mov r0, r11
nkeynes@364
    36
	mov #4, r10
nkeynes@364
    37
nkeynes@364
    38
test_div0s_loop:
nkeynes@364
    39
	add #1, r12
nkeynes@364
    40
	mov.l @r11+, r1
nkeynes@364
    41
	mov.l @r11+, r2
nkeynes@364
    42
	mov.l @r11+, r3
nkeynes@364
    43
	div0s r1,r2
nkeynes@364
    44
	stc sr, r4
nkeynes@364
    45
	mov.l test_div0_sr_mask, r0
nkeynes@364
    46
	and r0,r4
nkeynes@364
    47
	cmp/eq r3,r4
nkeynes@364
    48
	bt test_div0s_ok
nkeynes@364
    49
	fail test_div0_str_k
nkeynes@364
    50
test_div0s_ok:	
nkeynes@364
    51
	dt r10
nkeynes@364
    52
	bf test_div0s_loop
nkeynes@364
    53
	
nkeynes@364
    54
test_div0_end:
nkeynes@364
    55
	mov.l @r15+, r10
nkeynes@364
    56
	mov.l @r15+, r11
nkeynes@364
    57
	end_test test_div0_str_k
nkeynes@364
    58
nkeynes@364
    59
test_div0s_data:
nkeynes@364
    60
	.long 0x01234567
nkeynes@364
    61
	.long 0x12345678
nkeynes@364
    62
	.long 0x00000000
nkeynes@364
    63
	.long 0xFFFF8912
nkeynes@364
    64
	.long 0x7ABC1526
nkeynes@364
    65
	.long 0x00000201
nkeynes@364
    66
	.long 0x55443322
nkeynes@364
    67
	.long 0x80000234
nkeynes@364
    68
	.long 0x00000101
nkeynes@364
    69
	.long 0xFFFFFFFF
nkeynes@364
    70
	.long 0x9CD39495
nkeynes@364
    71
	.long 0x00000300
nkeynes@364
    72
	
nkeynes@364
    73
test_div0_sr_mask:
nkeynes@364
    74
	.long 0x00000301
nkeynes@364
    75
	
nkeynes@364
    76
test_div0_str_k:
nkeynes@364
    77
	.long test_div0_str
nkeynes@364
    78
test_div0_str:
nkeynes@364
    79
	.string "DIV0"
nkeynes@364
    80
	
.