Search
lxdream.org :: lxdream/test/sh4/mac.s
lxdream 0.9.1
released Jun 29
Download Now
filename test/sh4/mac.s
changeset 358:65043a8f5785
author nkeynes
date Mon Aug 04 06:00:11 2008 +0000 (15 years ago)
permissions -rw-r--r--
last change Fix x86-64 bugs (only visible on OS X)
view annotate diff log raw
     1 .section .text
     2 .include "sh4/inc.s"
     3 !
     4 ! Test MAC Rm,Rn operation
     5 !
     6 .global _test_mac
     7 _test_mac:
     8 	start_test
    10 test_macl_1: ! Basic mac.l ops.
    11 	add #1, r12
    12 	clrmac
    13 	clrs
    14 	mov.l test_macl_1_inputs_k, r0
    15 	mov.l test_macl_1_results_k, r6
    16 	mov r0, r1
    17 	mac.l @r0+, @r1+
    18 	sts macl, r2
    19 	sts mach, r3
    20 	mov.l @r6+, r4
    21 	cmp/eq r2, r4
    22 	bf test_macl_1_fail
    23 	xor r5, r5
    24 	cmp/eq r3, r5
    25 	bf test_macl_1_fail
    26 	cmp/eq r0, r1
    27 	bf test_macl_1_fail
    28 	mov.l test_macl_1_inputs_k, r0
    29 	cmp/eq r0, r1
    30 	bt test_macl_1_fail
    31 	add #-4, r1
    32 	cmp/eq r0, r1
    33 	bf test_macl_1_fail
    35 	mac.l @r0+, @r0+
    36 	sts macl, r2
    37 	sts mach, r3
    38 	mov.l @r6+, r4
    39 	cmp/eq r2, r4
    40 	bf test_macl_1_fail
    41 	xor r5, r5
    42 	cmp/eq r3, r5
    43 	bf test_macl_1_fail
    44 	add #8, r1
    45 	cmp/eq r0, r1
    46 	bf test_macl_1_fail
    48 	mac.l @r0+, @r1+
    49 	sts macl, r2
    50 	sts mach, r3
    51 	mov.l @r6+, r4
    52 	cmp/eq r2, r4
    53 	bf test_macl_1_fail
    54 	mov.l @r6+, r5
    55 	cmp/eq r3, r5
    56 	bf test_macl_1_fail
    57 	bra test_macl_2
    58 	nop
    59 test_macl_1_fail:
    60 	fail test_mac_str_k
    61 	bra test_macl_2
    62 	nop
    63 test_macl_1_inputs_k:
    64 	.long test_macl_1_inputs
    65 test_macl_1_inputs:
    66 	.long 0x00000010
    67 	.long 0x00000021
    68 	.long 0xF0000002
    69 test_macl_1_results_k:
    70 	.long test_macl_1_results
    71 test_macl_1_results:
    72 	.long 0x00000100
    73 	.long 0x00000310
    74 	.long 0xC0000314
    75 	.long 0x00FFFFFF
    77 test_macl_2: ! Test saturation
    78 	add #1, r12
    79 	sets
    80 	mova test_macl_2_results, r0
    81 	mov r0, r3
    82 	mova test_macl_2_inputs, r0
    83 	mac.l @r0+, @r0+
    84 	sts macl, r1
    85 	mov.l @r3+, r2
    86 	cmp/eq r1, r2
    87 	bf test_macl_2_fail
    88 	sts mach, r1
    89 	mov.l @r3+, r2
    90 	cmp/eq r1, r2
    91 	bf test_macl_2_fail
    92 	mov r0, r1
    93 	mova test_macl_2_inputs, r0
    94 	add #8, r0
    95 	cmp/eq r0, r1
    96 	bf test_macl_2_fail
    98 	mac.l @r0+, @r0+	
    99 	sts macl, r1
   100 	mov.l @r3+, r2
   101 	cmp/eq r1, r2
   102 	bf test_macl_2_fail
   103 	sts mach, r1
   104 	mov.l @r3+, r2
   105 	cmp/eq r1, r2
   106 	bt test_macw_1
   108 test_macl_2_fail:
   109 	fail test_mac_str_k
   110 	bra test_macw_1
   111 	nop
   112 test_macl_2_inputs:
   113 	.long 0x00000000
   114 	.long 0x00000010
   115 	.long 0x7FFFFFDB
   116 	.long 0x800000EC
   118 test_macl_2_results:
   119 	.long 0xFFFFFFFF
   120 	.long 0x00007FFF
   121 	.long 0x00000000
   122 	.long 0xFFFF8000
   124 test_macw_1:
   125 	add #1, r12
   126 	clrs
   127 	clrmac
   129 	mova test_macw_1_results, r0
   130 	mov r0, r4
   131 	mova test_macw_1_inputs, r0
   132 	mov r0, r1
   133 	mac.w @r0+, @r1+
   134 	sts macl, r2
   135 	mov.l @r4+, r3
   136 	cmp/eq r2, r3
   137 	bf test_macw_1_fail
   138 	sts mach, r2
   139 	tst r2,r2
   140 	bf test_macw_1_fail
   141 	cmp/eq r0, r1
   142 	bf test_macw_1_fail
   143 	mova test_macw_1_inputs, r0
   144 	add #-2, r1
   145 	cmp/eq r0, r1
   146 	bf test_macw_1_fail
   148 	mac.w @r0+, @r0+
   149 	sts macl, r2
   150 	mov.l @r4+, r3
   151 	cmp/eq r2, r3
   152 	bf test_macw_1_fail
   153 	sts mach, r2
   154 	tst r2, r2
   155 	bf test_macw_1_fail
   156 	add #4, r1
   157 	cmp/eq r0, r1
   158 	bf test_macw_1_fail
   160 	add #2, r1
   161 	mac.w @r0+, @r1+
   162 	sts macl, r2
   163 	mov.l @r4+, r3
   164 	cmp/eq r2, r3
   165 	bf test_macw_1_fail
   166 	sts mach, r2
   167 	tst r2, r2
   168 	bf test_macw_1_fail
   169 	bra test_macw_2
   170 	nop
   172 test_macw_1_fail:
   173 	fail test_mac_str_k
   174 	bra test_macw_2
   175 	nop
   176 test_macw_1_inputs:
   177 	.long 0x00210014
   178 	.long 0x0002FFFF
   179 test_macw_1_results:
   180 	.long 0x00000190
   181 	.long 0x00000424
   182 	.long 0x00000422
   184 test_macw_2:
   185 	add #1, r12
   186 	sets
   187 	clrmac
   188 	xor r0, r0
   189 	not r0, r0
   190 	lds r0, mach
   192 	mova test_macw_2_results, r0
   193 	mov r0, r3
   194 	mova test_macw_2_inputs, r0
   195 	mov #3, r6
   196 test_macw_2_loop:	
   197 	mac.w @r0+, @r0+
   198 	sts macl, r1
   199 	mov.l @r3+, r2
   200 	cmp/eq r1, r2
   201 	bf test_macw_2_fail
   202 	sts mach, r1
   203 	mov.l @r3+, r2
   204 	cmp/eq r1, r2
   205 	bf test_macw_2_fail
   206 	dt r6
   207 	bf test_macw_2_loop
   209 	clrmac
   210 	mov #3, r6
   211 test_macw_2_loop_2:	
   212 	mac.w @r0+, @r0+
   213 	sts macl, r1
   214 	mov.l @r3+, r2
   215 	cmp/eq r1, r2
   216 	bf test_macw_2_fail
   217 	sts mach, r1
   218 	mov.l @r3+, r2
   219 	cmp/eq r1, r2
   220 	bf test_macw_2_fail
   221 	dt r6
   222 	bf test_macw_2_loop_2
   223 	bra test_mac_end
   224 	nop	
   226 test_macw_2_fail:
   227 	fail test_mac_str_k
   228 	bra test_mac_end
   229 	nop
   230 test_macw_2_inputs:
   231 	.long 0x7FFE7FFF
   232 	.long 0x7FFF7FFD
   233 	.long 0x7FFB7FFC
   234 	.long 0x80007FF1
   235 	.long 0x7FF28003
   236 	.long 0x80047FF5
   237 test_macw_2_results:
   238 	.long 0x3FFE8002
   239 	.long 0xFFFFFFFF
   240 	.long 0x7FFC8005
   241 	.long 0xFFFFFFFF
   242 	.long 0x7FFFFFFF
   243 	.long 0x00000001
   244 	.long 0xC0078000
   245 	.long 0x00000000
   246 	.long 0x800FFFD6
   247 	.long 0x00000000
   248 	.long 0x80000000
   249 	.long 0x00000001
   251 test_mac_end:	
   252 	end_test test_mac_str_k
   254 test_mac_data_end:	
   255 	.align 4
   256 test_mac_data_end_k:
   257 	.long test_mac_data_end	
   258 test_mac_str_k:
   259 	.long test_mac_str
   260 test_mac_str:
   261 	.string "MAC"
.