1*4b169a6bSchristos# frv testcase for mqcpxrs $GRi,$GRj,$ACCk 2*4b169a6bSchristos# mach: all 3*4b169a6bSchristos 4*4b169a6bSchristos .include "testutils.inc" 5*4b169a6bSchristos 6*4b169a6bSchristos start 7*4b169a6bSchristos 8*4b169a6bSchristos .global mqcpxrs 9*4b169a6bSchristosmqcpxrs: 10*4b169a6bSchristos ; Positive operands 11*4b169a6bSchristos set_fr_iimmed 2,4,fr8 ; multiply small numbers 12*4b169a6bSchristos set_fr_iimmed 3,5,fr10 13*4b169a6bSchristos set_fr_iimmed 3,1,fr9 ; multiply by 0 14*4b169a6bSchristos set_fr_iimmed 2,0,fr11 15*4b169a6bSchristos mqcpxrs fr8,fr10,acc0 16*4b169a6bSchristos test_accg_immed 0xff,accg0 17*4b169a6bSchristos test_acc_immed -14,acc0 18*4b169a6bSchristos test_accg_immed 0,accg1 19*4b169a6bSchristos test_acc_immed 6,acc1 20*4b169a6bSchristos 21*4b169a6bSchristos set_fr_iimmed 2,1,fr8 ; multiply by 1 22*4b169a6bSchristos set_fr_iimmed 1,1,fr10 23*4b169a6bSchristos set_fr_iimmed 0x3fff,2,fr9 ; 15 bit result 24*4b169a6bSchristos set_fr_iimmed 2,0x0007,fr11 25*4b169a6bSchristos mqcpxrs fr8,fr10,acc0 26*4b169a6bSchristos test_accg_immed 0,accg0 27*4b169a6bSchristos test_acc_immed 1,acc0 28*4b169a6bSchristos test_accg_immed 0,accg1 29*4b169a6bSchristos test_acc_limmed 0,0x7ff0,acc1 30*4b169a6bSchristos 31*4b169a6bSchristos set_fr_iimmed 0x4000,2,fr8 ; 16 bit result 32*4b169a6bSchristos set_fr_iimmed 2,0x2000,fr10 33*4b169a6bSchristos set_fr_iimmed 0x7fff,0x0000,fr9 ; max positive result 34*4b169a6bSchristos set_fr_iimmed 0x7fff,0x7fff,fr11 35*4b169a6bSchristos mqcpxrs fr8,fr10,acc0 36*4b169a6bSchristos test_accg_immed 0,accg0 37*4b169a6bSchristos test_acc_limmed 0x0000,0x4000,acc0 38*4b169a6bSchristos test_accg_immed 0,accg1 39*4b169a6bSchristos test_acc_limmed 0x3fff,0x0001,acc1 40*4b169a6bSchristos 41*4b169a6bSchristos ; Mixed operands 42*4b169a6bSchristos set_fr_iimmed 2,0xfffd,fr8 ; multiply small numbers 43*4b169a6bSchristos set_fr_iimmed 0xfffd,1,fr10 44*4b169a6bSchristos set_fr_iimmed 0xfffe,2,fr9 ; multiply by 1 45*4b169a6bSchristos set_fr_iimmed 1,0xfffe,fr11 46*4b169a6bSchristos mqcpxrs fr8,fr10,acc0 47*4b169a6bSchristos test_accg_immed 0xff,accg0 48*4b169a6bSchristos test_acc_immed -3,acc0 49*4b169a6bSchristos test_accg_immed 0,accg1 50*4b169a6bSchristos test_acc_immed 2,acc1 51*4b169a6bSchristos 52*4b169a6bSchristos set_fr_iimmed 0xfffe,0,fr8 ; multiply by 0 53*4b169a6bSchristos set_fr_iimmed 1,0xfffe,fr10 54*4b169a6bSchristos set_fr_iimmed 0x2001,0xfffe,fr9 ; 15 bit result 55*4b169a6bSchristos set_fr_iimmed 0xfffe,0xfff9,fr11 56*4b169a6bSchristos mqcpxrs fr8,fr10,acc0 57*4b169a6bSchristos test_accg_immed 0xff,accg0 58*4b169a6bSchristos test_acc_immed -2,acc0 59*4b169a6bSchristos test_accg_immed 0xff,accg1 60*4b169a6bSchristos test_acc_limmed 0xffff,0xbff0,acc1 61*4b169a6bSchristos 62*4b169a6bSchristos set_fr_iimmed 0x4000,0xfffe,fr8 ; 16 bit result 63*4b169a6bSchristos set_fr_iimmed 0xfffe,0x0003,fr10 64*4b169a6bSchristos set_fr_iimmed 0x7fff,0x8000,fr9 ; max negative result 65*4b169a6bSchristos set_fr_iimmed 0x8000,0x8000,fr11 66*4b169a6bSchristos mqcpxrs fr8,fr10,acc0 67*4b169a6bSchristos test_accg_immed 0xff,accg0 68*4b169a6bSchristos test_acc_limmed 0xffff,0x8006,acc0 69*4b169a6bSchristos test_accg_immed 0xff,accg1 70*4b169a6bSchristos test_acc_limmed 0x8000,0x8000,acc1 71*4b169a6bSchristos 72*4b169a6bSchristos ; Negative operands 73*4b169a6bSchristos set_fr_iimmed 0x8000,0x7fff,fr8 ; max positive result 74*4b169a6bSchristos set_fr_iimmed 0x8000,0x8000,fr10 75*4b169a6bSchristos set_fr_iimmed 0xfffe,0xfffc,fr9 ; multiply small numbers 76*4b169a6bSchristos set_fr_iimmed 0xfffd,0xfffb,fr11 77*4b169a6bSchristos mqcpxrs fr8,fr10,acc0 78*4b169a6bSchristos test_accg_immed 0,accg0 79*4b169a6bSchristos test_acc_limmed 0x7fff,0x8000,acc0 80*4b169a6bSchristos test_accg_immed 0xff,accg1 81*4b169a6bSchristos test_acc_immed -14,acc1 82*4b169a6bSchristos 83*4b169a6bSchristos set_fr_iimmed 0xffff,0xffff,fr8 ; multiply by -1 84*4b169a6bSchristos set_fr_iimmed 0xfffe,0xffff,fr10 85*4b169a6bSchristos set_fr_iimmed 0x7fff,0x0000,fr9 ; almost max positive result 86*4b169a6bSchristos set_fr_iimmed 0x7fff,0x8001,fr11 87*4b169a6bSchristos mqcpxrs fr8,fr10,acc0 88*4b169a6bSchristos test_accg_immed 0,accg0 89*4b169a6bSchristos test_acc_immed 1,acc0 90*4b169a6bSchristos test_accg_immed 0,accg1 91*4b169a6bSchristos test_acc_immed 0x3fff0001,acc1 92*4b169a6bSchristos 93*4b169a6bSchristos set_fr_iimmed 0x8000,0x0000,fr8 ; max positive result 94*4b169a6bSchristos set_fr_iimmed 0x8000,0x8000,fr10 95*4b169a6bSchristos set_fr_iimmed 0x8000,0x0000,fr9 ; max positive result 96*4b169a6bSchristos set_fr_iimmed 0x8000,0x8000,fr11 97*4b169a6bSchristos mqcpxrs fr8,fr10,acc0 98*4b169a6bSchristos test_accg_immed 0,accg0 99*4b169a6bSchristos test_acc_immed 0x40000000,acc0 100*4b169a6bSchristos test_accg_immed 0,accg1 101*4b169a6bSchristos test_acc_immed 0x40000000,acc1 102*4b169a6bSchristos 103*4b169a6bSchristos pass 104