1 1.1 christos # frv testcase for smsss $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 smsss 9 1.1 christos smsss1: 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 7,iacc0l 15 1.1 christos smsss 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 1,iacc0l ; result 7-3*2 19 1.1 christos test_spr_immed 0,iacc0h 20 1.1 christos smsss2: 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 3,iacc0l 25 1.1 christos smsss 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 1,iacc0l ; result 3-1*2 29 1.1 christos test_spr_immed 0,iacc0h 30 1.1 christos smsss3: 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 3,iacc0l 35 1.1 christos smsss 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 1,iacc0l ; result 3-2*1 39 1.1 christos test_spr_immed 0,iacc0h 40 1.1 christos smsss4: 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 smsss 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 1-0*2 49 1.1 christos test_spr_immed 0,iacc0h 50 1.1 christos smsss5: 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 smsss 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 1-2*0 59 1.1 christos test_spr_immed 0,iacc0h 60 1.1 christos smsss6: 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 -1,iacc0h 64 1.1 christos set_spr_immed -1,iacc0l 65 1.1 christos smsss 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 0x8000,0x0001,iacc0l ; -1-3fffffff*2 69 1.1 christos test_spr_immed -1,iacc0h 70 1.1 christos smsss7: 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 -1,iacc0h 74 1.1 christos set_spr_limmed 0x8000,0x0001,iacc0l 75 1.1 christos smsss 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_immed 1,iacc0l ; ffffffff80000001-40000000*2 79 1.1 christos test_spr_immed -1,iacc0h 80 1.1 christos smsss8: 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 -1,iacc0h 84 1.1 christos set_spr_immed 1,iacc0l 85 1.1 christos smsss 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 ; ffffffff00000001-40000000*4 89 1.1 christos test_spr_immed -2,iacc0h 90 1.1 christos smsss9: 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_limmed 0x7fff,0xffff,iacc0h 94 1.1 christos set_spr_immed -1,iacc0l 95 1.1 christos smsss 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_limmed 0xffff,0xfffe,iacc0l ; 7fffffffffffffff-7fffffff*7fffffff 99 1.1 christos test_spr_limmed 0x4000,0x0000,iacc0h 100 1.1 christos smsss10: 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 -1,iacc0h 105 1.1 christos set_spr_immed -5,iacc0l 106 1.1 christos smsss 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 1,iacc0l ; -5-(-3*2) 110 1.1 christos test_spr_immed 0,iacc0h 111 1.1 christos smsss11: 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 -1,iacc0h 115 1.1 christos set_spr_immed -5,iacc0l 116 1.1 christos smsss 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 1,iacc0l ; -5-(3*-2) 120 1.1 christos test_spr_immed 0,iacc0h 121 1.1 christos smsss12: 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 -1,iacc0h 125 1.1 christos set_spr_immed -1,iacc0l 126 1.1 christos smsss 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-(1*-2) 130 1.1 christos test_spr_immed 0,iacc0h 131 1.1 christos smsss13: 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 -1,iacc0h 135 1.1 christos set_spr_immed -1,iacc0l 136 1.1 christos smsss 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 ; -1-(-2*1) 140 1.1 christos test_spr_immed 0,iacc0h 141 1.1 christos smsss14: 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 smsss 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 ; 1-(0*-2) 150 1.1 christos test_spr_immed 0,iacc0h 151 1.1 christos smsss15: 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 smsss 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 ; 1-(-2*0) 160 1.1 christos test_spr_immed 0,iacc0h 161 1.1 christos smsss16: 162 1.1 christos set_gr_limmed 0x2000,0x0000,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_limmed 0x3fff,0xffff,iacc0l 166 1.1 christos smsss gr7,gr8 167 1.1 christos test_gr_immed -2,gr8 168 1.1 christos test_gr_limmed 0x2000,0x0000,gr7 169 1.1 christos test_spr_limmed 0x7fff,0xffff,iacc0l 170 1.1 christos test_spr_immed 0,iacc0h ; 3fffffff-20000001*-2 171 1.1 christos smsss17: 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 smsss 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 ; 1-40000000*-2 180 1.1 christos test_spr_immed 0,iacc0h 181 1.1 christos smsss18: 182 1.1 christos set_gr_limmed 0x4000,0x0000,gr7 ; 32 bit result 183 1.1 christos set_gr_immed -2,gr8 184 1.1 christos set_spr_immed -1,iacc0h 185 1.1 christos set_spr_immed -1,iacc0l 186 1.1 christos smsss gr7,gr8 187 1.1 christos test_gr_immed -2,gr8 188 1.1 christos test_gr_limmed 0x4000,0x0000,gr7 189 1.1 christos test_spr_limmed 0x7fff,0xffff,iacc0l 190 1.1 christos test_spr_immed 0,iacc0h ; -1-40000000*-2 191 1.1 christos smsss19: 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 smsss 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_immed 1,iacc0l ; 200000001-(40000000*-4) 200 1.1 christos test_spr_immed 1,iacc0h 201 1.1 christos smsss20: 202 1.1 christos set_gr_limmed 0x7fff,0xffff,gr7 ; max negative result 203 1.1 christos set_gr_limmed 0x7fff,0xffff,gr8 204 1.1 christos set_spr_limmed 0xbfff,0xffff,iacc0h 205 1.1 christos set_spr_limmed 0x0000,0x0001,iacc0l 206 1.1 christos smsss gr7,gr8 207 1.1 christos test_gr_limmed 0x7fff,0xffff,gr8 208 1.1 christos test_gr_limmed 0x7fff,0xffff,gr7 209 1.1 christos test_spr_immed 0,iacc0l ; bfffffff00000001-(7fffffff*7fffffff) 210 1.1 christos test_spr_limmed 0x8000,0x0000,iacc0h 211 1.1 christos smsss21: 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 7,iacc0l 217 1.1 christos smsss 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 1,iacc0l ; 7-(-3*-2) 221 1.1 christos test_spr_immed 0,iacc0h 222 1.1 christos smsss22: 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 3,iacc0l 227 1.1 christos smsss 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 1,iacc0l ; 3-(-1*-2) 231 1.1 christos test_spr_immed 0,iacc0h 232 1.1 christos smsss23: 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 3,iacc0l 237 1.1 christos smsss 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 1,iacc0l ; 3-(-2*-1) 241 1.1 christos test_spr_immed 0,iacc0h 242 1.1 christos smsss24: 243 1.1 christos set_gr_immed -32768,gr7 ; 31 bit result 244 1.1 christos set_gr_immed -32768,gr8 245 1.1 christos set_spr_immed 0,iacc0h 246 1.1 christos set_spr_limmed 0xbfff,0xffff,iacc0l 247 1.1 christos smsss gr7,gr8 248 1.1 christos test_gr_immed -32768,gr8 249 1.1 christos test_gr_immed -32768,gr7 250 1.1 christos test_spr_limmed 0x7fff,0xffff,iacc0l ; 7ffffffb-(-2*-2) 251 1.1 christos test_spr_immed 0,iacc0h 252 1.1 christos smsss25: 253 1.1 christos set_gr_immed 0xffff,gr7 ; 32 bit result 254 1.1 christos set_gr_immed 0xffff,gr8 255 1.1 christos set_spr_immed 1,iacc0h 256 1.1 christos set_spr_limmed 0xfffe,0x0000,iacc0l 257 1.1 christos smsss gr7,gr8 258 1.1 christos test_gr_immed 0xffff,gr8 259 1.1 christos test_gr_immed 0xffff,gr7 260 1.1 christos test_spr_limmed 0xffff,0xffff,iacc0l ; 1fffe0000-ffff*ffff 261 1.1 christos test_spr_immed 0,iacc0h 262 1.1 christos smsss26: 263 1.1 christos set_gr_limmed 0x0001,0x0000,gr7 ; 33 bit result 264 1.1 christos set_gr_limmed 0x0001,0x0000,gr8 265 1.1 christos set_spr_immed 2,iacc0h 266 1.1 christos set_spr_immed 1,iacc0l 267 1.1 christos smsss gr7,gr8 268 1.1 christos test_gr_limmed 0x0001,0x0000,gr8 269 1.1 christos test_gr_limmed 0x0001,0x0000,gr7 270 1.1 christos test_spr_immed 1,iacc0l ; 0x200000001-0x10000*0x10000 271 1.1 christos test_spr_immed 1,iacc0h 272 1.1 christos smsss27: 273 1.1 christos set_gr_immed -2,gr7 ; almost max positive result 274 1.1 christos set_gr_immed -2,gr8 275 1.1 christos set_spr_limmed 0x7fff,0xffff,iacc0h 276 1.1 christos set_spr_limmed 0xffff,0xffff,iacc0l 277 1.1 christos smsss gr7,gr8 278 1.1 christos test_gr_immed -2,gr8 279 1.1 christos test_gr_immed -2,gr7 280 1.1 christos test_spr_limmed 0xffff,0xfffb,iacc0l ; maxpos - (-2*-2) 281 1.1 christos test_spr_limmed 0x7fff,0xffff,iacc0h 282 1.1 christos smsss28: 283 1.1 christos set_gr_immed 0,gr7 ; max positive result 284 1.1 christos set_gr_immed 0,gr8 285 1.1 christos set_spr_limmed 0x7fff,0xffff,iacc0h 286 1.1 christos set_spr_limmed 0xffff,0xffff,iacc0l 287 1.1 christos smsss gr7,gr8 288 1.1 christos test_gr_immed 0,gr8 289 1.1 christos test_gr_immed 0,gr7 290 1.1 christos test_spr_limmed 0xffff,0xffff,iacc0l ; maxpos-(0*0) 291 1.1 christos test_spr_limmed 0x7fff,0xffff,iacc0h 292 1.1 christos smsss29: 293 1.1 christos set_gr_limmed 0x7fff,0xffff,gr7 ; not quite overflow (pos) 294 1.1 christos set_gr_limmed 0x8000,0x0000,gr8 295 1.1 christos set_spr_limmed 0x4000,0x0000,iacc0h 296 1.1 christos set_spr_limmed 0x7fff,0xffff,iacc0l 297 1.1 christos smsss gr7,gr8 298 1.1 christos test_gr_limmed 0x8000,0x0000,gr8 299 1.1 christos test_gr_limmed 0x7fff,0xffff,gr7 300 1.1 christos test_spr_limmed 0xffff,0xffff,iacc0l ; 400000007fffffff - 301 1.1 christos test_spr_limmed 0x7fff,0xffff,iacc0h ; 0x80000000*0x7fffffff 302 1.1 christos smsss30: 303 1.1 christos set_gr_limmed 0x7fff,0xffff,gr7 ; just barely overflow (pos) 304 1.1 christos set_gr_limmed 0x8000,0x0000,gr8 305 1.1 christos set_spr_limmed 0x4000,0x0000,iacc0h 306 1.1 christos set_spr_limmed 0x8000,0x0000,iacc0l 307 1.1 christos smsss gr7,gr8 308 1.1 christos test_gr_limmed 0x8000,0x0000,gr8 309 1.1 christos test_gr_limmed 0x7fff,0xffff,gr7 310 1.1 christos test_spr_limmed 0xffff,0xffff,iacc0l ; 4000000080000000 - 311 1.1 christos test_spr_limmed 0x7fff,0xffff,iacc0h ; 0x80000000*0x7fffffff 312 1.1 christos 313 1.1 christos smsss31: 314 1.1 christos set_gr_limmed 0x7fff,0xffff,gr7 ; maximum overflow (pos) 315 1.1 christos set_gr_limmed 0x8000,0x0000,gr8 316 1.1 christos set_spr_limmed 0xffff,0xffff,iacc0l 317 1.1 christos set_spr_limmed 0x7fff,0xffff,iacc0h 318 1.1 christos smsss gr7,gr8 319 1.1 christos test_gr_limmed 0x8000,0x0000,gr8 320 1.1 christos test_gr_limmed 0x7fff,0xffff,gr7 321 1.1 christos test_spr_limmed 0xffff,0xffff,iacc0l ; 7fffffffffffffff - 322 1.1 christos test_spr_limmed 0x7fff,0xffff,iacc0h ; 80000000*80000000 323 1.1 christos smsss32: 324 1.1 christos set_gr_limmed 0x7fff,0xffff,gr7 ; not quite overflow (neg) 325 1.1 christos set_gr_limmed 0x7fff,0xffff,gr8 326 1.1 christos set_spr_immed 1,iacc0l 327 1.1 christos set_spr_limmed 0xbfff,0xffff,iacc0h 328 1.1 christos smsss gr7,gr8 329 1.1 christos test_gr_limmed 0x7fff,0xffff,gr8 330 1.1 christos test_gr_limmed 0x7fff,0xffff,gr7 331 1.1 christos test_spr_limmed 0x0000,0x0000,iacc0l ; bfffffff00000001 - 332 1.1 christos test_spr_limmed 0x8000,0x0000,iacc0h ; 0x7fffffff*0x7fffffff 333 1.1 christos smsss33: 334 1.1 christos set_gr_limmed 0x7fff,0xffff,gr7 ; just barely overflow (neg) 335 1.1 christos set_gr_limmed 0x7fff,0xffff,gr8 336 1.1 christos set_spr_immed 0,iacc0l 337 1.1 christos set_spr_limmed 0xbfff,0xffff,iacc0h 338 1.1 christos smsss gr7,gr8 339 1.1 christos test_gr_limmed 0x7fff,0xffff,gr8 340 1.1 christos test_gr_limmed 0x7fff,0xffff,gr7 341 1.1 christos test_spr_limmed 0x0000,0x0000,iacc0l ; 7fffffff*7fffffff+ 342 1.1 christos test_spr_limmed 0x8000,0x0000,iacc0h ; bfffffff7fffffff 343 1.1 christos smsss34: 344 1.1 christos set_gr_limmed 0x7fff,0xffff,gr7 ; maximum overflow (neg) 345 1.1 christos set_gr_limmed 0x7fff,0xffff,gr8 346 1.1 christos set_spr_limmed 0x0000,0x0000,iacc0l 347 1.1 christos set_spr_limmed 0x8000,0x0000,iacc0h 348 1.1 christos smsss gr7,gr8 349 1.1 christos test_gr_limmed 0x7fff,0xffff,gr8 350 1.1 christos test_gr_limmed 0x7fff,0xffff,gr7 351 1.1 christos test_spr_limmed 0x0000,0x0000,iacc0l ; 8000000000000000- 352 1.1 christos test_spr_limmed 0x8000,0x0000,iacc0h ; 7fffffff*7fffffff+ 353 1.1 christos 354 1.1 christos pass 355