Home | History | Annotate | Line # | Download | only in fr400
      1 # frv testcase for smass $GRi,$GRj
      2 # mach: fr405 fr450
      3 
      4 	.include "../testutils.inc"
      5 
      6 	start
      7 
      8 	.global smass
      9 smass1:
     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	1,iacc0l
     15 	smass		gr7,gr8
     16 	test_gr_immed	3,gr7
     17 	test_gr_immed	2,gr8
     18 	test_spr_immed	7,iacc0l	; result 3*2+1
     19 	test_spr_immed	0,iacc0h
     20 smass2:
     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	1,iacc0l
     25 	smass		gr7,gr8
     26 	test_gr_immed	1,gr7
     27 	test_gr_immed	2,gr8
     28 	test_spr_immed	3,iacc0l	; result 1*2+1
     29 	test_spr_immed	0,iacc0h
     30 smass3:
     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	1,iacc0l
     35 	smass		gr7,gr8
     36 	test_gr_immed	1,gr8
     37 	test_gr_immed	2,gr7
     38 	test_spr_immed	3,iacc0l	; result 2*1+1
     39 	test_spr_immed	0,iacc0h
     40 smass4:
     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 	smass		gr7,gr8
     46 	test_gr_immed	2,gr8
     47 	test_gr_immed	0,gr7
     48 	test_spr_immed	1,iacc0l	; result 0*2+1
     49 	test_spr_immed	0,iacc0h
     50 smass5:
     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 	smass		gr7,gr8
     56 	test_gr_immed	0,gr8
     57 	test_gr_immed	2,gr7
     58 	test_spr_immed	1,iacc0l	; result 2*0+1
     59 	test_spr_immed	0,iacc0h
     60 smass6:
     61 	set_gr_limmed	0x3fff,0xffff,gr7	; 31 bit result
     62 	set_gr_immed	2,gr8
     63 	set_spr_immed	0,iacc0h
     64 	set_spr_immed	1,iacc0l
     65 	smass		gr7,gr8
     66 	test_gr_immed	2,gr8
     67 	test_gr_limmed	0x3fff,0xffff,gr7
     68 	test_spr_limmed	0x7fff,0xffff,iacc0l	; 3fffffff*2+1
     69 	test_spr_immed	0,iacc0h
     70 smass7:
     71 	set_gr_limmed	0x4000,0x0000,gr7	; 32 bit result
     72 	set_gr_immed	2,gr8
     73 	set_spr_immed	0,iacc0h
     74 	set_spr_immed	1,iacc0l
     75 	smass		gr7,gr8
     76 	test_gr_immed	2,gr8
     77 	test_gr_limmed	0x4000,0x0000,gr7
     78 	test_spr_limmed	0x8000,0x0001,iacc0l	; 40000000*2+1
     79 	test_spr_immed	0,iacc0h
     80 smass8:
     81 	set_gr_limmed	0x4000,0x0000,gr7	; 33 bit result
     82 	set_gr_immed	4,gr8
     83 	set_spr_immed	0,iacc0h
     84 	set_spr_immed	1,iacc0l
     85 	smass		gr7,gr8
     86 	test_gr_immed	4,gr8
     87 	test_gr_limmed	0x4000,0x0000,gr7
     88 	test_spr_immed	1,iacc0l		; 40000000*4+1
     89 	test_spr_immed	1,iacc0h
     90 smass9:
     91 	set_gr_limmed	0x7fff,0xffff,gr7	; max positive result
     92 	set_gr_limmed	0x7fff,0xffff,gr8
     93 	set_spr_immed	0,iacc0h
     94 	set_spr_immed	1,iacc0l
     95 	smass		gr7,gr8
     96 	test_gr_limmed	0x7fff,0xffff,gr8
     97 	test_gr_limmed	0x7fff,0xffff,gr7
     98 	test_spr_immed	0x00000002,iacc0l	; 7fffffff*7fffffff+1
     99 	test_spr_limmed	0x3fff,0xffff,iacc0h
    100 smass10:
    101 	; Mixed operands
    102 	set_gr_immed	-3,gr7		; multiply small numbers
    103 	set_gr_immed	2,gr8
    104 	set_spr_immed	0,iacc0h
    105 	set_spr_immed	1,iacc0l
    106 	smass		gr7,gr8
    107 	test_gr_immed	2,gr8
    108 	test_gr_immed	-3,gr7
    109 	test_spr_immed	-5,iacc0l	; -3*2+1
    110 	test_spr_immed	-1,iacc0h
    111 smass11:
    112 	set_gr_immed	3,gr7		; multiply small numbers
    113 	set_gr_immed	-2,gr8
    114 	set_spr_immed	0,iacc0h
    115 	set_spr_immed	1,iacc0l
    116 	smass		gr7,gr8
    117 	test_gr_immed	-2,gr8
    118 	test_gr_immed	3,gr7
    119 	test_spr_immed	-5,iacc0l	; 3*-2+1
    120 	test_spr_immed	-1,iacc0h
    121 smass12:
    122 	set_gr_immed	1,gr7		; multiply by 1
    123 	set_gr_immed	-2,gr8
    124 	set_spr_immed	0,iacc0h
    125 	set_spr_immed	1,iacc0l
    126 	smass		gr7,gr8
    127 	test_gr_immed	-2,gr8
    128 	test_gr_immed	1,gr7
    129 	test_spr_immed	-1,iacc0l	; 1*-2+1
    130 	test_spr_immed	-1,iacc0h
    131 smass13:
    132 	set_gr_immed	-2,gr7		; multiply by 1
    133 	set_gr_immed	1,gr8
    134 	set_spr_immed	0,iacc0h
    135 	set_spr_immed	1,iacc0l
    136 	smass		gr7,gr8
    137 	test_gr_immed	1,gr8
    138 	test_gr_immed	-2,gr7
    139 	test_spr_immed	-1,iacc0l	; -2*1+1
    140 	test_spr_immed	-1,iacc0h
    141 smass14:
    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 	smass		gr7,gr8
    147 	test_gr_immed	-2,gr8
    148 	test_gr_immed	0,gr7
    149 	test_spr_immed	1,iacc0l	; 0*-2+1
    150 	test_spr_immed	0,iacc0h
    151 smass15:
    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 	smass		gr7,gr8
    157 	test_gr_immed	0,gr8
    158 	test_gr_immed	-2,gr7
    159 	test_spr_immed	1,iacc0l	; -2*0+1
    160 	test_spr_immed	0,iacc0h
    161 smass16:
    162 	set_gr_limmed	0x2000,0x0001,gr7	; 31 bit result
    163 	set_gr_immed	-2,gr8
    164 	set_spr_immed	0,iacc0h
    165 	set_spr_immed	1,iacc0l
    166 	smass		gr7,gr8
    167 	test_gr_immed	-2,gr8
    168 	test_gr_limmed	0x2000,0x0001,gr7
    169 	test_spr_limmed	0xbfff,0xffff,iacc0l	; 20000001*-2+1
    170 	test_spr_limmed	0xffff,0xffff,iacc0h
    171 smass17:
    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 	smass		gr7,gr8
    177 	test_gr_immed	-2,gr8
    178 	test_gr_limmed	0x4000,0x0000,gr7
    179 	test_spr_limmed	0x8000,0x0001,iacc0l	; 40000000*-2+1
    180 	test_spr_limmed	0xffff,0xffff,iacc0h
    181 smass18:
    182 	set_gr_limmed	0x4000,0x0001,gr7	; 32 bit result
    183 	set_gr_immed	-2,gr8
    184 	set_spr_immed	0,iacc0h
    185 	set_spr_immed	1,iacc0l
    186 	smass		gr7,gr8
    187 	test_gr_immed	-2,gr8
    188 	test_gr_limmed	0x4000,0x0001,gr7
    189 	test_spr_limmed	0x7fff,0xffff,iacc0l	; 40000001*-2+1
    190 	test_spr_limmed	0xffff,0xffff,iacc0h
    191 smass19:
    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 	smass		gr7,gr8
    197 	test_gr_immed	-4,gr8
    198 	test_gr_limmed	0x4000,0x0000,gr7
    199 	test_spr_limmed	0x0000,0x0001,iacc0l	; 40000000*-4+1
    200 	test_spr_limmed	0xffff,0xffff,iacc0h
    201 smass20:
    202 	set_gr_limmed	0x7fff,0xffff,gr7	; max negative result
    203 	set_gr_limmed	0x8000,0x0000,gr8
    204 	set_spr_immed	0,iacc0h
    205 	set_spr_immed	1,iacc0l
    206 	smass		gr7,gr8
    207 	test_gr_limmed	0x8000,0x0000,gr8
    208 	test_gr_limmed	0x7fff,0xffff,gr7
    209 	test_spr_limmed	0x8000,0x0001,iacc0l	; 7fffffff*80000000+1
    210 	test_spr_limmed	0xc000,0x0000,iacc0h
    211 smass21:
    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	1,iacc0l
    217 	smass		gr7,gr8
    218 	test_gr_immed	-2,gr8
    219 	test_gr_immed	-3,gr7
    220 	test_spr_immed	7,iacc0l	; -3*-2+1
    221 	test_spr_immed	0,iacc0h
    222 smass22:
    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	1,iacc0l
    227 	smass		gr7,gr8
    228 	test_gr_immed	-2,gr8
    229 	test_gr_immed	-1,gr7
    230 	test_spr_immed	3,iacc0l	; -1*-2+1
    231 	test_spr_immed	0,iacc0h
    232 smass23:
    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	1,iacc0l
    237 	smass		gr7,gr8
    238 	test_gr_immed	-1,gr8
    239 	test_gr_immed	-2,gr7
    240 	test_spr_immed	3,iacc0l	; -2*-1+1
    241 	test_spr_immed	0,iacc0h
    242 smass24:
    243 	set_gr_limmed	0xc000,0x0001,gr7	; 31 bit result
    244 	set_gr_immed	-2,gr8
    245 	set_spr_immed	0,iacc0h
    246 	set_spr_immed	1,iacc0l
    247 	smass		gr7,gr8
    248 	test_gr_immed	-2,gr8
    249 	test_gr_limmed	0xc000,0x0001,gr7
    250 	test_spr_limmed	0x7fff,0xffff,iacc0l	; c0000001*-2+1
    251 	test_spr_immed	0,iacc0h
    252 smass25:
    253 	set_gr_limmed	0xc000,0x0000,gr7	; 32 bit result
    254 	set_gr_immed	-2,gr8
    255 	set_spr_immed	0,iacc0h
    256 	set_spr_immed	1,iacc0l
    257 	smass		gr7,gr8
    258 	test_gr_immed	-2,gr8
    259 	test_gr_limmed	0xc000,0x0000,gr7
    260 	test_spr_limmed	0x8000,0x0001,iacc0l	; c0000000*-2+1
    261 	test_spr_immed	0,iacc0h
    262 smass26:
    263 	set_gr_limmed	0xc000,0x0000,gr7	; 33 bit result
    264 	set_gr_immed	-4,gr8
    265 	set_spr_immed	0,iacc0h
    266 	set_spr_immed	1,iacc0l
    267 	smass		gr7,gr8
    268 	test_gr_immed	-4,gr8
    269 	test_gr_limmed	0xc000,0x0000,gr7
    270 	test_spr_immed	0x00000001,iacc0l	; c0000000*-4+1
    271 	test_spr_immed	1,iacc0h
    272 smass27:
    273 	set_gr_limmed	0x8000,0x0001,gr7	; almost max positive result
    274 	set_gr_limmed	0x8000,0x0001,gr8
    275 	set_spr_immed	0,iacc0h
    276 	set_spr_immed	1,iacc0l
    277 	smass		gr7,gr8
    278 	test_gr_limmed	0x8000,0x0001,gr8
    279 	test_gr_limmed	0x8000,0x0001,gr7
    280 	test_spr_immed	0x00000002,iacc0l	; 80000001*80000001+1
    281 	test_spr_limmed	0x3fff,0xffff,iacc0h
    282 smass28:
    283 	set_gr_limmed	0x8000,0x0000,gr7	; max positive result
    284 	set_gr_limmed	0x8000,0x0000,gr8
    285 	set_spr_immed	0,iacc0h
    286 	set_spr_immed	1,iacc0l
    287 	smass		gr7,gr8
    288 	test_gr_limmed	0x8000,0x0000,gr8
    289 	test_gr_limmed	0x8000,0x0000,gr7
    290 	test_spr_immed	0x00000001,iacc0l	; 80000000*80000000+1
    291 	test_spr_limmed	0x4000,0x0000,iacc0h
    292 
    293 smass29:
    294 	set_gr_limmed	0x7fff,0xffff,gr7	; not quite overflow (pos)
    295 	set_gr_limmed	0x7fff,0xffff,gr8
    296 	set_spr_limmed	0xffff,0xfffe,iacc0l
    297 	set_spr_limmed	0x4000,0x0000,iacc0h
    298 	smass		gr7,gr8
    299 	test_gr_limmed	0x7fff,0xffff,gr8
    300 	test_gr_limmed	0x7fff,0xffff,gr7
    301 	test_spr_limmed	0xffff,0xffff,iacc0l	; 7fffffff*7fffffff+
    302 	test_spr_limmed	0x7fff,0xffff,iacc0h	;  40000000fffffffe
    303 
    304 smass30:
    305 	set_gr_limmed	0x7fff,0xffff,gr7	; just barely overflow (pos)
    306 	set_gr_limmed	0x7fff,0xffff,gr8
    307 	set_spr_limmed	0xffff,0xffff,iacc0l
    308 	set_spr_limmed	0x4000,0x0000,iacc0h
    309 	smass		gr7,gr8
    310 	test_gr_limmed	0x7fff,0xffff,gr8
    311 	test_gr_limmed	0x7fff,0xffff,gr7
    312 	test_spr_limmed	0xffff,0xffff,iacc0l	; 7fffffff*7fffffff+
    313 	test_spr_limmed	0x7fff,0xffff,iacc0h	;  40000000ffffffff
    314 
    315 smass31:
    316 	set_gr_limmed	0x7fff,0xffff,gr7	; maximum overflow (pos)
    317 	set_gr_limmed	0x7fff,0xffff,gr8
    318 	set_spr_limmed	0xffff,0xffff,iacc0l
    319 	set_spr_limmed	0x7fff,0xffff,iacc0h
    320 	smass		gr7,gr8
    321 	test_gr_limmed	0x7fff,0xffff,gr8
    322 	test_gr_limmed	0x7fff,0xffff,gr7
    323 	test_spr_limmed	0xffff,0xffff,iacc0l	; 7fffffff*7fffffff+
    324 	test_spr_limmed	0x7fff,0xffff,iacc0h	;  7fffffffffffffff
    325 
    326 smass32:
    327 	set_gr_limmed	0x7fff,0xffff,gr7	; not quite overflow (neg)
    328 	set_gr_limmed	0x8000,0x0000,gr8
    329 	set_spr_limmed	0x8000,0x0000,iacc0l
    330 	set_spr_limmed	0xbfff,0xffff,iacc0h
    331 	smass		gr7,gr8
    332 	test_gr_limmed	0x8000,0x0000,gr8
    333 	test_gr_limmed	0x7fff,0xffff,gr7
    334 	test_spr_limmed	0x0000,0x0000,iacc0l	; 7fffffff*7fffffff+
    335 	test_spr_limmed	0x8000,0x0000,iacc0h	;  bfffffff80000000
    336 
    337 smass33:
    338 	set_gr_limmed	0x7fff,0xffff,gr7	; just barely overflow (neg)
    339 	set_gr_limmed	0x8000,0x0000,gr8
    340 	set_spr_limmed	0x7fff,0xffff,iacc0l
    341 	set_spr_limmed	0xbfff,0xffff,iacc0h
    342 	smass		gr7,gr8
    343 	test_gr_limmed	0x8000,0x0000,gr8
    344 	test_gr_limmed	0x7fff,0xffff,gr7
    345 	test_spr_limmed	0x0000,0x0000,iacc0l	; 7fffffff*7fffffff+
    346 	test_spr_limmed	0x8000,0x0000,iacc0h	;  bfffffff7fffffff
    347 
    348 smass34:
    349 	set_gr_limmed	0x7fff,0xffff,gr7	; maximum overflow (neg)
    350 	set_gr_limmed	0x8000,0x0000,gr8
    351 	set_spr_limmed	0x0000,0x0000,iacc0l
    352 	set_spr_limmed	0x8000,0x0000,iacc0h
    353 	smass		gr7,gr8
    354 	test_gr_limmed	0x8000,0x0000,gr8
    355 	test_gr_limmed	0x7fff,0xffff,gr7
    356 	test_spr_limmed	0x0000,0x0000,iacc0l	; 7fffffff*7fffffff+
    357 	test_spr_limmed	0x8000,0x0000,iacc0h	;  8000000000000000
    358 
    359 	pass
    360