Home | History | Annotate | Line # | Download | only in fr400
      1 # frv testcase for smsss $GRi,$GRj
      2 # mach: fr405 fr450
      3 
      4 	.include "../testutils.inc"
      5 
      6 	start
      7 
      8 	.global smsss
      9 smsss1:
     10 	; Positive operands
     11 	set_gr_immed	3,gr7		; multiply small numbers
     12 	set_gr_immed	2,gr8
     13 	set_spr_immed	0,iacc0h
     14 	set_spr_immed	7,iacc0l
     15 	smsss		gr7,gr8
     16 	test_gr_immed	3,gr7
     17 	test_gr_immed	2,gr8
     18 	test_spr_immed	1,iacc0l	; result 7-3*2
     19 	test_spr_immed	0,iacc0h
     20 smsss2:
     21 	set_gr_immed	1,gr7		; multiply by 1
     22 	set_gr_immed	2,gr8
     23 	set_spr_immed	0,iacc0h
     24 	set_spr_immed	3,iacc0l
     25 	smsss		gr7,gr8
     26 	test_gr_immed	1,gr7
     27 	test_gr_immed	2,gr8
     28 	test_spr_immed	1,iacc0l	; result 3-1*2
     29 	test_spr_immed	0,iacc0h
     30 smsss3:
     31 	set_gr_immed	2,gr7		; multiply by 1
     32 	set_gr_immed	1,gr8
     33 	set_spr_immed	0,iacc0h
     34 	set_spr_immed	3,iacc0l
     35 	smsss		gr7,gr8
     36 	test_gr_immed	1,gr8
     37 	test_gr_immed	2,gr7
     38 	test_spr_immed	1,iacc0l	; result 3-2*1
     39 	test_spr_immed	0,iacc0h
     40 smsss4:
     41 	set_gr_immed	0,gr7		; multiply by 0
     42 	set_gr_immed	2,gr8
     43 	set_spr_immed	0,iacc0h
     44 	set_spr_immed	1,iacc0l
     45 	smsss		gr7,gr8
     46 	test_gr_immed	2,gr8
     47 	test_gr_immed	0,gr7
     48 	test_spr_immed	1,iacc0l	; result 1-0*2
     49 	test_spr_immed	0,iacc0h
     50 smsss5:
     51 	set_gr_immed	2,gr7		; multiply by 0
     52 	set_gr_immed	0,gr8
     53 	set_spr_immed	0,iacc0h
     54 	set_spr_immed	1,iacc0l
     55 	smsss		gr7,gr8
     56 	test_gr_immed	0,gr8
     57 	test_gr_immed	2,gr7
     58 	test_spr_immed	1,iacc0l	; result 1-2*0
     59 	test_spr_immed	0,iacc0h
     60 smsss6:
     61 	set_gr_limmed	0x3fff,0xffff,gr7	; 31 bit result
     62 	set_gr_immed	2,gr8
     63 	set_spr_immed	-1,iacc0h
     64 	set_spr_immed	-1,iacc0l
     65 	smsss		gr7,gr8
     66 	test_gr_immed	2,gr8
     67 	test_gr_limmed	0x3fff,0xffff,gr7
     68 	test_spr_limmed	0x8000,0x0001,iacc0l	; -1-3fffffff*2
     69 	test_spr_immed	-1,iacc0h
     70 smsss7:
     71 	set_gr_limmed	0x4000,0x0000,gr7	; 32 bit result
     72 	set_gr_immed	2,gr8
     73 	set_spr_immed	-1,iacc0h
     74 	set_spr_limmed	0x8000,0x0001,iacc0l
     75 	smsss		gr7,gr8
     76 	test_gr_immed	2,gr8
     77 	test_gr_limmed	0x4000,0x0000,gr7
     78 	test_spr_immed	1,iacc0l	; ffffffff80000001-40000000*2
     79 	test_spr_immed	-1,iacc0h
     80 smsss8:
     81 	set_gr_limmed	0x4000,0x0000,gr7	; 33 bit result
     82 	set_gr_immed	4,gr8
     83 	set_spr_immed	-1,iacc0h
     84 	set_spr_immed	1,iacc0l
     85 	smsss		gr7,gr8
     86 	test_gr_immed	4,gr8
     87 	test_gr_limmed	0x4000,0x0000,gr7
     88 	test_spr_immed	1,iacc0l		; ffffffff00000001-40000000*4
     89 	test_spr_immed	-2,iacc0h
     90 smsss9:
     91 	set_gr_limmed	0x7fff,0xffff,gr7	; max positive result
     92 	set_gr_limmed	0x7fff,0xffff,gr8
     93 	set_spr_limmed	0x7fff,0xffff,iacc0h
     94 	set_spr_immed	-1,iacc0l
     95 	smsss		gr7,gr8
     96 	test_gr_limmed	0x7fff,0xffff,gr8
     97 	test_gr_limmed	0x7fff,0xffff,gr7
     98 	test_spr_limmed	0xffff,0xfffe,iacc0l	; 7fffffffffffffff-7fffffff*7fffffff
     99 	test_spr_limmed	0x4000,0x0000,iacc0h
    100 smsss10:
    101 	; Mixed operands
    102 	set_gr_immed	-3,gr7		; multiply small numbers
    103 	set_gr_immed	2,gr8
    104 	set_spr_immed	-1,iacc0h
    105 	set_spr_immed	-5,iacc0l
    106 	smsss		gr7,gr8
    107 	test_gr_immed	2,gr8
    108 	test_gr_immed	-3,gr7
    109 	test_spr_immed	1,iacc0l	; -5-(-3*2)
    110 	test_spr_immed	0,iacc0h
    111 smsss11:
    112 	set_gr_immed	3,gr7		; multiply small numbers
    113 	set_gr_immed	-2,gr8
    114 	set_spr_immed	-1,iacc0h
    115 	set_spr_immed	-5,iacc0l
    116 	smsss		gr7,gr8
    117 	test_gr_immed	-2,gr8
    118 	test_gr_immed	3,gr7
    119 	test_spr_immed	1,iacc0l	; -5-(3*-2)
    120 	test_spr_immed	0,iacc0h
    121 smsss12:
    122 	set_gr_immed	1,gr7		; multiply by 1
    123 	set_gr_immed	-2,gr8
    124 	set_spr_immed	-1,iacc0h
    125 	set_spr_immed	-1,iacc0l
    126 	smsss		gr7,gr8
    127 	test_gr_immed	-2,gr8
    128 	test_gr_immed	1,gr7
    129 	test_spr_immed	1,iacc0l	; -1-(1*-2)
    130 	test_spr_immed	0,iacc0h
    131 smsss13:
    132 	set_gr_immed	-2,gr7		; multiply by 1
    133 	set_gr_immed	1,gr8
    134 	set_spr_immed	-1,iacc0h
    135 	set_spr_immed	-1,iacc0l
    136 	smsss		gr7,gr8
    137 	test_gr_immed	1,gr8
    138 	test_gr_immed	-2,gr7
    139 	test_spr_immed	1,iacc0l	; -1-(-2*1)
    140 	test_spr_immed	0,iacc0h
    141 smsss14:
    142 	set_gr_immed	0,gr7		; multiply by 0
    143 	set_gr_immed	-2,gr8
    144 	set_spr_immed	0,iacc0h
    145 	set_spr_immed	1,iacc0l
    146 	smsss		gr7,gr8
    147 	test_gr_immed	-2,gr8
    148 	test_gr_immed	0,gr7
    149 	test_spr_immed	1,iacc0l	; 1-(0*-2)
    150 	test_spr_immed	0,iacc0h
    151 smsss15:
    152 	set_gr_immed	-2,gr7		; multiply by 0
    153 	set_gr_immed	0,gr8
    154 	set_spr_immed	0,iacc0h
    155 	set_spr_immed	1,iacc0l
    156 	smsss		gr7,gr8
    157 	test_gr_immed	0,gr8
    158 	test_gr_immed	-2,gr7
    159 	test_spr_immed	1,iacc0l	; 1-(-2*0)
    160 	test_spr_immed	0,iacc0h
    161 smsss16:
    162 	set_gr_limmed	0x2000,0x0000,gr7	; 31 bit result
    163 	set_gr_immed	-2,gr8
    164 	set_spr_immed	0,iacc0h
    165 	set_spr_limmed	0x3fff,0xffff,iacc0l
    166 	smsss		gr7,gr8
    167 	test_gr_immed	-2,gr8
    168 	test_gr_limmed	0x2000,0x0000,gr7
    169 	test_spr_limmed	0x7fff,0xffff,iacc0l
    170 	test_spr_immed	0,iacc0h	; 3fffffff-20000001*-2
    171 smsss17:
    172 	set_gr_limmed	0x4000,0x0000,gr7	; 32 bit result
    173 	set_gr_immed	-2,gr8
    174 	set_spr_immed	0,iacc0h
    175 	set_spr_immed	1,iacc0l
    176 	smsss		gr7,gr8
    177 	test_gr_immed	-2,gr8
    178 	test_gr_limmed	0x4000,0x0000,gr7
    179 	test_spr_limmed	0x8000,0x0001,iacc0l	; 1-40000000*-2
    180 	test_spr_immed	0,iacc0h
    181 smsss18:
    182 	set_gr_limmed	0x4000,0x0000,gr7	; 32 bit result
    183 	set_gr_immed	-2,gr8
    184 	set_spr_immed	-1,iacc0h
    185 	set_spr_immed	-1,iacc0l
    186 	smsss		gr7,gr8
    187 	test_gr_immed	-2,gr8
    188 	test_gr_limmed	0x4000,0x0000,gr7
    189 	test_spr_limmed	0x7fff,0xffff,iacc0l
    190 	test_spr_immed	0,iacc0h	; -1-40000000*-2
    191 smsss19:
    192 	set_gr_limmed	0x4000,0x0000,gr7	; 33 bit result
    193 	set_gr_immed	-4,gr8
    194 	set_spr_immed	0,iacc0h
    195 	set_spr_immed	1,iacc0l
    196 	smsss		gr7,gr8
    197 	test_gr_immed	-4,gr8
    198 	test_gr_limmed	0x4000,0x0000,gr7
    199 	test_spr_immed	1,iacc0l	; 200000001-(40000000*-4)
    200 	test_spr_immed	1,iacc0h
    201 smsss20:
    202 	set_gr_limmed	0x7fff,0xffff,gr7	; max negative result
    203 	set_gr_limmed	0x7fff,0xffff,gr8
    204 	set_spr_limmed	0xbfff,0xffff,iacc0h
    205 	set_spr_limmed	0x0000,0x0001,iacc0l
    206 	smsss		gr7,gr8
    207 	test_gr_limmed	0x7fff,0xffff,gr8
    208 	test_gr_limmed	0x7fff,0xffff,gr7
    209 	test_spr_immed	0,iacc0l	; bfffffff00000001-(7fffffff*7fffffff)
    210 	test_spr_limmed	0x8000,0x0000,iacc0h
    211 smsss21:
    212 	; Negative operands
    213 	set_gr_immed	-3,gr7		; multiply small numbers
    214 	set_gr_immed	-2,gr8
    215 	set_spr_immed	0,iacc0h
    216 	set_spr_immed	7,iacc0l
    217 	smsss		gr7,gr8
    218 	test_gr_immed	-2,gr8
    219 	test_gr_immed	-3,gr7
    220 	test_spr_immed	1,iacc0l	; 7-(-3*-2)
    221 	test_spr_immed	0,iacc0h
    222 smsss22:
    223 	set_gr_immed	-1,gr7		; multiply by 1
    224 	set_gr_immed	-2,gr8
    225 	set_spr_immed	0,iacc0h
    226 	set_spr_immed	3,iacc0l
    227 	smsss		gr7,gr8
    228 	test_gr_immed	-2,gr8
    229 	test_gr_immed	-1,gr7
    230 	test_spr_immed	1,iacc0l	; 3-(-1*-2)
    231 	test_spr_immed	0,iacc0h
    232 smsss23:
    233 	set_gr_immed	-2,gr7		; multiply by 1
    234 	set_gr_immed	-1,gr8
    235 	set_spr_immed	0,iacc0h
    236 	set_spr_immed	3,iacc0l
    237 	smsss		gr7,gr8
    238 	test_gr_immed	-1,gr8
    239 	test_gr_immed	-2,gr7
    240 	test_spr_immed	1,iacc0l	; 3-(-2*-1)
    241 	test_spr_immed	0,iacc0h
    242 smsss24:
    243 	set_gr_immed	-32768,gr7		; 31 bit result
    244 	set_gr_immed	-32768,gr8
    245 	set_spr_immed	0,iacc0h
    246 	set_spr_limmed	0xbfff,0xffff,iacc0l
    247 	smsss		gr7,gr8
    248 	test_gr_immed	-32768,gr8
    249 	test_gr_immed	-32768,gr7
    250 	test_spr_limmed	0x7fff,0xffff,iacc0l	; 7ffffffb-(-2*-2)
    251 	test_spr_immed	0,iacc0h
    252 smsss25:
    253 	set_gr_immed	0xffff,gr7		; 32 bit result
    254 	set_gr_immed	0xffff,gr8
    255 	set_spr_immed	1,iacc0h
    256 	set_spr_limmed	0xfffe,0x0000,iacc0l
    257 	smsss		gr7,gr8
    258 	test_gr_immed	0xffff,gr8
    259 	test_gr_immed	0xffff,gr7
    260 	test_spr_limmed	0xffff,0xffff,iacc0l	; 1fffe0000-ffff*ffff
    261 	test_spr_immed	0,iacc0h
    262 smsss26:
    263 	set_gr_limmed	0x0001,0x0000,gr7	; 33 bit result
    264 	set_gr_limmed	0x0001,0x0000,gr8
    265 	set_spr_immed	2,iacc0h
    266 	set_spr_immed	1,iacc0l
    267 	smsss		gr7,gr8
    268 	test_gr_limmed	0x0001,0x0000,gr8
    269 	test_gr_limmed	0x0001,0x0000,gr7
    270 	test_spr_immed	1,iacc0l	; 0x200000001-0x10000*0x10000
    271 	test_spr_immed	1,iacc0h
    272 smsss27:
    273 	set_gr_immed	-2,gr7		; almost max positive result
    274 	set_gr_immed	-2,gr8
    275 	set_spr_limmed	0x7fff,0xffff,iacc0h
    276 	set_spr_limmed	0xffff,0xffff,iacc0l
    277 	smsss		gr7,gr8
    278 	test_gr_immed	-2,gr8
    279 	test_gr_immed	-2,gr7
    280 	test_spr_limmed	0xffff,0xfffb,iacc0l	; maxpos - (-2*-2)
    281 	test_spr_limmed	0x7fff,0xffff,iacc0h
    282 smsss28:
    283 	set_gr_immed	0,gr7		; max positive result
    284 	set_gr_immed	0,gr8
    285 	set_spr_limmed	0x7fff,0xffff,iacc0h
    286 	set_spr_limmed	0xffff,0xffff,iacc0l
    287 	smsss		gr7,gr8
    288 	test_gr_immed	0,gr8
    289 	test_gr_immed	0,gr7
    290 	test_spr_limmed	0xffff,0xffff,iacc0l	; maxpos-(0*0)
    291 	test_spr_limmed	0x7fff,0xffff,iacc0h
    292 smsss29:
    293 	set_gr_limmed	0x7fff,0xffff,gr7	; not quite overflow (pos)
    294 	set_gr_limmed	0x8000,0x0000,gr8
    295 	set_spr_limmed	0x4000,0x0000,iacc0h
    296 	set_spr_limmed	0x7fff,0xffff,iacc0l
    297 	smsss		gr7,gr8
    298 	test_gr_limmed	0x8000,0x0000,gr8
    299 	test_gr_limmed	0x7fff,0xffff,gr7
    300 	test_spr_limmed	0xffff,0xffff,iacc0l	; 400000007fffffff - 
    301 	test_spr_limmed	0x7fff,0xffff,iacc0h	;  0x80000000*0x7fffffff
    302 smsss30:
    303 	set_gr_limmed	0x7fff,0xffff,gr7	; just barely overflow (pos)
    304 	set_gr_limmed	0x8000,0x0000,gr8
    305 	set_spr_limmed	0x4000,0x0000,iacc0h
    306 	set_spr_limmed	0x8000,0x0000,iacc0l
    307 	smsss		gr7,gr8
    308 	test_gr_limmed	0x8000,0x0000,gr8
    309 	test_gr_limmed	0x7fff,0xffff,gr7
    310 	test_spr_limmed	0xffff,0xffff,iacc0l	; 4000000080000000 -
    311 	test_spr_limmed	0x7fff,0xffff,iacc0h	;  0x80000000*0x7fffffff
    312 
    313 smsss31:
    314 	set_gr_limmed	0x7fff,0xffff,gr7	; maximum overflow (pos)
    315 	set_gr_limmed	0x8000,0x0000,gr8
    316 	set_spr_limmed	0xffff,0xffff,iacc0l
    317 	set_spr_limmed	0x7fff,0xffff,iacc0h
    318 	smsss		gr7,gr8
    319 	test_gr_limmed	0x8000,0x0000,gr8
    320 	test_gr_limmed	0x7fff,0xffff,gr7
    321 	test_spr_limmed	0xffff,0xffff,iacc0l	; 7fffffffffffffff -
    322 	test_spr_limmed	0x7fff,0xffff,iacc0h	;  80000000*80000000
    323 smsss32:
    324 	set_gr_limmed	0x7fff,0xffff,gr7	; not quite overflow (neg)
    325 	set_gr_limmed	0x7fff,0xffff,gr8
    326 	set_spr_immed	1,iacc0l
    327 	set_spr_limmed	0xbfff,0xffff,iacc0h
    328 	smsss		gr7,gr8
    329 	test_gr_limmed	0x7fff,0xffff,gr8
    330 	test_gr_limmed	0x7fff,0xffff,gr7
    331 	test_spr_limmed	0x0000,0x0000,iacc0l	; bfffffff00000001 -
    332 	test_spr_limmed	0x8000,0x0000,iacc0h	;  0x7fffffff*0x7fffffff
    333 smsss33:
    334 	set_gr_limmed	0x7fff,0xffff,gr7	; just barely overflow (neg)
    335 	set_gr_limmed	0x7fff,0xffff,gr8
    336 	set_spr_immed	0,iacc0l
    337 	set_spr_limmed	0xbfff,0xffff,iacc0h
    338 	smsss		gr7,gr8
    339 	test_gr_limmed	0x7fff,0xffff,gr8
    340 	test_gr_limmed	0x7fff,0xffff,gr7
    341 	test_spr_limmed	0x0000,0x0000,iacc0l	; 7fffffff*7fffffff+
    342 	test_spr_limmed	0x8000,0x0000,iacc0h	;  bfffffff7fffffff
    343 smsss34:
    344 	set_gr_limmed	0x7fff,0xffff,gr7	; maximum overflow (neg)
    345 	set_gr_limmed	0x7fff,0xffff,gr8
    346 	set_spr_limmed	0x0000,0x0000,iacc0l
    347 	set_spr_limmed	0x8000,0x0000,iacc0h
    348 	smsss		gr7,gr8
    349 	test_gr_limmed	0x7fff,0xffff,gr8
    350 	test_gr_limmed	0x7fff,0xffff,gr7
    351 	test_spr_limmed	0x0000,0x0000,iacc0l	; 8000000000000000-
    352 	test_spr_limmed	0x8000,0x0000,iacc0h	;  7fffffff*7fffffff+
    353 
    354 	pass
    355