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