1*4b169a6bSchristos# frv testcase for umulicc $GRi,$GRj,$GRk 2*4b169a6bSchristos# mach: all 3*4b169a6bSchristos 4*4b169a6bSchristos .include "testutils.inc" 5*4b169a6bSchristos 6*4b169a6bSchristos start 7*4b169a6bSchristos 8*4b169a6bSchristos .global umulicc 9*4b169a6bSchristosumulicc: 10*4b169a6bSchristos set_gr_immed 3,gr7 ; multiply small numbers 11*4b169a6bSchristos set_icc 0x0f,0 ; Set mask opposite of expected 12*4b169a6bSchristos umulicc gr7,2,gr8,icc0 13*4b169a6bSchristos test_icc 0 0 1 1 icc0 14*4b169a6bSchristos test_gr_immed 0,gr8 15*4b169a6bSchristos test_gr_immed 6,gr9 16*4b169a6bSchristos 17*4b169a6bSchristos set_gr_immed 1,gr7 ; multiply by 1 18*4b169a6bSchristos set_icc 0x0e,0 ; Set mask opposite of expected 19*4b169a6bSchristos umulicc gr7,2,gr8,icc0 20*4b169a6bSchristos test_icc 0 0 1 0 icc0 21*4b169a6bSchristos test_gr_immed 0,gr8 22*4b169a6bSchristos test_gr_immed 2,gr9 23*4b169a6bSchristos 24*4b169a6bSchristos set_gr_immed 2,gr7 ; multiply by 1 25*4b169a6bSchristos set_icc 0x0f,0 ; Set mask opposite of expected 26*4b169a6bSchristos umulicc gr7,1,gr8,icc0 27*4b169a6bSchristos test_icc 0 0 1 1 icc0 28*4b169a6bSchristos test_gr_immed 0,gr8 29*4b169a6bSchristos test_gr_immed 2,gr9 30*4b169a6bSchristos 31*4b169a6bSchristos set_gr_immed 0,gr7 ; multiply by 0 32*4b169a6bSchristos set_icc 0x0b,0 ; Set mask opposite of expected 33*4b169a6bSchristos umulicc gr7,2,gr8,icc0 34*4b169a6bSchristos test_icc 0 1 1 1 icc0 35*4b169a6bSchristos test_gr_immed 0,gr8 36*4b169a6bSchristos test_gr_immed 0,gr9 37*4b169a6bSchristos 38*4b169a6bSchristos set_gr_immed 2,gr7 ; multiply by 0 39*4b169a6bSchristos set_icc 0x0a,0 ; Set mask opposite of expected 40*4b169a6bSchristos umulicc gr7,0,gr8,icc0 41*4b169a6bSchristos test_icc 0 1 1 0 icc0 42*4b169a6bSchristos test_gr_immed 0,gr8 43*4b169a6bSchristos test_gr_immed 0,gr9 44*4b169a6bSchristos 45*4b169a6bSchristos set_gr_limmed 0x3fff,0xffff,gr7 ; 31 bit result 46*4b169a6bSchristos set_icc 0x0f,0 ; Set mask opposite of expected 47*4b169a6bSchristos umulicc gr7,2,gr8,icc0 48*4b169a6bSchristos test_icc 0 0 1 1 icc0 49*4b169a6bSchristos test_gr_immed 0,gr8 50*4b169a6bSchristos test_gr_limmed 0x7fff,0xfffe,gr9 51*4b169a6bSchristos 52*4b169a6bSchristos set_gr_limmed 0x4000,0x0000,gr7 ; 32 bit result 53*4b169a6bSchristos set_icc 0x0e,0 ; Set mask opposite of expected 54*4b169a6bSchristos umulicc gr7,2,gr8,icc0 55*4b169a6bSchristos test_icc 0 0 1 0 icc0 56*4b169a6bSchristos test_gr_immed 0,gr8 57*4b169a6bSchristos test_gr_limmed 0x8000,0x0000,gr9 58*4b169a6bSchristos 59*4b169a6bSchristos set_gr_limmed 0x8000,0x0000,gr7 ; 33 bit result 60*4b169a6bSchristos set_icc 0x09,0 ; Set mask opposite of expected 61*4b169a6bSchristos umulicc gr7,2,gr8,icc0 62*4b169a6bSchristos test_icc 0 0 0 1 icc0 63*4b169a6bSchristos test_gr_immed 1,gr8 64*4b169a6bSchristos test_gr_immed 0x00000000,gr9 65*4b169a6bSchristos 66*4b169a6bSchristos set_gr_limmed 0x7fff,0xffff,gr7 ; max positive result 67*4b169a6bSchristos set_icc 0x0d,0 ; Set mask opposite of expected 68*4b169a6bSchristos umulicc gr7,0x1ff,gr8,icc0 69*4b169a6bSchristos test_icc 0 0 0 1 icc0 70*4b169a6bSchristos test_gr_immed 0xff,gr8 71*4b169a6bSchristos test_gr_limmed 0x7fff,0xfe01,gr9 72*4b169a6bSchristos 73*4b169a6bSchristos set_gr_limmed 0x8000,0x0000,gr7 ; max positive result 74*4b169a6bSchristos set_icc 0x09,0 ; Set mask opposite of expected 75*4b169a6bSchristos umulicc gr7,-512,gr8,icc0 76*4b169a6bSchristos test_icc 0 0 0 1 icc0 77*4b169a6bSchristos test_gr_limmed 0x7fff,0xff00,gr8 78*4b169a6bSchristos test_gr_limmed 0x0000,0x0000,gr9 79*4b169a6bSchristos 80*4b169a6bSchristos set_gr_limmed 0xffff,0xffff,gr7 ; max positive result 81*4b169a6bSchristos set_icc 0x05,0 ; Set mask opposite of expected 82*4b169a6bSchristos umulicc gr7,-1,gr8,icc0 83*4b169a6bSchristos test_icc 1 0 0 1 icc0 84*4b169a6bSchristos test_gr_limmed 0xffff,0xfffe,gr8 85*4b169a6bSchristos test_gr_immed 1,gr9 86*4b169a6bSchristos 87*4b169a6bSchristos pass 88