1 1.1 christos # frv testcase for smass $GRi,$GRj 2 1.1 christos # mach: fr405 fr450 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 smass 9 1.1 christos smass1: 10 1.1 christos ; Positive operands 11 1.1 christos set_gr_immed 3,gr7 ; multiply small numbers 12 1.1 christos set_gr_immed 2,gr8 13 1.1 christos set_spr_immed 0,iacc0h 14 1.1 christos set_spr_immed 1,iacc0l 15 1.1 christos smass gr7,gr8 16 1.1 christos test_gr_immed 3,gr7 17 1.1 christos test_gr_immed 2,gr8 18 1.1 christos test_spr_immed 7,iacc0l ; result 3*2+1 19 1.1 christos test_spr_immed 0,iacc0h 20 1.1 christos smass2: 21 1.1 christos set_gr_immed 1,gr7 ; multiply by 1 22 1.1 christos set_gr_immed 2,gr8 23 1.1 christos set_spr_immed 0,iacc0h 24 1.1 christos set_spr_immed 1,iacc0l 25 1.1 christos smass gr7,gr8 26 1.1 christos test_gr_immed 1,gr7 27 1.1 christos test_gr_immed 2,gr8 28 1.1 christos test_spr_immed 3,iacc0l ; result 1*2+1 29 1.1 christos test_spr_immed 0,iacc0h 30 1.1 christos smass3: 31 1.1 christos set_gr_immed 2,gr7 ; multiply by 1 32 1.1 christos set_gr_immed 1,gr8 33 1.1 christos set_spr_immed 0,iacc0h 34 1.1 christos set_spr_immed 1,iacc0l 35 1.1 christos smass gr7,gr8 36 1.1 christos test_gr_immed 1,gr8 37 1.1 christos test_gr_immed 2,gr7 38 1.1 christos test_spr_immed 3,iacc0l ; result 2*1+1 39 1.1 christos test_spr_immed 0,iacc0h 40 1.1 christos smass4: 41 1.1 christos set_gr_immed 0,gr7 ; multiply by 0 42 1.1 christos set_gr_immed 2,gr8 43 1.1 christos set_spr_immed 0,iacc0h 44 1.1 christos set_spr_immed 1,iacc0l 45 1.1 christos smass gr7,gr8 46 1.1 christos test_gr_immed 2,gr8 47 1.1 christos test_gr_immed 0,gr7 48 1.1 christos test_spr_immed 1,iacc0l ; result 0*2+1 49 1.1 christos test_spr_immed 0,iacc0h 50 1.1 christos smass5: 51 1.1 christos set_gr_immed 2,gr7 ; multiply by 0 52 1.1 christos set_gr_immed 0,gr8 53 1.1 christos set_spr_immed 0,iacc0h 54 1.1 christos set_spr_immed 1,iacc0l 55 1.1 christos smass gr7,gr8 56 1.1 christos test_gr_immed 0,gr8 57 1.1 christos test_gr_immed 2,gr7 58 1.1 christos test_spr_immed 1,iacc0l ; result 2*0+1 59 1.1 christos test_spr_immed 0,iacc0h 60 1.1 christos smass6: 61 1.1 christos set_gr_limmed 0x3fff,0xffff,gr7 ; 31 bit result 62 1.1 christos set_gr_immed 2,gr8 63 1.1 christos set_spr_immed 0,iacc0h 64 1.1 christos set_spr_immed 1,iacc0l 65 1.1 christos smass gr7,gr8 66 1.1 christos test_gr_immed 2,gr8 67 1.1 christos test_gr_limmed 0x3fff,0xffff,gr7 68 1.1 christos test_spr_limmed 0x7fff,0xffff,iacc0l ; 3fffffff*2+1 69 1.1 christos test_spr_immed 0,iacc0h 70 1.1 christos smass7: 71 1.1 christos set_gr_limmed 0x4000,0x0000,gr7 ; 32 bit result 72 1.1 christos set_gr_immed 2,gr8 73 1.1 christos set_spr_immed 0,iacc0h 74 1.1 christos set_spr_immed 1,iacc0l 75 1.1 christos smass gr7,gr8 76 1.1 christos test_gr_immed 2,gr8 77 1.1 christos test_gr_limmed 0x4000,0x0000,gr7 78 1.1 christos test_spr_limmed 0x8000,0x0001,iacc0l ; 40000000*2+1 79 1.1 christos test_spr_immed 0,iacc0h 80 1.1 christos smass8: 81 1.1 christos set_gr_limmed 0x4000,0x0000,gr7 ; 33 bit result 82 1.1 christos set_gr_immed 4,gr8 83 1.1 christos set_spr_immed 0,iacc0h 84 1.1 christos set_spr_immed 1,iacc0l 85 1.1 christos smass gr7,gr8 86 1.1 christos test_gr_immed 4,gr8 87 1.1 christos test_gr_limmed 0x4000,0x0000,gr7 88 1.1 christos test_spr_immed 1,iacc0l ; 40000000*4+1 89 1.1 christos test_spr_immed 1,iacc0h 90 1.1 christos smass9: 91 1.1 christos set_gr_limmed 0x7fff,0xffff,gr7 ; max positive result 92 1.1 christos set_gr_limmed 0x7fff,0xffff,gr8 93 1.1 christos set_spr_immed 0,iacc0h 94 1.1 christos set_spr_immed 1,iacc0l 95 1.1 christos smass gr7,gr8 96 1.1 christos test_gr_limmed 0x7fff,0xffff,gr8 97 1.1 christos test_gr_limmed 0x7fff,0xffff,gr7 98 1.1 christos test_spr_immed 0x00000002,iacc0l ; 7fffffff*7fffffff+1 99 1.1 christos test_spr_limmed 0x3fff,0xffff,iacc0h 100 1.1 christos smass10: 101 1.1 christos ; Mixed operands 102 1.1 christos set_gr_immed -3,gr7 ; multiply small numbers 103 1.1 christos set_gr_immed 2,gr8 104 1.1 christos set_spr_immed 0,iacc0h 105 1.1 christos set_spr_immed 1,iacc0l 106 1.1 christos smass gr7,gr8 107 1.1 christos test_gr_immed 2,gr8 108 1.1 christos test_gr_immed -3,gr7 109 1.1 christos test_spr_immed -5,iacc0l ; -3*2+1 110 1.1 christos test_spr_immed -1,iacc0h 111 1.1 christos smass11: 112 1.1 christos set_gr_immed 3,gr7 ; multiply small numbers 113 1.1 christos set_gr_immed -2,gr8 114 1.1 christos set_spr_immed 0,iacc0h 115 1.1 christos set_spr_immed 1,iacc0l 116 1.1 christos smass gr7,gr8 117 1.1 christos test_gr_immed -2,gr8 118 1.1 christos test_gr_immed 3,gr7 119 1.1 christos test_spr_immed -5,iacc0l ; 3*-2+1 120 1.1 christos test_spr_immed -1,iacc0h 121 1.1 christos smass12: 122 1.1 christos set_gr_immed 1,gr7 ; multiply by 1 123 1.1 christos set_gr_immed -2,gr8 124 1.1 christos set_spr_immed 0,iacc0h 125 1.1 christos set_spr_immed 1,iacc0l 126 1.1 christos smass gr7,gr8 127 1.1 christos test_gr_immed -2,gr8 128 1.1 christos test_gr_immed 1,gr7 129 1.1 christos test_spr_immed -1,iacc0l ; 1*-2+1 130 1.1 christos test_spr_immed -1,iacc0h 131 1.1 christos smass13: 132 1.1 christos set_gr_immed -2,gr7 ; multiply by 1 133 1.1 christos set_gr_immed 1,gr8 134 1.1 christos set_spr_immed 0,iacc0h 135 1.1 christos set_spr_immed 1,iacc0l 136 1.1 christos smass gr7,gr8 137 1.1 christos test_gr_immed 1,gr8 138 1.1 christos test_gr_immed -2,gr7 139 1.1 christos test_spr_immed -1,iacc0l ; -2*1+1 140 1.1 christos test_spr_immed -1,iacc0h 141 1.1 christos smass14: 142 1.1 christos set_gr_immed 0,gr7 ; multiply by 0 143 1.1 christos set_gr_immed -2,gr8 144 1.1 christos set_spr_immed 0,iacc0h 145 1.1 christos set_spr_immed 1,iacc0l 146 1.1 christos smass gr7,gr8 147 1.1 christos test_gr_immed -2,gr8 148 1.1 christos test_gr_immed 0,gr7 149 1.1 christos test_spr_immed 1,iacc0l ; 0*-2+1 150 1.1 christos test_spr_immed 0,iacc0h 151 1.1 christos smass15: 152 1.1 christos set_gr_immed -2,gr7 ; multiply by 0 153 1.1 christos set_gr_immed 0,gr8 154 1.1 christos set_spr_immed 0,iacc0h 155 1.1 christos set_spr_immed 1,iacc0l 156 1.1 christos smass gr7,gr8 157 1.1 christos test_gr_immed 0,gr8 158 1.1 christos test_gr_immed -2,gr7 159 1.1 christos test_spr_immed 1,iacc0l ; -2*0+1 160 1.1 christos test_spr_immed 0,iacc0h 161 1.1 christos smass16: 162 1.1 christos set_gr_limmed 0x2000,0x0001,gr7 ; 31 bit result 163 1.1 christos set_gr_immed -2,gr8 164 1.1 christos set_spr_immed 0,iacc0h 165 1.1 christos set_spr_immed 1,iacc0l 166 1.1 christos smass gr7,gr8 167 1.1 christos test_gr_immed -2,gr8 168 1.1 christos test_gr_limmed 0x2000,0x0001,gr7 169 1.1 christos test_spr_limmed 0xbfff,0xffff,iacc0l ; 20000001*-2+1 170 1.1 christos test_spr_limmed 0xffff,0xffff,iacc0h 171 1.1 christos smass17: 172 1.1 christos set_gr_limmed 0x4000,0x0000,gr7 ; 32 bit result 173 1.1 christos set_gr_immed -2,gr8 174 1.1 christos set_spr_immed 0,iacc0h 175 1.1 christos set_spr_immed 1,iacc0l 176 1.1 christos smass gr7,gr8 177 1.1 christos test_gr_immed -2,gr8 178 1.1 christos test_gr_limmed 0x4000,0x0000,gr7 179 1.1 christos test_spr_limmed 0x8000,0x0001,iacc0l ; 40000000*-2+1 180 1.1 christos test_spr_limmed 0xffff,0xffff,iacc0h 181 1.1 christos smass18: 182 1.1 christos set_gr_limmed 0x4000,0x0001,gr7 ; 32 bit result 183 1.1 christos set_gr_immed -2,gr8 184 1.1 christos set_spr_immed 0,iacc0h 185 1.1 christos set_spr_immed 1,iacc0l 186 1.1 christos smass gr7,gr8 187 1.1 christos test_gr_immed -2,gr8 188 1.1 christos test_gr_limmed 0x4000,0x0001,gr7 189 1.1 christos test_spr_limmed 0x7fff,0xffff,iacc0l ; 40000001*-2+1 190 1.1 christos test_spr_limmed 0xffff,0xffff,iacc0h 191 1.1 christos smass19: 192 1.1 christos set_gr_limmed 0x4000,0x0000,gr7 ; 33 bit result 193 1.1 christos set_gr_immed -4,gr8 194 1.1 christos set_spr_immed 0,iacc0h 195 1.1 christos set_spr_immed 1,iacc0l 196 1.1 christos smass gr7,gr8 197 1.1 christos test_gr_immed -4,gr8 198 1.1 christos test_gr_limmed 0x4000,0x0000,gr7 199 1.1 christos test_spr_limmed 0x0000,0x0001,iacc0l ; 40000000*-4+1 200 1.1 christos test_spr_limmed 0xffff,0xffff,iacc0h 201 1.1 christos smass20: 202 1.1 christos set_gr_limmed 0x7fff,0xffff,gr7 ; max negative result 203 1.1 christos set_gr_limmed 0x8000,0x0000,gr8 204 1.1 christos set_spr_immed 0,iacc0h 205 1.1 christos set_spr_immed 1,iacc0l 206 1.1 christos smass gr7,gr8 207 1.1 christos test_gr_limmed 0x8000,0x0000,gr8 208 1.1 christos test_gr_limmed 0x7fff,0xffff,gr7 209 1.1 christos test_spr_limmed 0x8000,0x0001,iacc0l ; 7fffffff*80000000+1 210 1.1 christos test_spr_limmed 0xc000,0x0000,iacc0h 211 1.1 christos smass21: 212 1.1 christos ; Negative operands 213 1.1 christos set_gr_immed -3,gr7 ; multiply small numbers 214 1.1 christos set_gr_immed -2,gr8 215 1.1 christos set_spr_immed 0,iacc0h 216 1.1 christos set_spr_immed 1,iacc0l 217 1.1 christos smass gr7,gr8 218 1.1 christos test_gr_immed -2,gr8 219 1.1 christos test_gr_immed -3,gr7 220 1.1 christos test_spr_immed 7,iacc0l ; -3*-2+1 221 1.1 christos test_spr_immed 0,iacc0h 222 1.1 christos smass22: 223 1.1 christos set_gr_immed -1,gr7 ; multiply by 1 224 1.1 christos set_gr_immed -2,gr8 225 1.1 christos set_spr_immed 0,iacc0h 226 1.1 christos set_spr_immed 1,iacc0l 227 1.1 christos smass gr7,gr8 228 1.1 christos test_gr_immed -2,gr8 229 1.1 christos test_gr_immed -1,gr7 230 1.1 christos test_spr_immed 3,iacc0l ; -1*-2+1 231 1.1 christos test_spr_immed 0,iacc0h 232 1.1 christos smass23: 233 1.1 christos set_gr_immed -2,gr7 ; multiply by 1 234 1.1 christos set_gr_immed -1,gr8 235 1.1 christos set_spr_immed 0,iacc0h 236 1.1 christos set_spr_immed 1,iacc0l 237 1.1 christos smass gr7,gr8 238 1.1 christos test_gr_immed -1,gr8 239 1.1 christos test_gr_immed -2,gr7 240 1.1 christos test_spr_immed 3,iacc0l ; -2*-1+1 241 1.1 christos test_spr_immed 0,iacc0h 242 1.1 christos smass24: 243 1.1 christos set_gr_limmed 0xc000,0x0001,gr7 ; 31 bit result 244 1.1 christos set_gr_immed -2,gr8 245 1.1 christos set_spr_immed 0,iacc0h 246 1.1 christos set_spr_immed 1,iacc0l 247 1.1 christos smass gr7,gr8 248 1.1 christos test_gr_immed -2,gr8 249 1.1 christos test_gr_limmed 0xc000,0x0001,gr7 250 1.1 christos test_spr_limmed 0x7fff,0xffff,iacc0l ; c0000001*-2+1 251 1.1 christos test_spr_immed 0,iacc0h 252 1.1 christos smass25: 253 1.1 christos set_gr_limmed 0xc000,0x0000,gr7 ; 32 bit result 254 1.1 christos set_gr_immed -2,gr8 255 1.1 christos set_spr_immed 0,iacc0h 256 1.1 christos set_spr_immed 1,iacc0l 257 1.1 christos smass gr7,gr8 258 1.1 christos test_gr_immed -2,gr8 259 1.1 christos test_gr_limmed 0xc000,0x0000,gr7 260 1.1 christos test_spr_limmed 0x8000,0x0001,iacc0l ; c0000000*-2+1 261 1.1 christos test_spr_immed 0,iacc0h 262 1.1 christos smass26: 263 1.1 christos set_gr_limmed 0xc000,0x0000,gr7 ; 33 bit result 264 1.1 christos set_gr_immed -4,gr8 265 1.1 christos set_spr_immed 0,iacc0h 266 1.1 christos set_spr_immed 1,iacc0l 267 1.1 christos smass gr7,gr8 268 1.1 christos test_gr_immed -4,gr8 269 1.1 christos test_gr_limmed 0xc000,0x0000,gr7 270 1.1 christos test_spr_immed 0x00000001,iacc0l ; c0000000*-4+1 271 1.1 christos test_spr_immed 1,iacc0h 272 1.1 christos smass27: 273 1.1 christos set_gr_limmed 0x8000,0x0001,gr7 ; almost max positive result 274 1.1 christos set_gr_limmed 0x8000,0x0001,gr8 275 1.1 christos set_spr_immed 0,iacc0h 276 1.1 christos set_spr_immed 1,iacc0l 277 1.1 christos smass gr7,gr8 278 1.1 christos test_gr_limmed 0x8000,0x0001,gr8 279 1.1 christos test_gr_limmed 0x8000,0x0001,gr7 280 1.1 christos test_spr_immed 0x00000002,iacc0l ; 80000001*80000001+1 281 1.1 christos test_spr_limmed 0x3fff,0xffff,iacc0h 282 1.1 christos smass28: 283 1.1 christos set_gr_limmed 0x8000,0x0000,gr7 ; max positive result 284 1.1 christos set_gr_limmed 0x8000,0x0000,gr8 285 1.1 christos set_spr_immed 0,iacc0h 286 1.1 christos set_spr_immed 1,iacc0l 287 1.1 christos smass gr7,gr8 288 1.1 christos test_gr_limmed 0x8000,0x0000,gr8 289 1.1 christos test_gr_limmed 0x8000,0x0000,gr7 290 1.1 christos test_spr_immed 0x00000001,iacc0l ; 80000000*80000000+1 291 1.1 christos test_spr_limmed 0x4000,0x0000,iacc0h 292 1.1 christos 293 1.1 christos smass29: 294 1.1 christos set_gr_limmed 0x7fff,0xffff,gr7 ; not quite overflow (pos) 295 1.1 christos set_gr_limmed 0x7fff,0xffff,gr8 296 1.1 christos set_spr_limmed 0xffff,0xfffe,iacc0l 297 1.1 christos set_spr_limmed 0x4000,0x0000,iacc0h 298 1.1 christos smass gr7,gr8 299 1.1 christos test_gr_limmed 0x7fff,0xffff,gr8 300 1.1 christos test_gr_limmed 0x7fff,0xffff,gr7 301 1.1 christos test_spr_limmed 0xffff,0xffff,iacc0l ; 7fffffff*7fffffff+ 302 1.1 christos test_spr_limmed 0x7fff,0xffff,iacc0h ; 40000000fffffffe 303 1.1 christos 304 1.1 christos smass30: 305 1.1 christos set_gr_limmed 0x7fff,0xffff,gr7 ; just barely overflow (pos) 306 1.1 christos set_gr_limmed 0x7fff,0xffff,gr8 307 1.1 christos set_spr_limmed 0xffff,0xffff,iacc0l 308 1.1 christos set_spr_limmed 0x4000,0x0000,iacc0h 309 1.1 christos smass gr7,gr8 310 1.1 christos test_gr_limmed 0x7fff,0xffff,gr8 311 1.1 christos test_gr_limmed 0x7fff,0xffff,gr7 312 1.1 christos test_spr_limmed 0xffff,0xffff,iacc0l ; 7fffffff*7fffffff+ 313 1.1 christos test_spr_limmed 0x7fff,0xffff,iacc0h ; 40000000ffffffff 314 1.1 christos 315 1.1 christos smass31: 316 1.1 christos set_gr_limmed 0x7fff,0xffff,gr7 ; maximum overflow (pos) 317 1.1 christos set_gr_limmed 0x7fff,0xffff,gr8 318 1.1 christos set_spr_limmed 0xffff,0xffff,iacc0l 319 1.1 christos set_spr_limmed 0x7fff,0xffff,iacc0h 320 1.1 christos smass gr7,gr8 321 1.1 christos test_gr_limmed 0x7fff,0xffff,gr8 322 1.1 christos test_gr_limmed 0x7fff,0xffff,gr7 323 1.1 christos test_spr_limmed 0xffff,0xffff,iacc0l ; 7fffffff*7fffffff+ 324 1.1 christos test_spr_limmed 0x7fff,0xffff,iacc0h ; 7fffffffffffffff 325 1.1 christos 326 1.1 christos smass32: 327 1.1 christos set_gr_limmed 0x7fff,0xffff,gr7 ; not quite overflow (neg) 328 1.1 christos set_gr_limmed 0x8000,0x0000,gr8 329 1.1 christos set_spr_limmed 0x8000,0x0000,iacc0l 330 1.1 christos set_spr_limmed 0xbfff,0xffff,iacc0h 331 1.1 christos smass gr7,gr8 332 1.1 christos test_gr_limmed 0x8000,0x0000,gr8 333 1.1 christos test_gr_limmed 0x7fff,0xffff,gr7 334 1.1 christos test_spr_limmed 0x0000,0x0000,iacc0l ; 7fffffff*7fffffff+ 335 1.1 christos test_spr_limmed 0x8000,0x0000,iacc0h ; bfffffff80000000 336 1.1 christos 337 1.1 christos smass33: 338 1.1 christos set_gr_limmed 0x7fff,0xffff,gr7 ; just barely overflow (neg) 339 1.1 christos set_gr_limmed 0x8000,0x0000,gr8 340 1.1 christos set_spr_limmed 0x7fff,0xffff,iacc0l 341 1.1 christos set_spr_limmed 0xbfff,0xffff,iacc0h 342 1.1 christos smass gr7,gr8 343 1.1 christos test_gr_limmed 0x8000,0x0000,gr8 344 1.1 christos test_gr_limmed 0x7fff,0xffff,gr7 345 1.1 christos test_spr_limmed 0x0000,0x0000,iacc0l ; 7fffffff*7fffffff+ 346 1.1 christos test_spr_limmed 0x8000,0x0000,iacc0h ; bfffffff7fffffff 347 1.1 christos 348 1.1 christos smass34: 349 1.1 christos set_gr_limmed 0x7fff,0xffff,gr7 ; maximum overflow (neg) 350 1.1 christos set_gr_limmed 0x8000,0x0000,gr8 351 1.1 christos set_spr_limmed 0x0000,0x0000,iacc0l 352 1.1 christos set_spr_limmed 0x8000,0x0000,iacc0h 353 1.1 christos smass gr7,gr8 354 1.1 christos test_gr_limmed 0x8000,0x0000,gr8 355 1.1 christos test_gr_limmed 0x7fff,0xffff,gr7 356 1.1 christos test_spr_limmed 0x0000,0x0000,iacc0l ; 7fffffff*7fffffff+ 357 1.1 christos test_spr_limmed 0x8000,0x0000,iacc0h ; 8000000000000000 358 1.1 christos 359 1.1 christos pass 360