1 1.1 christos # frv testcase for csdiv $GRi,$GRj,$GRk,$CCi,$cond 2 1.1 christos # mach: all 3 1.1 christos 4 1.1 christos .include "../testutils.inc" 5 1.1 christos 6 1.1 christos start 7 1.1 christos 8 1.1 christos .global csdiv 9 1.1 christos csdiv: 10 1.1 christos set_spr_immed 0x1b1b,cccr 11 1.1 christos 12 1.1 christos ; simple division 12 / 3 13 1.1 christos set_gr_immed 3,gr3 14 1.1 christos set_gr_immed 12,gr1 15 1.1 christos csdiv gr1,gr3,gr2,cc4,1 16 1.1 christos test_gr_immed 4,gr2 17 1.1 christos 18 1.1 christos ; Random example 19 1.1 christos set_gr_limmed 0x0123,0x4567,gr3 20 1.1 christos set_gr_limmed 0xfedc,0xba98,gr1 21 1.1 christos csdiv gr1,gr3,gr2,cc4,1 22 1.1 christos test_gr_immed -1,gr2 23 1.1 christos 24 1.1 christos ; Special case from the Arch Spec Vol 2 25 1.1 christos and_spr_immed -33,isr ; turn off isr.edem 26 1.1 christos ; set up exception handler 27 1.1 christos set_psr_et 1 28 1.1 christos and_spr_immed -4081,tbr ; clear tbr.tt 29 1.1 christos set_gr_spr tbr,gr17 30 1.1 christos inc_gr_immed 0x170,gr17 ; address of exception handler 31 1.1 christos set_bctrlr_0_0 gr17 32 1.1 christos set_spr_immed 128,lcr 33 1.1 christos set_gr_immed 0,gr15 34 1.1 christos 35 1.1 christos ; divide will cause overflow 36 1.1 christos set_spr_addr ok1,lr 37 1.1 christos set_gr_immed -1,gr3 38 1.1 christos set_gr_limmed 0x8000,0x0000,gr1 39 1.1 christos e1: csdiv gr1,gr3,gr2,cc4,1 40 1.1 christos test_gr_immed 1,gr15 41 1.1 christos test_gr_limmed 0x8000,0x0000,gr2 42 1.1 christos 43 1.1 christos ; Special case from the Arch Spec Vol 2 44 1.1 christos or_spr_immed 0x20,isr ; turn on isr.edem 45 1.1 christos set_gr_immed -1,gr3 46 1.1 christos set_gr_limmed 0x8000,0x0000,gr1 47 1.1 christos csdiv gr1,gr3,gr2,cc4,1 48 1.1 christos test_gr_limmed 0x7fff,0xffff,gr2 49 1.1 christos 50 1.1 christos ; simple division 12 / 3 51 1.1 christos set_gr_immed 3,gr3 52 1.1 christos set_gr_immed 12,gr1 53 1.1 christos csdiv gr1,gr3,gr2,cc4,0 54 1.1 christos test_gr_limmed 0x7fff,0xffff,gr2 55 1.1 christos 56 1.1 christos ; Random example 57 1.1 christos set_gr_limmed 0x0123,0x4567,gr3 58 1.1 christos set_gr_limmed 0xfedc,0xba98,gr1 59 1.1 christos csdiv gr1,gr3,gr2,cc4,0 60 1.1 christos test_gr_limmed 0x7fff,0xffff,gr2 61 1.1 christos 62 1.1 christos ; Special case from the Arch Spec Vol 2 63 1.1 christos and_spr_immed -33,isr ; turn off isr.edem 64 1.1 christos set_gr_immed -1,gr3 65 1.1 christos set_gr_limmed 0x8000,0x0000,gr1 66 1.1 christos csdiv gr1,gr3,gr2,cc4,0 67 1.1 christos test_gr_limmed 0x7fff,0xffff,gr2 68 1.1 christos 69 1.1 christos or_spr_immed 0x20,isr ; turn on isr.edem 70 1.1 christos set_gr_immed -1,gr3 71 1.1 christos set_gr_limmed 0x8000,0x0000,gr1 72 1.1 christos csdiv gr1,gr3,gr2,cc4,0 73 1.1 christos test_gr_limmed 0x7fff,0xffff,gr2 74 1.1 christos 75 1.1 christos ; simple division 12 / 3 76 1.1 christos set_gr_immed 3,gr3 77 1.1 christos set_gr_immed 12,gr1 78 1.1 christos csdiv gr1,gr3,gr2,cc5,0 79 1.1 christos test_gr_immed 4,gr2 80 1.1 christos 81 1.1 christos ; Random example 82 1.1 christos set_gr_limmed 0x0123,0x4567,gr3 83 1.1 christos set_gr_limmed 0xfedc,0xba98,gr1 84 1.1 christos csdiv gr1,gr3,gr2,cc5,0 85 1.1 christos test_gr_immed -1,gr2 86 1.1 christos 87 1.1 christos ; Special case from the Arch Spec Vol 2 88 1.1 christos and_spr_immed -33,isr ; turn off isr.edem 89 1.1 christos ; divide will cause overflow 90 1.1 christos set_spr_addr ok1,lr 91 1.1 christos set_gr_immed -1,gr3 92 1.1 christos set_gr_limmed 0x8000,0x0000,gr1 93 1.1 christos e2: csdiv gr1,gr3,gr2,cc5,0 94 1.1 christos test_gr_immed 2,gr15 95 1.1 christos test_gr_limmed 0x8000,0x0000,gr2 96 1.1 christos 97 1.1 christos ; Special case from the Arch Spec Vol 2 98 1.1 christos or_spr_immed 0x20,isr ; turn on isr.edem 99 1.1 christos set_gr_immed -1,gr3 100 1.1 christos set_gr_limmed 0x8000,0x0000,gr1 101 1.1 christos csdiv gr1,gr3,gr2,cc5,0 102 1.1 christos test_gr_limmed 0x7fff,0xffff,gr2 103 1.1 christos 104 1.1 christos ; simple division 12 / 3 105 1.1 christos set_gr_immed 3,gr3 106 1.1 christos set_gr_immed 12,gr1 107 1.1 christos csdiv gr1,gr3,gr2,cc5,1 108 1.1 christos test_gr_limmed 0x7fff,0xffff,gr2 109 1.1 christos 110 1.1 christos ; Random example 111 1.1 christos set_gr_limmed 0x0123,0x4567,gr3 112 1.1 christos set_gr_limmed 0xfedc,0xba98,gr1 113 1.1 christos csdiv gr1,gr3,gr2,cc5,1 114 1.1 christos test_gr_limmed 0x7fff,0xffff,gr2 115 1.1 christos 116 1.1 christos ; Special case from the Arch Spec Vol 2 117 1.1 christos and_spr_immed -33,isr ; turn off isr.edem 118 1.1 christos set_gr_immed -1,gr3 119 1.1 christos set_gr_limmed 0x8000,0x0000,gr1 120 1.1 christos csdiv gr1,gr3,gr2,cc5,1 121 1.1 christos test_gr_limmed 0x7fff,0xffff,gr2 122 1.1 christos 123 1.1 christos or_spr_immed 0x20,isr ; turn on isr.edem 124 1.1 christos set_gr_immed -1,gr3 125 1.1 christos set_gr_limmed 0x8000,0x0000,gr1 126 1.1 christos csdiv gr1,gr3,gr2,cc5,1 127 1.1 christos test_gr_limmed 0x7fff,0xffff,gr2 128 1.1 christos 129 1.1 christos ; simple division 12 / 3 130 1.1 christos set_gr_immed 3,gr3 131 1.1 christos set_gr_immed 12,gr1 132 1.1 christos csdiv gr1,gr3,gr2,cc6,0 133 1.1 christos test_gr_limmed 0x7fff,0xffff,gr2 134 1.1 christos 135 1.1 christos ; Random example 136 1.1 christos set_gr_limmed 0x0123,0x4567,gr3 137 1.1 christos set_gr_limmed 0xfedc,0xba98,gr1 138 1.1 christos csdiv gr1,gr3,gr2,cc6,0 139 1.1 christos test_gr_limmed 0x7fff,0xffff,gr2 140 1.1 christos 141 1.1 christos ; Special case from the Arch Spec Vol 2 142 1.1 christos and_spr_immed -33,isr ; turn off isr.edem 143 1.1 christos set_gr_immed -1,gr3 144 1.1 christos set_gr_limmed 0x8000,0x0000,gr1 145 1.1 christos csdiv gr1,gr3,gr2,cc6,0 146 1.1 christos test_gr_limmed 0x7fff,0xffff,gr2 147 1.1 christos 148 1.1 christos or_spr_immed 0x20,isr ; turn on isr.edem 149 1.1 christos set_gr_immed -1,gr3 150 1.1 christos set_gr_limmed 0x8000,0x0000,gr1 151 1.1 christos csdiv gr1,gr3,gr2,cc6,0 152 1.1 christos test_gr_limmed 0x7fff,0xffff,gr2 153 1.1 christos 154 1.1 christos ; simple division 12 / 3 155 1.1 christos set_gr_immed 3,gr3 156 1.1 christos set_gr_immed 12,gr1 157 1.1 christos csdiv gr1,gr3,gr2,cc7,1 158 1.1 christos test_gr_limmed 0x7fff,0xffff,gr2 159 1.1 christos 160 1.1 christos ; Random example 161 1.1 christos set_gr_limmed 0x0123,0x4567,gr3 162 1.1 christos set_gr_limmed 0xfedc,0xba98,gr1 163 1.1 christos csdiv gr1,gr3,gr2,cc7,1 164 1.1 christos test_gr_limmed 0x7fff,0xffff,gr2 165 1.1 christos 166 1.1 christos ; Special case from the Arch Spec Vol 2 167 1.1 christos and_spr_immed -33,isr ; turn off isr.edem 168 1.1 christos set_gr_immed -1,gr3 169 1.1 christos set_gr_limmed 0x8000,0x0000,gr1 170 1.1 christos csdiv gr1,gr3,gr2,cc7,1 171 1.1 christos test_gr_limmed 0x7fff,0xffff,gr2 172 1.1 christos 173 1.1 christos or_spr_immed 0x20,isr ; turn on isr.edem 174 1.1 christos set_gr_immed -1,gr3 175 1.1 christos set_gr_limmed 0x8000,0x0000,gr1 176 1.1 christos csdiv gr1,gr3,gr2,cc7,1 177 1.1 christos test_gr_limmed 0x7fff,0xffff,gr2 178 1.1 christos 179 1.1 christos pass 180 1.1 christos 181 1.1 christos ok1: ; exception handler for overflow 182 1.1 christos test_spr_bits 0x18,3,0x2,isr ; isr.dtt is set 183 1.1 christos test_spr_bits 0x0001,0,0x1,esr0 ; esr0 is valid 184 1.1 christos test_spr_bits 0x003e,1,0x13,esr0 ; esr0.ec is set 185 1.1 christos inc_gr_immed 1,gr15 186 1.1 christos rett 0 187 1.1 christos fail 188