1*6ca2c52aSchristos# frv testcase for csra $GRi,$GRj,$GRk,$CCi,$cond 2*6ca2c52aSchristos# mach: all 3*6ca2c52aSchristos 4*6ca2c52aSchristos .include "testutils.inc" 5*6ca2c52aSchristos 6*6ca2c52aSchristos start 7*6ca2c52aSchristos 8*6ca2c52aSchristos .global csra 9*6ca2c52aSchristoscsra: 10*6ca2c52aSchristos set_spr_immed 0x1b1b,cccr 11*6ca2c52aSchristos 12*6ca2c52aSchristos set_gr_limmed 0xdead,0xbee0,gr7 ; Shift by 0 13*6ca2c52aSchristos set_gr_limmed 0x8000,0x0000,gr8 14*6ca2c52aSchristos set_icc 0x05,0 ; Set mask opposite of expected 15*6ca2c52aSchristos csra gr8,gr7,gr8,cc0,1 16*6ca2c52aSchristos test_icc 0 1 0 1 icc0 17*6ca2c52aSchristos test_gr_limmed 0x8000,0x0000,gr8 18*6ca2c52aSchristos 19*6ca2c52aSchristos set_gr_limmed 0xdead,0xbee1,gr7 ; Shift by 1 20*6ca2c52aSchristos set_gr_limmed 0x8000,0x0000,gr8 21*6ca2c52aSchristos set_icc 0x0f,0 ; Set mask opposite of expected 22*6ca2c52aSchristos csra gr8,gr7,gr8,cc0,1 23*6ca2c52aSchristos test_icc 1 1 1 1 icc0 24*6ca2c52aSchristos test_gr_limmed 0xc000,0x0000,gr8 25*6ca2c52aSchristos 26*6ca2c52aSchristos set_gr_limmed 0xdead,0xbeff,gr7 ; Shift by 31 27*6ca2c52aSchristos set_gr_limmed 0x8000,0x0000,gr8 28*6ca2c52aSchristos set_icc 0x0f,0 ; Set mask opposite of expected 29*6ca2c52aSchristos csra gr8,gr7,gr8,cc4,1 30*6ca2c52aSchristos test_icc 1 1 1 1 icc0 31*6ca2c52aSchristos test_gr_immed -1,gr8 32*6ca2c52aSchristos 33*6ca2c52aSchristos set_gr_limmed 0xdead,0xbeff,gr7 ; clear register 34*6ca2c52aSchristos set_gr_limmed 0x4000,0x0000,gr8 35*6ca2c52aSchristos set_icc 0x0a,0 ; Set mask opposite of expected 36*6ca2c52aSchristos csra gr8,gr7,gr8,cc4,1 37*6ca2c52aSchristos test_icc 1 0 1 0 icc0 38*6ca2c52aSchristos test_gr_immed 0x00000000,gr8 39*6ca2c52aSchristos 40*6ca2c52aSchristos set_gr_limmed 0xdead,0xbee0,gr7 ; Shift by 0 41*6ca2c52aSchristos set_gr_limmed 0x8000,0x0000,gr8 42*6ca2c52aSchristos set_icc 0x05,0 ; Set mask opposite of expected 43*6ca2c52aSchristos csra gr8,gr7,gr8,cc0,0 44*6ca2c52aSchristos test_icc 0 1 0 1 icc0 45*6ca2c52aSchristos test_gr_limmed 0x8000,0x0000,gr8 46*6ca2c52aSchristos 47*6ca2c52aSchristos set_gr_limmed 0xdead,0xbee1,gr7 ; Shift by 1 48*6ca2c52aSchristos set_gr_limmed 0x8000,0x0000,gr8 49*6ca2c52aSchristos set_icc 0x0f,0 ; Set mask opposite of expected 50*6ca2c52aSchristos csra gr8,gr7,gr8,cc0,0 51*6ca2c52aSchristos test_icc 1 1 1 1 icc0 52*6ca2c52aSchristos test_gr_limmed 0x8000,0x0000,gr8 53*6ca2c52aSchristos 54*6ca2c52aSchristos set_gr_limmed 0xdead,0xbeff,gr7 ; Shift by 31 55*6ca2c52aSchristos set_gr_limmed 0x8000,0x0000,gr8 56*6ca2c52aSchristos set_icc 0x0f,0 ; Set mask opposite of expected 57*6ca2c52aSchristos csra gr8,gr7,gr8,cc4,0 58*6ca2c52aSchristos test_icc 1 1 1 1 icc0 59*6ca2c52aSchristos test_gr_limmed 0x8000,0x0000,gr8 60*6ca2c52aSchristos 61*6ca2c52aSchristos set_gr_limmed 0xdead,0xbeff,gr7 ; clear register 62*6ca2c52aSchristos set_gr_limmed 0x4000,0x0000,gr8 63*6ca2c52aSchristos set_icc 0x0a,0 ; Set mask opposite of expected 64*6ca2c52aSchristos csra gr8,gr7,gr8,cc4,0 65*6ca2c52aSchristos test_icc 1 0 1 0 icc0 66*6ca2c52aSchristos test_gr_limmed 0x4000,0x0000,gr8 67*6ca2c52aSchristos 68*6ca2c52aSchristos set_gr_limmed 0xdead,0xbee0,gr7 ; Shift by 0 69*6ca2c52aSchristos set_gr_limmed 0x8000,0x0000,gr8 70*6ca2c52aSchristos set_icc 0x05,1 ; Set mask opposite of expected 71*6ca2c52aSchristos csra gr8,gr7,gr8,cc1,0 72*6ca2c52aSchristos test_icc 0 1 0 1 icc1 73*6ca2c52aSchristos test_gr_limmed 0x8000,0x0000,gr8 74*6ca2c52aSchristos 75*6ca2c52aSchristos set_gr_limmed 0xdead,0xbee1,gr7 ; Shift by 1 76*6ca2c52aSchristos set_gr_limmed 0x8000,0x0000,gr8 77*6ca2c52aSchristos set_icc 0x0f,1 ; Set mask opposite of expected 78*6ca2c52aSchristos csra gr8,gr7,gr8,cc1,0 79*6ca2c52aSchristos test_icc 1 1 1 1 icc1 80*6ca2c52aSchristos test_gr_limmed 0xc000,0x0000,gr8 81*6ca2c52aSchristos 82*6ca2c52aSchristos set_gr_limmed 0xdead,0xbeff,gr7 ; Shift by 31 83*6ca2c52aSchristos set_gr_limmed 0x8000,0x0000,gr8 84*6ca2c52aSchristos set_icc 0x0f,1 ; Set mask opposite of expected 85*6ca2c52aSchristos csra gr8,gr7,gr8,cc5,0 86*6ca2c52aSchristos test_icc 1 1 1 1 icc1 87*6ca2c52aSchristos test_gr_immed -1,gr8 88*6ca2c52aSchristos 89*6ca2c52aSchristos set_gr_limmed 0xdead,0xbeff,gr7 ; clear register 90*6ca2c52aSchristos set_gr_limmed 0x4000,0x0000,gr8 91*6ca2c52aSchristos set_icc 0x0a,1 ; Set mask opposite of expected 92*6ca2c52aSchristos csra gr8,gr7,gr8,cc5,0 93*6ca2c52aSchristos test_icc 1 0 1 0 icc1 94*6ca2c52aSchristos test_gr_immed 0x00000000,gr8 95*6ca2c52aSchristos 96*6ca2c52aSchristos set_gr_limmed 0xdead,0xbee0,gr7 ; Shift by 0 97*6ca2c52aSchristos set_gr_limmed 0x8000,0x0000,gr8 98*6ca2c52aSchristos set_icc 0x05,1 ; Set mask opposite of expected 99*6ca2c52aSchristos csra gr8,gr7,gr8,cc1,1 100*6ca2c52aSchristos test_icc 0 1 0 1 icc1 101*6ca2c52aSchristos test_gr_limmed 0x8000,0x0000,gr8 102*6ca2c52aSchristos 103*6ca2c52aSchristos set_gr_limmed 0xdead,0xbee1,gr7 ; Shift by 1 104*6ca2c52aSchristos set_gr_limmed 0x8000,0x0000,gr8 105*6ca2c52aSchristos set_icc 0x0f,1 ; Set mask opposite of expected 106*6ca2c52aSchristos csra gr8,gr7,gr8,cc1,1 107*6ca2c52aSchristos test_icc 1 1 1 1 icc1 108*6ca2c52aSchristos test_gr_limmed 0x8000,0x0000,gr8 109*6ca2c52aSchristos 110*6ca2c52aSchristos set_gr_limmed 0xdead,0xbeff,gr7 ; Shift by 31 111*6ca2c52aSchristos set_gr_limmed 0x8000,0x0000,gr8 112*6ca2c52aSchristos set_icc 0x0f,1 ; Set mask opposite of expected 113*6ca2c52aSchristos csra gr8,gr7,gr8,cc5,1 114*6ca2c52aSchristos test_icc 1 1 1 1 icc1 115*6ca2c52aSchristos test_gr_limmed 0x8000,0x0000,gr8 116*6ca2c52aSchristos 117*6ca2c52aSchristos set_gr_limmed 0xdead,0xbeff,gr7 ; clear register 118*6ca2c52aSchristos set_gr_limmed 0x4000,0x0000,gr8 119*6ca2c52aSchristos set_icc 0x0a,1 ; Set mask opposite of expected 120*6ca2c52aSchristos csra gr8,gr7,gr8,cc5,1 121*6ca2c52aSchristos test_icc 1 0 1 0 icc1 122*6ca2c52aSchristos test_gr_limmed 0x4000,0x0000,gr8 123*6ca2c52aSchristos 124*6ca2c52aSchristos set_gr_limmed 0xdead,0xbee0,gr7 ; Shift by 0 125*6ca2c52aSchristos set_gr_limmed 0x8000,0x0000,gr8 126*6ca2c52aSchristos set_icc 0x05,2 ; Set mask opposite of expected 127*6ca2c52aSchristos csra gr8,gr7,gr8,cc2,0 128*6ca2c52aSchristos test_icc 0 1 0 1 icc2 129*6ca2c52aSchristos test_gr_limmed 0x8000,0x0000,gr8 130*6ca2c52aSchristos 131*6ca2c52aSchristos set_gr_limmed 0xdead,0xbee1,gr7 ; Shift by 1 132*6ca2c52aSchristos set_gr_limmed 0x8000,0x0000,gr8 133*6ca2c52aSchristos set_icc 0x0f,2 ; Set mask opposite of expected 134*6ca2c52aSchristos csra gr8,gr7,gr8,cc2,0 135*6ca2c52aSchristos test_icc 1 1 1 1 icc2 136*6ca2c52aSchristos test_gr_limmed 0x8000,0x0000,gr8 137*6ca2c52aSchristos 138*6ca2c52aSchristos set_gr_limmed 0xdead,0xbeff,gr7 ; Shift by 31 139*6ca2c52aSchristos set_gr_limmed 0x8000,0x0000,gr8 140*6ca2c52aSchristos set_icc 0x0f,2 ; Set mask opposite of expected 141*6ca2c52aSchristos csra gr8,gr7,gr8,cc6,1 142*6ca2c52aSchristos test_icc 1 1 1 1 icc2 143*6ca2c52aSchristos test_gr_limmed 0x8000,0x0000,gr8 144*6ca2c52aSchristos 145*6ca2c52aSchristos set_gr_limmed 0xdead,0xbeff,gr7 ; clear register 146*6ca2c52aSchristos set_gr_limmed 0x4000,0x0000,gr8 147*6ca2c52aSchristos set_icc 0x0a,2 ; Set mask opposite of expected 148*6ca2c52aSchristos csra gr8,gr7,gr8,cc6,1 149*6ca2c52aSchristos test_icc 1 0 1 0 icc2 150*6ca2c52aSchristos test_gr_limmed 0x4000,0x0000,gr8 151*6ca2c52aSchristos 152*6ca2c52aSchristos set_gr_limmed 0xdead,0xbee0,gr7 ; Shift by 0 153*6ca2c52aSchristos set_gr_limmed 0x8000,0x0000,gr8 154*6ca2c52aSchristos set_icc 0x05,3 ; Set mask opposite of expected 155*6ca2c52aSchristos csra gr8,gr7,gr8,cc3,0 156*6ca2c52aSchristos test_icc 0 1 0 1 icc3 157*6ca2c52aSchristos test_gr_limmed 0x8000,0x0000,gr8 158*6ca2c52aSchristos 159*6ca2c52aSchristos set_gr_limmed 0xdead,0xbee1,gr7 ; Shift by 1 160*6ca2c52aSchristos set_gr_limmed 0x8000,0x0000,gr8 161*6ca2c52aSchristos set_icc 0x0f,3 ; Set mask opposite of expected 162*6ca2c52aSchristos csra gr8,gr7,gr8,cc3,0 163*6ca2c52aSchristos test_icc 1 1 1 1 icc3 164*6ca2c52aSchristos test_gr_limmed 0x8000,0x0000,gr8 165*6ca2c52aSchristos 166*6ca2c52aSchristos set_gr_limmed 0xdead,0xbeff,gr7 ; Shift by 31 167*6ca2c52aSchristos set_gr_limmed 0x8000,0x0000,gr8 168*6ca2c52aSchristos set_icc 0x0f,3 ; Set mask opposite of expected 169*6ca2c52aSchristos csra gr8,gr7,gr8,cc7,1 170*6ca2c52aSchristos test_icc 1 1 1 1 icc3 171*6ca2c52aSchristos test_gr_limmed 0x8000,0x0000,gr8 172*6ca2c52aSchristos 173*6ca2c52aSchristos set_gr_limmed 0xdead,0xbeff,gr7 ; clear register 174*6ca2c52aSchristos set_gr_limmed 0x4000,0x0000,gr8 175*6ca2c52aSchristos set_icc 0x0a,3 ; Set mask opposite of expected 176*6ca2c52aSchristos csra gr8,gr7,gr8,cc7,1 177*6ca2c52aSchristos test_icc 1 0 1 0 icc3 178*6ca2c52aSchristos test_gr_limmed 0x4000,0x0000,gr8 179*6ca2c52aSchristos 180*6ca2c52aSchristos pass 181