Home | History | Annotate | Line # | Download | only in frv
      1 # frv testcase for cmcpxrs $GRi,$GRj,$ACCk,$CCi,$cond
      2 # mach: all
      3 
      4 	.include "testutils.inc"
      5 
      6 	start
      7 
      8 	.global cmcpxrs
      9 cmcpxrs:
     10 	set_spr_immed	0x1b1b,cccr
     11 
     12 	; Positive operands
     13 	set_fr_iimmed  	2,4,fr7		; multiply small numbers
     14 	set_fr_iimmed  	3,5,fr8
     15 	cmcpxrs      	fr7,fr8,acc0,cc0,1
     16 	test_accg_immed 	0xff,accg0
     17 	test_acc_immed 	-14,acc0
     18 
     19 	set_fr_iimmed  	3,1,fr7		; multiply by 0
     20 	set_fr_iimmed  	2,0,fr8
     21 	cmcpxrs      	fr7,fr8,acc0,cc0,1
     22 	test_accg_immed 	0,accg0
     23 	test_acc_immed 	6,acc0
     24 
     25 	set_fr_iimmed  	2,1,fr7		; multiply by 1
     26 	set_fr_iimmed  	1,1,fr8
     27 	cmcpxrs      	fr7,fr8,acc0,cc0,1
     28 	test_accg_immed 	0,accg0
     29 	test_acc_immed 	1,acc0
     30 
     31 	set_fr_iimmed	0x3fff,2,fr7	; 15 bit result
     32 	set_fr_iimmed  	2,0x0007,fr8
     33 	cmcpxrs      	fr7,fr8,acc0,cc0,1
     34 	test_accg_immed 	0,accg0
     35 	test_acc_limmed	0,0x7ff0,acc0
     36 
     37 	set_fr_iimmed	0x4000,2,fr7	; 16 bit result
     38 	set_fr_iimmed  	2,0x2000,fr8
     39 	cmcpxrs      	fr7,fr8,acc0,cc0,1
     40 	test_accg_immed 	0,accg0
     41 	test_acc_limmed	0x0000,0x4000,acc0
     42 
     43 	set_fr_iimmed	0x7fff,0x0000,fr7	; max positive result
     44 	set_fr_iimmed	0x7fff,0x7fff,fr8
     45 	cmcpxrs      	fr7,fr8,acc0,cc0,1
     46 	test_accg_immed 	0,accg0
     47 	test_acc_limmed 0x3fff,0x0001,acc0
     48 
     49 	; Mixed operands
     50 	set_fr_iimmed  	2,0xfffd,fr7		; multiply small numbers
     51 	set_fr_iimmed  	0xfffd,1,fr8
     52 	cmcpxrs      	fr7,fr8,acc0,cc0,1
     53 	test_accg_immed 	0xff,accg0
     54 	test_acc_immed 	-3,acc0
     55 
     56 	set_fr_iimmed  	0xfffe,2,fr7		; multiply by 1
     57 	set_fr_iimmed  	1,0xfffe,fr8
     58 	cmcpxrs      	fr7,fr8,acc0,cc4,1
     59 	test_accg_immed 	0,accg0
     60 	test_acc_immed 	2,acc0
     61 
     62 	set_fr_iimmed  	0xfffe,0,fr7		; multiply by 0
     63 	set_fr_iimmed  	1,0xfffe,fr8
     64 	cmcpxrs      	fr7,fr8,acc0,cc4,1
     65 	test_accg_immed 	0xff,accg0
     66 	test_acc_immed 	-2,acc0
     67 
     68 	set_fr_iimmed  	0x2001,0xfffe,fr7	; 15 bit result
     69 	set_fr_iimmed  	0xfffe,0xfff9,fr8
     70 	cmcpxrs      	fr7,fr8,acc0,cc4,1
     71 	test_accg_immed 	0xff,accg0
     72 	test_acc_limmed	0xffff,0xbff0,acc0
     73 
     74 	set_fr_iimmed	0x4000,0xfffe,fr7	; 16 bit result
     75 	set_fr_iimmed  	0xfffe,0x0003,fr8
     76 	cmcpxrs      	fr7,fr8,acc0,cc4,1
     77 	test_accg_immed 	0xff,accg0
     78 	test_acc_limmed	0xffff,0x8006,acc0
     79 
     80 	set_fr_iimmed	0x7fff,0x8000,fr7	; max negative result
     81 	set_fr_iimmed	0x8000,0x8000,fr8
     82 	cmcpxrs      	fr7,fr8,acc0,cc4,1
     83 	test_accg_immed 	0xff,accg0
     84 	test_acc_limmed	0x8000,0x8000,acc0
     85 
     86 	set_fr_iimmed	0x8000,0x7fff,fr7	; max positive result
     87 	set_fr_iimmed	0x8000,0x8000,fr8
     88 	cmcpxrs      	fr7,fr8,acc0,cc4,1
     89 	test_accg_immed 	0,accg0
     90 	test_acc_limmed	0x7fff,0x8000,acc0
     91 
     92 	; Negative operands
     93 	set_fr_iimmed  	0xfffe,0xfffc,fr7		; multiply small numbers
     94 	set_fr_iimmed  	0xfffd,0xfffb,fr8
     95 	cmcpxrs      	fr7,fr8,acc0,cc4,1
     96 	test_accg_immed 	0xff,accg0
     97 	test_acc_immed 	-14,acc0
     98 
     99 	set_fr_iimmed  	0xffff,0xffff,fr7		; multiply by -1
    100 	set_fr_iimmed  	0xfffe,0xffff,fr8
    101 	cmcpxrs      	fr7,fr8,acc0,cc4,1
    102 	test_accg_immed 	0,accg0
    103 	test_acc_immed 	1,acc0
    104 
    105 	set_fr_iimmed	0x7fff,0x0000,fr7	; almost max positive result
    106 	set_fr_iimmed	0x7fff,0x8001,fr8
    107 	cmcpxrs      	fr7,fr8,acc0,cc0,1
    108 	test_accg_immed 	0,accg0
    109 	test_acc_immed 	0x3fff0001,acc0
    110 
    111 	set_fr_iimmed	0x8000,0x0000,fr7	; max positive result
    112 	set_fr_iimmed	0x8000,0x8000,fr8
    113 	cmcpxrs      	fr7,fr8,acc0,cc4,1
    114 	test_accg_immed 	0,accg0
    115 	test_acc_immed 	0x40000000,acc0
    116 
    117 	set_fr_iimmed  	2,4,fr7		; multiply small numbers
    118 	set_fr_iimmed  	3,5,fr8
    119 	cmcpxrs      	fr7,fr8,acc0,cc1,0
    120 	test_accg_immed 	0xff,accg0
    121 	test_acc_immed 	-14,acc0
    122 
    123 	set_fr_iimmed  	3,1,fr7		; multiply by 0
    124 	set_fr_iimmed  	2,0,fr8
    125 	cmcpxrs      	fr7,fr8,acc0,cc1,0
    126 	test_accg_immed 	0,accg0
    127 	test_acc_immed 	6,acc0
    128 
    129 	set_fr_iimmed  	2,1,fr7		; multiply by 1
    130 	set_fr_iimmed  	1,1,fr8
    131 	cmcpxrs      	fr7,fr8,acc0,cc1,0
    132 	test_accg_immed 	0,accg0
    133 	test_acc_immed 	1,acc0
    134 
    135 	set_fr_iimmed	0x3fff,2,fr7	; 15 bit result
    136 	set_fr_iimmed  	2,0x0007,fr8
    137 	cmcpxrs      	fr7,fr8,acc0,cc1,0
    138 	test_accg_immed 	0,accg0
    139 	test_acc_limmed	0,0x7ff0,acc0
    140 
    141 	set_fr_iimmed	0x4000,2,fr7	; 16 bit result
    142 	set_fr_iimmed  	2,0x2000,fr8
    143 	cmcpxrs      	fr7,fr8,acc0,cc1,0
    144 	test_accg_immed 	0,accg0
    145 	test_acc_limmed	0x0000,0x4000,acc0
    146 
    147 	set_fr_iimmed	0x7fff,0x0000,fr7	; max positive result
    148 	set_fr_iimmed	0x7fff,0x7fff,fr8
    149 	cmcpxrs      	fr7,fr8,acc0,cc1,0
    150 	test_accg_immed 	0,accg0
    151 	test_acc_limmed 0x3fff,0x0001,acc0
    152 
    153 	; Mixed operands
    154 	set_fr_iimmed  	2,0xfffd,fr7		; multiply small numbers
    155 	set_fr_iimmed  	0xfffd,1,fr8
    156 	cmcpxrs      	fr7,fr8,acc0,cc1,0
    157 	test_accg_immed 	0xff,accg0
    158 	test_acc_immed 	-3,acc0
    159 
    160 	set_fr_iimmed  	0xfffe,2,fr7		; multiply by 1
    161 	set_fr_iimmed  	1,0xfffe,fr8
    162 	cmcpxrs      	fr7,fr8,acc0,cc5,0
    163 	test_accg_immed 	0,accg0
    164 	test_acc_immed 	2,acc0
    165 
    166 	set_fr_iimmed  	0xfffe,0,fr7		; multiply by 0
    167 	set_fr_iimmed  	1,0xfffe,fr8
    168 	cmcpxrs      	fr7,fr8,acc0,cc5,0
    169 	test_accg_immed 	0xff,accg0
    170 	test_acc_immed 	-2,acc0
    171 
    172 	set_fr_iimmed  	0x2001,0xfffe,fr7	; 15 bit result
    173 	set_fr_iimmed  	0xfffe,0xfff9,fr8
    174 	cmcpxrs      	fr7,fr8,acc0,cc5,0
    175 	test_accg_immed 	0xff,accg0
    176 	test_acc_limmed	0xffff,0xbff0,acc0
    177 
    178 	set_fr_iimmed	0x4000,0xfffe,fr7	; 16 bit result
    179 	set_fr_iimmed  	0xfffe,0x0003,fr8
    180 	cmcpxrs      	fr7,fr8,acc0,cc5,0
    181 	test_accg_immed 	0xff,accg0
    182 	test_acc_limmed	0xffff,0x8006,acc0
    183 
    184 	set_fr_iimmed	0x7fff,0x8000,fr7	; max negative result
    185 	set_fr_iimmed	0x8000,0x8000,fr8
    186 	cmcpxrs      	fr7,fr8,acc0,cc5,0
    187 	test_accg_immed 	0xff,accg0
    188 	test_acc_limmed	0x8000,0x8000,acc0
    189 
    190 	set_fr_iimmed	0x8000,0x7fff,fr7	; max positive result
    191 	set_fr_iimmed	0x8000,0x8000,fr8
    192 	cmcpxrs      	fr7,fr8,acc0,cc5,0
    193 	test_accg_immed 	0,accg0
    194 	test_acc_limmed	0x7fff,0x8000,acc0
    195 
    196 	; Negative operands
    197 	set_fr_iimmed  	0xfffe,0xfffc,fr7		; multiply small numbers
    198 	set_fr_iimmed  	0xfffd,0xfffb,fr8
    199 	cmcpxrs      	fr7,fr8,acc0,cc5,0
    200 	test_accg_immed 	0xff,accg0
    201 	test_acc_immed 	-14,acc0
    202 
    203 	set_fr_iimmed  	0xffff,0xffff,fr7		; multiply by -1
    204 	set_fr_iimmed  	0xfffe,0xffff,fr8
    205 	cmcpxrs      	fr7,fr8,acc0,cc5,0
    206 	test_accg_immed 	0,accg0
    207 	test_acc_immed 	1,acc0
    208 
    209 	set_fr_iimmed	0x7fff,0x0000,fr7	; almost max positive result
    210 	set_fr_iimmed	0x7fff,0x8001,fr8
    211 	cmcpxrs      	fr7,fr8,acc0,cc5,0
    212 	test_accg_immed 	0,accg0
    213 	test_acc_immed 	0x3fff0001,acc0
    214 
    215 	set_fr_iimmed	0x8000,0x0000,fr7	; max positive result
    216 	set_fr_iimmed	0x8000,0x8000,fr8
    217 	cmcpxrs      	fr7,fr8,acc0,cc5,0
    218 	test_accg_immed 	0,accg0
    219 	test_acc_immed 	0x40000000,acc0
    220 
    221 	; Positive operands
    222 	set_accg_immed 	0x00000011,accg0
    223 	set_acc_immed 	0x11111111,acc0
    224 	set_fr_iimmed  	2,4,fr7		; multiply small numbers
    225 	set_fr_iimmed  	3,5,fr8
    226 	cmcpxrs      	fr7,fr8,acc0,cc0,0
    227 	test_accg_immed 	0x00000011,accg0
    228 	test_acc_immed 	0x11111111,acc0
    229 
    230 	set_fr_iimmed  	3,1,fr7		; multiply by 0
    231 	set_fr_iimmed  	2,0,fr8
    232 	cmcpxrs      	fr7,fr8,acc0,cc0,0
    233 	test_accg_immed 	0x00000011,accg0
    234 	test_acc_immed 	0x11111111,acc0
    235 
    236 	set_fr_iimmed  	2,1,fr7		; multiply by 1
    237 	set_fr_iimmed  	1,1,fr8
    238 	cmcpxrs      	fr7,fr8,acc0,cc0,0
    239 	test_accg_immed 	0x00000011,accg0
    240 	test_acc_immed 	0x11111111,acc0
    241 
    242 	set_fr_iimmed	0x3fff,2,fr7	; 15 bit result
    243 	set_fr_iimmed  	2,0x0007,fr8
    244 	cmcpxrs      	fr7,fr8,acc0,cc0,0
    245 	test_accg_immed 	0x00000011,accg0
    246 	test_acc_immed 	0x11111111,acc0
    247 
    248 	set_fr_iimmed	0x4000,2,fr7	; 16 bit result
    249 	set_fr_iimmed  	2,0x2000,fr8
    250 	cmcpxrs      	fr7,fr8,acc0,cc0,0
    251 	test_accg_immed 	0x00000011,accg0
    252 	test_acc_immed 	0x11111111,acc0
    253 
    254 	set_fr_iimmed	0x7fff,0x0000,fr7	; max positive result
    255 	set_fr_iimmed	0x7fff,0x7fff,fr8
    256 	cmcpxrs      	fr7,fr8,acc0,cc0,0
    257 	test_accg_immed 	0x00000011,accg0
    258 	test_acc_immed 	0x11111111,acc0
    259 
    260 	; Mixed operands
    261 	set_fr_iimmed  	2,0xfffd,fr7		; multiply small numbers
    262 	set_fr_iimmed  	0xfffd,1,fr8
    263 	cmcpxrs      	fr7,fr8,acc0,cc0,0
    264 	test_accg_immed 	0x00000011,accg0
    265 	test_acc_immed 	0x11111111,acc0
    266 
    267 	set_fr_iimmed  	0xfffe,2,fr7		; multiply by 1
    268 	set_fr_iimmed  	1,0xfffe,fr8
    269 	cmcpxrs      	fr7,fr8,acc0,cc4,0
    270 	test_accg_immed 	0x00000011,accg0
    271 	test_acc_immed 	0x11111111,acc0
    272 
    273 	set_fr_iimmed  	0xfffe,0,fr7		; multiply by 0
    274 	set_fr_iimmed  	1,0xfffe,fr8
    275 	cmcpxrs      	fr7,fr8,acc0,cc4,0
    276 	test_accg_immed 	0x00000011,accg0
    277 	test_acc_immed 	0x11111111,acc0
    278 
    279 	set_fr_iimmed  	0x2001,0xfffe,fr7	; 15 bit result
    280 	set_fr_iimmed  	0xfffe,0xfff9,fr8
    281 	cmcpxrs      	fr7,fr8,acc0,cc4,0
    282 	test_accg_immed 	0x00000011,accg0
    283 	test_acc_immed 	0x11111111,acc0
    284 
    285 	set_fr_iimmed	0x4000,0xfffe,fr7	; 16 bit result
    286 	set_fr_iimmed  	0xfffe,0x0003,fr8
    287 	cmcpxrs      	fr7,fr8,acc0,cc4,0
    288 	test_accg_immed 	0x00000011,accg0
    289 	test_acc_immed 	0x11111111,acc0
    290 
    291 	set_fr_iimmed	0x7fff,0x8000,fr7	; max negative result
    292 	set_fr_iimmed	0x8000,0x8000,fr8
    293 	cmcpxrs      	fr7,fr8,acc0,cc4,0
    294 	test_accg_immed 	0x00000011,accg0
    295 	test_acc_immed 	0x11111111,acc0
    296 
    297 	set_fr_iimmed	0x8000,0x7fff,fr7	; max positive result
    298 	set_fr_iimmed	0x8000,0x8000,fr8
    299 	cmcpxrs      	fr7,fr8,acc0,cc4,0
    300 	test_accg_immed 	0x00000011,accg0
    301 	test_acc_immed 	0x11111111,acc0
    302 
    303 	; Negative operands
    304 	set_fr_iimmed  	0xfffe,0xfffc,fr7		; multiply small numbers
    305 	set_fr_iimmed  	0xfffd,0xfffb,fr8
    306 	cmcpxrs      	fr7,fr8,acc0,cc4,0
    307 	test_accg_immed 	0x00000011,accg0
    308 	test_acc_immed 	0x11111111,acc0
    309 
    310 	set_fr_iimmed  	0xffff,0xffff,fr7		; multiply by -1
    311 	set_fr_iimmed  	0xfffe,0xffff,fr8
    312 	cmcpxrs      	fr7,fr8,acc0,cc4,0
    313 	test_accg_immed 	0x00000011,accg0
    314 	test_acc_immed 	0x11111111,acc0
    315 
    316 	set_fr_iimmed	0x7fff,0x0000,fr7	; almost max positive result
    317 	set_fr_iimmed	0x7fff,0x8001,fr8
    318 	cmcpxrs      	fr7,fr8,acc0,cc4,0
    319 	test_accg_immed 	0x00000011,accg0
    320 	test_acc_immed 	0x11111111,acc0
    321 
    322 	set_fr_iimmed	0x8000,0x0000,fr7	; max positive result
    323 	set_fr_iimmed	0x8000,0x8000,fr8
    324 	cmcpxrs      	fr7,fr8,acc0,cc4,0
    325 	test_accg_immed 	0x00000011,accg0
    326 	test_acc_immed 	0x11111111,acc0
    327 
    328 	; Positive operands
    329 	set_accg_immed 	0x00000011,accg0
    330 	set_acc_immed 	0x11111111,acc0
    331 	set_fr_iimmed  	2,4,fr7		; multiply small numbers
    332 	set_fr_iimmed  	3,5,fr8
    333 	cmcpxrs      	fr7,fr8,acc0,cc1,1
    334 	test_accg_immed 	0x00000011,accg0
    335 	test_acc_immed 	0x11111111,acc0
    336 
    337 	set_fr_iimmed  	3,1,fr7		; multiply by 0
    338 	set_fr_iimmed  	2,0,fr8
    339 	cmcpxrs      	fr7,fr8,acc0,cc1,1
    340 	test_accg_immed 	0x00000011,accg0
    341 	test_acc_immed 	0x11111111,acc0
    342 
    343 	set_fr_iimmed  	2,1,fr7		; multiply by 1
    344 	set_fr_iimmed  	1,1,fr8
    345 	cmcpxrs      	fr7,fr8,acc0,cc1,1
    346 	test_accg_immed 	0x00000011,accg0
    347 	test_acc_immed 	0x11111111,acc0
    348 
    349 	set_fr_iimmed	0x3fff,2,fr7	; 15 bit result
    350 	set_fr_iimmed  	2,0x0007,fr8
    351 	cmcpxrs      	fr7,fr8,acc0,cc1,1
    352 	test_accg_immed 	0x00000011,accg0
    353 	test_acc_immed 	0x11111111,acc0
    354 
    355 	set_fr_iimmed	0x4000,2,fr7	; 16 bit result
    356 	set_fr_iimmed  	2,0x2000,fr8
    357 	cmcpxrs      	fr7,fr8,acc0,cc1,1
    358 	test_accg_immed 	0x00000011,accg0
    359 	test_acc_immed 	0x11111111,acc0
    360 
    361 	set_fr_iimmed	0x7fff,0x0000,fr7	; max positive result
    362 	set_fr_iimmed	0x7fff,0x7fff,fr8
    363 	cmcpxrs      	fr7,fr8,acc0,cc1,1
    364 	test_accg_immed 	0x00000011,accg0
    365 	test_acc_immed 	0x11111111,acc0
    366 
    367 	; Mixed operands
    368 	set_fr_iimmed  	2,0xfffd,fr7		; multiply small numbers
    369 	set_fr_iimmed  	0xfffd,1,fr8
    370 	cmcpxrs      	fr7,fr8,acc0,cc1,1
    371 	test_accg_immed 	0x00000011,accg0
    372 	test_acc_immed 	0x11111111,acc0
    373 
    374 	set_fr_iimmed  	0xfffe,2,fr7		; multiply by 1
    375 	set_fr_iimmed  	1,0xfffe,fr8
    376 	cmcpxrs      	fr7,fr8,acc0,cc5,1
    377 	test_accg_immed 	0x00000011,accg0
    378 	test_acc_immed 	0x11111111,acc0
    379 
    380 	set_fr_iimmed  	0xfffe,0,fr7		; multiply by 0
    381 	set_fr_iimmed  	1,0xfffe,fr8
    382 	cmcpxrs      	fr7,fr8,acc0,cc5,1
    383 	test_accg_immed 	0x00000011,accg0
    384 	test_acc_immed 	0x11111111,acc0
    385 
    386 	set_fr_iimmed  	0x2001,0xfffe,fr7	; 15 bit result
    387 	set_fr_iimmed  	0xfffe,0xfff9,fr8
    388 	cmcpxrs      	fr7,fr8,acc0,cc5,1
    389 	test_accg_immed 	0x00000011,accg0
    390 	test_acc_immed 	0x11111111,acc0
    391 
    392 	set_fr_iimmed	0x4000,0xfffe,fr7	; 16 bit result
    393 	set_fr_iimmed  	0xfffe,0x0003,fr8
    394 	cmcpxrs      	fr7,fr8,acc0,cc5,1
    395 	test_accg_immed 	0x00000011,accg0
    396 	test_acc_immed 	0x11111111,acc0
    397 
    398 	set_fr_iimmed	0x7fff,0x8000,fr7	; max negative result
    399 	set_fr_iimmed	0x8000,0x8000,fr8
    400 	cmcpxrs      	fr7,fr8,acc0,cc5,1
    401 	test_accg_immed 	0x00000011,accg0
    402 	test_acc_immed 	0x11111111,acc0
    403 
    404 	set_fr_iimmed	0x8000,0x7fff,fr7	; max positive result
    405 	set_fr_iimmed	0x8000,0x8000,fr8
    406 	cmcpxrs      	fr7,fr8,acc0,cc5,1
    407 	test_accg_immed 	0x00000011,accg0
    408 	test_acc_immed 	0x11111111,acc0
    409 
    410 	; Negative operands
    411 	set_fr_iimmed  	0xfffe,0xfffc,fr7		; multiply small numbers
    412 	set_fr_iimmed  	0xfffd,0xfffb,fr8
    413 	cmcpxrs      	fr7,fr8,acc0,cc5,1
    414 	test_accg_immed 	0x00000011,accg0
    415 	test_acc_immed 	0x11111111,acc0
    416 
    417 	set_fr_iimmed  	0xffff,0xffff,fr7		; multiply by -1
    418 	set_fr_iimmed  	0xfffe,0xffff,fr8
    419 	cmcpxrs      	fr7,fr8,acc0,cc5,1
    420 	test_accg_immed 	0x00000011,accg0
    421 	test_acc_immed 	0x11111111,acc0
    422 
    423 	set_fr_iimmed	0x7fff,0x0000,fr7	; almost max positive result
    424 	set_fr_iimmed	0x7fff,0x8001,fr8
    425 	cmcpxrs      	fr7,fr8,acc0,cc5,1
    426 	test_accg_immed 	0x00000011,accg0
    427 	test_acc_immed 	0x11111111,acc0
    428 
    429 	set_fr_iimmed	0x8000,0x0000,fr7	; max positive result
    430 	set_fr_iimmed	0x8000,0x8000,fr8
    431 	cmcpxrs      	fr7,fr8,acc0,cc5,1
    432 	test_accg_immed 	0x00000011,accg0
    433 	test_acc_immed 	0x11111111,acc0
    434 
    435 	; Positive operands
    436 	set_accg_immed 	0x00000011,accg0
    437 	set_acc_immed 	0x11111111,acc0
    438 	set_fr_iimmed  	2,4,fr7		; multiply small numbers
    439 	set_fr_iimmed  	3,5,fr8
    440 	cmcpxrs      	fr7,fr8,acc0,cc2,1
    441 	test_accg_immed 	0x00000011,accg0
    442 	test_acc_immed 	0x11111111,acc0
    443 
    444 	set_fr_iimmed  	3,1,fr7		; multiply by 0
    445 	set_fr_iimmed  	2,0,fr8
    446 	cmcpxrs      	fr7,fr8,acc0,cc2,1
    447 	test_accg_immed 	0x00000011,accg0
    448 	test_acc_immed 	0x11111111,acc0
    449 
    450 	set_fr_iimmed  	2,1,fr7		; multiply by 1
    451 	set_fr_iimmed  	1,1,fr8
    452 	cmcpxrs      	fr7,fr8,acc0,cc2,1
    453 	test_accg_immed 	0x00000011,accg0
    454 	test_acc_immed 	0x11111111,acc0
    455 
    456 	set_fr_iimmed	0x3fff,2,fr7	; 15 bit result
    457 	set_fr_iimmed  	2,0x0007,fr8
    458 	cmcpxrs      	fr7,fr8,acc0,cc2,1
    459 	test_accg_immed 	0x00000011,accg0
    460 	test_acc_immed 	0x11111111,acc0
    461 
    462 	set_fr_iimmed	0x4000,2,fr7	; 16 bit result
    463 	set_fr_iimmed  	2,0x2000,fr8
    464 	cmcpxrs      	fr7,fr8,acc0,cc2,1
    465 	test_accg_immed 	0x00000011,accg0
    466 	test_acc_immed 	0x11111111,acc0
    467 
    468 	set_fr_iimmed	0x7fff,0x0000,fr7	; max positive result
    469 	set_fr_iimmed	0x7fff,0x7fff,fr8
    470 	cmcpxrs      	fr7,fr8,acc0,cc2,1
    471 	test_accg_immed 	0x00000011,accg0
    472 	test_acc_immed 	0x11111111,acc0
    473 
    474 	; Mixed operands
    475 	set_fr_iimmed  	2,0xfffd,fr7		; multiply small numbers
    476 	set_fr_iimmed  	0xfffd,1,fr8
    477 	cmcpxrs      	fr7,fr8,acc0,cc2,1
    478 	test_accg_immed 	0x00000011,accg0
    479 	test_acc_immed 	0x11111111,acc0
    480 
    481 	set_fr_iimmed  	0xfffe,2,fr7		; multiply by 1
    482 	set_fr_iimmed  	1,0xfffe,fr8
    483 	cmcpxrs      	fr7,fr8,acc0,cc6,1
    484 	test_accg_immed 	0x00000011,accg0
    485 	test_acc_immed 	0x11111111,acc0
    486 
    487 	set_fr_iimmed  	0xfffe,0,fr7		; multiply by 0
    488 	set_fr_iimmed  	1,0xfffe,fr8
    489 	cmcpxrs      	fr7,fr8,acc0,cc6,1
    490 	test_accg_immed 	0x00000011,accg0
    491 	test_acc_immed 	0x11111111,acc0
    492 
    493 	set_fr_iimmed  	0x2001,0xfffe,fr7	; 15 bit result
    494 	set_fr_iimmed  	0xfffe,0xfff9,fr8
    495 	cmcpxrs      	fr7,fr8,acc0,cc6,1
    496 	test_accg_immed 	0x00000011,accg0
    497 	test_acc_immed 	0x11111111,acc0
    498 
    499 	set_fr_iimmed	0x4000,0xfffe,fr7	; 16 bit result
    500 	set_fr_iimmed  	0xfffe,0x0003,fr8
    501 	cmcpxrs      	fr7,fr8,acc0,cc6,1
    502 	test_accg_immed 	0x00000011,accg0
    503 	test_acc_immed 	0x11111111,acc0
    504 
    505 	set_fr_iimmed	0x7fff,0x8000,fr7	; max negative result
    506 	set_fr_iimmed	0x8000,0x8000,fr8
    507 	cmcpxrs      	fr7,fr8,acc0,cc6,1
    508 	test_accg_immed 	0x00000011,accg0
    509 	test_acc_immed 	0x11111111,acc0
    510 
    511 	set_fr_iimmed	0x8000,0x7fff,fr7	; max positive result
    512 	set_fr_iimmed	0x8000,0x8000,fr8
    513 	cmcpxrs      	fr7,fr8,acc0,cc6,1
    514 	test_accg_immed 	0x00000011,accg0
    515 	test_acc_immed 	0x11111111,acc0
    516 
    517 	; Negative operands
    518 	set_fr_iimmed  	0xfffe,0xfffc,fr7		; multiply small numbers
    519 	set_fr_iimmed  	0xfffd,0xfffb,fr8
    520 	cmcpxrs      	fr7,fr8,acc0,cc6,1
    521 	test_accg_immed 	0x00000011,accg0
    522 	test_acc_immed 	0x11111111,acc0
    523 
    524 	set_fr_iimmed  	0xffff,0xffff,fr7		; multiply by -1
    525 	set_fr_iimmed  	0xfffe,0xffff,fr8
    526 	cmcpxrs      	fr7,fr8,acc0,cc6,1
    527 	test_accg_immed 	0x00000011,accg0
    528 	test_acc_immed 	0x11111111,acc0
    529 
    530 	set_fr_iimmed	0x7fff,0x0000,fr7	; almost max positive result
    531 	set_fr_iimmed	0x7fff,0x8001,fr8
    532 	cmcpxrs      	fr7,fr8,acc0,cc6,1
    533 	test_accg_immed 	0x00000011,accg0
    534 	test_acc_immed 	0x11111111,acc0
    535 
    536 	set_fr_iimmed	0x8000,0x0000,fr7	; max positive result
    537 	set_fr_iimmed	0x8000,0x8000,fr8
    538 	cmcpxrs      	fr7,fr8,acc0,cc6,1
    539 	test_accg_immed 	0x00000011,accg0
    540 	test_acc_immed 	0x11111111,acc0
    541 ;
    542 	; Positive operands
    543 	set_accg_immed 	0x00000011,accg0
    544 	set_acc_immed 	0x11111111,acc0
    545 	set_fr_iimmed  	2,4,fr7		; multiply small numbers
    546 	set_fr_iimmed  	3,5,fr8
    547 	cmcpxrs      	fr7,fr8,acc0,cc3,1
    548 	test_accg_immed 	0x00000011,accg0
    549 	test_acc_immed 	0x11111111,acc0
    550 
    551 	set_fr_iimmed  	3,1,fr7		; multiply by 0
    552 	set_fr_iimmed  	2,0,fr8
    553 	cmcpxrs      	fr7,fr8,acc0,cc3,1
    554 	test_accg_immed 	0x00000011,accg0
    555 	test_acc_immed 	0x11111111,acc0
    556 
    557 	set_fr_iimmed  	2,1,fr7		; multiply by 1
    558 	set_fr_iimmed  	1,1,fr8
    559 	cmcpxrs      	fr7,fr8,acc0,cc3,1
    560 	test_accg_immed 	0x00000011,accg0
    561 	test_acc_immed 	0x11111111,acc0
    562 
    563 	set_fr_iimmed	0x3fff,2,fr7	; 15 bit result
    564 	set_fr_iimmed  	2,0x0007,fr8
    565 	cmcpxrs      	fr7,fr8,acc0,cc3,1
    566 	test_accg_immed 	0x00000011,accg0
    567 	test_acc_immed 	0x11111111,acc0
    568 
    569 	set_fr_iimmed	0x4000,2,fr7	; 16 bit result
    570 	set_fr_iimmed  	2,0x2000,fr8
    571 	cmcpxrs      	fr7,fr8,acc0,cc3,1
    572 	test_accg_immed 	0x00000011,accg0
    573 	test_acc_immed 	0x11111111,acc0
    574 
    575 	set_fr_iimmed	0x7fff,0x0000,fr7	; max positive result
    576 	set_fr_iimmed	0x7fff,0x7fff,fr8
    577 	cmcpxrs      	fr7,fr8,acc0,cc3,1
    578 	test_accg_immed 	0x00000011,accg0
    579 	test_acc_immed 	0x11111111,acc0
    580 
    581 	; Mixed operands
    582 	set_fr_iimmed  	2,0xfffd,fr7		; multiply small numbers
    583 	set_fr_iimmed  	0xfffd,1,fr8
    584 	cmcpxrs      	fr7,fr8,acc0,cc3,1
    585 	test_accg_immed 	0x00000011,accg0
    586 	test_acc_immed 	0x11111111,acc0
    587 
    588 	set_fr_iimmed  	0xfffe,2,fr7		; multiply by 1
    589 	set_fr_iimmed  	1,0xfffe,fr8
    590 	cmcpxrs      	fr7,fr8,acc0,cc7,1
    591 	test_accg_immed 	0x00000011,accg0
    592 	test_acc_immed 	0x11111111,acc0
    593 
    594 	set_fr_iimmed  	0xfffe,0,fr7		; multiply by 0
    595 	set_fr_iimmed  	1,0xfffe,fr8
    596 	cmcpxrs      	fr7,fr8,acc0,cc7,1
    597 	test_accg_immed 	0x00000011,accg0
    598 	test_acc_immed 	0x11111111,acc0
    599 
    600 	set_fr_iimmed  	0x2001,0xfffe,fr7	; 15 bit result
    601 	set_fr_iimmed  	0xfffe,0xfff9,fr8
    602 	cmcpxrs      	fr7,fr8,acc0,cc7,1
    603 	test_accg_immed 	0x00000011,accg0
    604 	test_acc_immed 	0x11111111,acc0
    605 
    606 	set_fr_iimmed	0x4000,0xfffe,fr7	; 16 bit result
    607 	set_fr_iimmed  	0xfffe,0x0003,fr8
    608 	cmcpxrs      	fr7,fr8,acc0,cc7,1
    609 	test_accg_immed 	0x00000011,accg0
    610 	test_acc_immed 	0x11111111,acc0
    611 
    612 	set_fr_iimmed	0x7fff,0x8000,fr7	; max negative result
    613 	set_fr_iimmed	0x8000,0x8000,fr8
    614 	cmcpxrs      	fr7,fr8,acc0,cc7,1
    615 	test_accg_immed 	0x00000011,accg0
    616 	test_acc_immed 	0x11111111,acc0
    617 
    618 	set_fr_iimmed	0x8000,0x7fff,fr7	; max positive result
    619 	set_fr_iimmed	0x8000,0x8000,fr8
    620 	cmcpxrs      	fr7,fr8,acc0,cc7,1
    621 	test_accg_immed 	0x00000011,accg0
    622 	test_acc_immed 	0x11111111,acc0
    623 
    624 	; Negative operands
    625 	set_fr_iimmed  	0xfffe,0xfffc,fr7		; multiply small numbers
    626 	set_fr_iimmed  	0xfffd,0xfffb,fr8
    627 	cmcpxrs      	fr7,fr8,acc0,cc7,1
    628 	test_accg_immed 	0x00000011,accg0
    629 	test_acc_immed 	0x11111111,acc0
    630 
    631 	set_fr_iimmed  	0xffff,0xffff,fr7		; multiply by -1
    632 	set_fr_iimmed  	0xfffe,0xffff,fr8
    633 	cmcpxrs      	fr7,fr8,acc0,cc7,1
    634 	test_accg_immed 	0x00000011,accg0
    635 	test_acc_immed 	0x11111111,acc0
    636 
    637 	set_fr_iimmed	0x7fff,0x0000,fr7	; almost max positive result
    638 	set_fr_iimmed	0x7fff,0x8001,fr8
    639 	cmcpxrs      	fr7,fr8,acc0,cc7,1
    640 	test_accg_immed 	0x00000011,accg0
    641 	test_acc_immed 	0x11111111,acc0
    642 
    643 	set_fr_iimmed	0x8000,0x0000,fr7	; max positive result
    644 	set_fr_iimmed	0x8000,0x8000,fr8
    645 	cmcpxrs      	fr7,fr8,acc0,cc7,1
    646 	test_accg_immed 	0x00000011,accg0
    647 	test_acc_immed 	0x11111111,acc0
    648 
    649 	pass
    650