1 1.1 christos # frv testcase for cmqmachs $GRi,$GRj,$ACCk,$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 cmqmachs 9 1.1 christos cmqmachs: 10 1.1 christos set_spr_immed 0x1b1b,cccr 11 1.1 christos 12 1.1 christos ; Positive operands 13 1.1 christos set_spr_immed 0,msr0 14 1.1 christos set_accg_immed 0,accg0 15 1.1 christos set_acc_immed 0,acc0 16 1.1 christos set_accg_immed 0,accg1 17 1.1 christos set_acc_immed 0,acc1 18 1.1 christos set_accg_immed 0,accg2 19 1.1 christos set_acc_immed 0,acc2 20 1.1 christos set_accg_immed 0,accg3 21 1.1 christos set_acc_immed 0,acc3 22 1.1 christos set_fr_iimmed 2,3,fr8 ; multiply small numbers 23 1.1 christos set_fr_iimmed 3,2,fr10 24 1.1 christos set_fr_iimmed 0,1,fr9 ; multiply by 0 25 1.1 christos set_fr_iimmed 2,0,fr11 26 1.1 christos cmqmachs fr8,fr10,acc0,cc0,1 27 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 28 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 29 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 30 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 31 1.1 christos test_accg_immed 0,accg0 32 1.1 christos test_acc_immed 6,acc0 33 1.1 christos test_accg_immed 0,accg1 34 1.1 christos test_acc_immed 6,acc1 35 1.1 christos test_accg_immed 0,accg2 36 1.1 christos test_acc_immed 0,acc2 37 1.1 christos test_accg_immed 0,accg3 38 1.1 christos test_acc_immed 0,acc3 39 1.1 christos 40 1.1 christos set_fr_iimmed 2,1,fr8 ; multiply by 1 41 1.1 christos set_fr_iimmed 1,2,fr10 42 1.1 christos set_fr_iimmed 0x3fff,2,fr9 ; 15 bit result 43 1.1 christos set_fr_iimmed 2,0x3fff,fr11 44 1.1 christos cmqmachs fr8,fr10,acc0,cc0,1 45 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 46 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 47 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 48 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 49 1.1 christos test_accg_immed 0,accg0 50 1.1 christos test_acc_immed 8,acc0 51 1.1 christos test_accg_immed 0,accg1 52 1.1 christos test_acc_immed 8,acc1 53 1.1 christos test_accg_immed 0,accg2 54 1.1 christos test_acc_limmed 0,0x7ffe,acc2 55 1.1 christos test_accg_immed 0,accg3 56 1.1 christos test_acc_limmed 0,0x7ffe,acc3 57 1.1 christos 58 1.1 christos set_fr_iimmed 0x4000,2,fr8 ; 16 bit result 59 1.1 christos set_fr_iimmed 2,0x4000,fr10 60 1.1 christos set_fr_iimmed 0x7fff,0x7fff,fr9 ; max positive result 61 1.1 christos set_fr_iimmed 0x7fff,0x7fff,fr11 62 1.1 christos cmqmachs fr8,fr10,acc0,cc0,1 63 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 64 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 65 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 66 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 67 1.1 christos test_accg_immed 0,accg0 68 1.1 christos test_acc_limmed 0x0000,0x8008,acc0 69 1.1 christos test_accg_immed 0,accg1 70 1.1 christos test_acc_limmed 0x0000,0x8008,acc1 71 1.1 christos test_accg_immed 0,accg2 72 1.1 christos test_acc_limmed 0x3fff,0x7fff,acc2 73 1.1 christos test_accg_immed 0,accg3 74 1.1 christos test_acc_limmed 0x3fff,0x7fff,acc3 75 1.1 christos 76 1.1 christos ; Mixed operands 77 1.1 christos set_fr_iimmed 2,0xfffd,fr8 ; multiply small numbers 78 1.1 christos set_fr_iimmed 0xfffd,2,fr10 79 1.1 christos set_fr_iimmed 0xfffe,1,fr9 ; multiply by 1 80 1.1 christos set_fr_iimmed 1,0xfffe,fr11 81 1.1 christos cmqmachs fr8,fr10,acc0,cc0,1 82 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 83 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 84 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 85 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 86 1.1 christos test_accg_immed 0,accg0 87 1.1 christos test_acc_limmed 0x0000,0x8002,acc0 88 1.1 christos test_accg_immed 0,accg1 89 1.1 christos test_acc_limmed 0x0000,0x8002,acc1 90 1.1 christos test_accg_immed 0,accg2 91 1.1 christos test_acc_limmed 0x3fff,0x7ffd,acc2 92 1.1 christos test_accg_immed 0,accg3 93 1.1 christos test_acc_limmed 0x3fff,0x7ffd,acc3 94 1.1 christos 95 1.1 christos set_fr_iimmed 0xfffe,0,fr8 ; multiply by 0 96 1.1 christos set_fr_iimmed 0,0xfffe,fr10 97 1.1 christos set_fr_iimmed 0x2001,0xfffe,fr9 ; 15 bit result 98 1.1 christos set_fr_iimmed 0xfffe,0x2001,fr11 99 1.1 christos cmqmachs fr8,fr10,acc0,cc0,1 100 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 101 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 102 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 103 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 104 1.1 christos test_accg_immed 0,accg0 105 1.1 christos test_acc_limmed 0x0000,0x8002,acc0 106 1.1 christos test_accg_immed 0,accg1 107 1.1 christos test_acc_limmed 0x0000,0x8002,acc1 108 1.1 christos test_accg_immed 0,accg2 109 1.1 christos test_acc_limmed 0x3fff,0x3ffb,acc2 110 1.1 christos test_accg_immed 0,accg3 111 1.1 christos test_acc_limmed 0x3fff,0x3ffb,acc3 112 1.1 christos 113 1.1 christos set_fr_iimmed 0x4000,0xfffe,fr8 ; 16 bit result 114 1.1 christos set_fr_iimmed 0xfffe,0x4000,fr10 115 1.1 christos set_fr_iimmed 0x7fff,0x8000,fr9 ; max negative result 116 1.1 christos set_fr_iimmed 0x8000,0x7fff,fr11 117 1.1 christos cmqmachs fr8,fr10,acc0,cc4,1 118 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 119 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 120 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 121 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 122 1.1 christos test_accg_immed 0,accg0 123 1.1 christos test_acc_limmed 0x0000,0x0002,acc0 124 1.1 christos test_accg_immed 0,accg1 125 1.1 christos test_acc_limmed 0x0000,0x0002,acc1 126 1.1 christos test_accg_immed 0xff,accg2 127 1.1 christos test_acc_limmed 0xffff,0xbffb,acc2 128 1.1 christos test_accg_immed 0xff,accg3 129 1.1 christos test_acc_limmed 0xffff,0xbffb,acc3 130 1.1 christos 131 1.1 christos ; Negative operands 132 1.1 christos set_fr_iimmed 0xfffe,0xfffd,fr8 ; multiply small numbers 133 1.1 christos set_fr_iimmed 0xfffd,0xfffe,fr10 134 1.1 christos set_fr_iimmed 0xffff,0xfffe,fr9 ; multiply by -1 135 1.1 christos set_fr_iimmed 0xfffe,0xffff,fr11 136 1.1 christos cmqmachs fr8,fr10,acc0,cc4,1 137 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 138 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 139 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 140 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 141 1.1 christos test_accg_immed 0,accg0 142 1.1 christos test_acc_limmed 0x0000,0x0008,acc0 143 1.1 christos test_accg_immed 0,accg1 144 1.1 christos test_acc_limmed 0x0000,0x0008,acc1 145 1.1 christos test_accg_immed 0xff,accg2 146 1.1 christos test_acc_limmed 0xffff,0xbffd,acc2 147 1.1 christos test_accg_immed 0xff,accg3 148 1.1 christos test_acc_limmed 0xffff,0xbffd,acc3 149 1.1 christos 150 1.1 christos set_fr_iimmed 0x8001,0x8001,fr8 ; almost max positive result 151 1.1 christos set_fr_iimmed 0x8001,0x8001,fr10 152 1.1 christos set_fr_iimmed 0x8000,0x8000,fr9 ; max positive result 153 1.1 christos set_fr_iimmed 0x8000,0x8000,fr11 154 1.1 christos cmqmachs fr8,fr10,acc0,cc4,1 155 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 156 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 157 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 158 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 159 1.1 christos test_accg_immed 0,accg0 160 1.1 christos test_acc_immed 0x3fff0009,acc0 161 1.1 christos test_accg_immed 0,accg1 162 1.1 christos test_acc_immed 0x3fff0009,acc1 163 1.1 christos test_accg_immed 0,accg2 164 1.1 christos test_acc_immed 0x3fffbffd,acc2 165 1.1 christos test_accg_immed 0,accg3 166 1.1 christos test_acc_immed 0x3fffbffd,acc3 167 1.1 christos 168 1.1 christos set_accg_immed 0x7f,accg0 ; saturation 169 1.1 christos set_acc_immed 0xffffffff,acc0 170 1.1 christos set_accg_immed 0x7f,accg1 171 1.1 christos set_acc_immed 0xffffffff,acc1 172 1.1 christos set_accg_immed 0x7f,accg2 ; saturation 173 1.1 christos set_acc_immed 0xffffffff,acc2 174 1.1 christos set_accg_immed 0x7f,accg3 175 1.1 christos set_acc_immed 0xffffffff,acc3 176 1.1 christos set_fr_iimmed 1,1,fr8 177 1.1 christos set_fr_iimmed 1,1,fr10 178 1.1 christos set_fr_iimmed 0x7fff,0x7fff,fr9 ; saturation 179 1.1 christos set_fr_iimmed 0x7fff,0x7fff,fr11 180 1.1 christos cmqmachs fr8,fr10,acc0,cc4,1 181 1.1 christos test_spr_bits 0x3c,2,0xf,msr0 ; msr0.sie is set 182 1.1 christos test_spr_bits 2,1,1,msr0 ; msr0.ovf is set 183 1.1 christos test_spr_bits 1,0,1,msr0 ; msr0.aovf is set 184 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt is set 185 1.1 christos test_accg_immed 0x7f,accg0 186 1.1 christos test_acc_limmed 0xffff,0xffff,acc0 187 1.1 christos test_accg_immed 0x7f,accg1 188 1.1 christos test_acc_limmed 0xffff,0xffff,acc1 189 1.1 christos test_accg_immed 0x7f,accg2 190 1.1 christos test_acc_limmed 0xffff,0xffff,acc2 191 1.1 christos test_accg_immed 0x7f,accg3 192 1.1 christos test_acc_limmed 0xffff,0xffff,acc3 193 1.1 christos 194 1.1 christos set_accg_immed 0x80,accg0 ; saturation 195 1.1 christos set_acc_immed 0,acc0 196 1.1 christos set_accg_immed 0x80,accg1 197 1.1 christos set_acc_immed 0,acc1 198 1.1 christos set_accg_immed 0x80,accg2 ; saturation 199 1.1 christos set_acc_immed 0,acc2 200 1.1 christos set_accg_immed 0x80,accg3 201 1.1 christos set_acc_immed 0,acc3 202 1.1 christos set_fr_iimmed 0xffff,0,fr8 203 1.1 christos set_fr_iimmed 1,0xffff,fr10 204 1.1 christos set_fr_iimmed 0x0000,0x8000,fr9 ; saturation 205 1.1 christos set_fr_iimmed 0x7fff,0x7fff,fr11 206 1.1 christos cmqmachs fr8,fr10,acc0,cc4,1 207 1.1 christos test_spr_bits 0x3c,2,0x9,msr0 ; msr0.sie is set 208 1.1 christos test_spr_bits 2,1,1,msr0 ; msr0.ovf is set 209 1.1 christos test_spr_bits 1,0,1,msr0 ; msr0.aovf is set 210 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt is set 211 1.1 christos test_accg_immed 0x80,accg0 212 1.1 christos test_acc_immed 0,acc0 213 1.1 christos test_accg_immed 0x80,accg1 214 1.1 christos test_acc_immed 0,acc1 215 1.1 christos test_accg_immed 0x80,accg2 216 1.1 christos test_acc_immed 0,acc2 217 1.1 christos test_accg_immed 0x80,accg3 218 1.1 christos test_acc_immed 0,acc3 219 1.1 christos 220 1.1 christos ; Positive operands 221 1.1 christos set_spr_immed 0,msr0 222 1.1 christos set_accg_immed 0,accg0 223 1.1 christos set_acc_immed 0,acc0 224 1.1 christos set_accg_immed 0,accg1 225 1.1 christos set_acc_immed 0,acc1 226 1.1 christos set_accg_immed 0,accg2 227 1.1 christos set_acc_immed 0,acc2 228 1.1 christos set_accg_immed 0,accg3 229 1.1 christos set_acc_immed 0,acc3 230 1.1 christos set_fr_iimmed 2,3,fr8 ; multiply small numbers 231 1.1 christos set_fr_iimmed 3,2,fr10 232 1.1 christos set_fr_iimmed 0,1,fr9 ; multiply by 0 233 1.1 christos set_fr_iimmed 2,0,fr11 234 1.1 christos cmqmachs fr8,fr10,acc0,cc1,0 235 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 236 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 237 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 238 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 239 1.1 christos test_accg_immed 0,accg0 240 1.1 christos test_acc_immed 6,acc0 241 1.1 christos test_accg_immed 0,accg1 242 1.1 christos test_acc_immed 6,acc1 243 1.1 christos test_accg_immed 0,accg2 244 1.1 christos test_acc_immed 0,acc2 245 1.1 christos test_accg_immed 0,accg3 246 1.1 christos test_acc_immed 0,acc3 247 1.1 christos 248 1.1 christos set_fr_iimmed 2,1,fr8 ; multiply by 1 249 1.1 christos set_fr_iimmed 1,2,fr10 250 1.1 christos set_fr_iimmed 0x3fff,2,fr9 ; 15 bit result 251 1.1 christos set_fr_iimmed 2,0x3fff,fr11 252 1.1 christos cmqmachs fr8,fr10,acc0,cc1,0 253 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 254 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 255 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 256 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 257 1.1 christos test_accg_immed 0,accg0 258 1.1 christos test_acc_immed 8,acc0 259 1.1 christos test_accg_immed 0,accg1 260 1.1 christos test_acc_immed 8,acc1 261 1.1 christos test_accg_immed 0,accg2 262 1.1 christos test_acc_limmed 0,0x7ffe,acc2 263 1.1 christos test_accg_immed 0,accg3 264 1.1 christos test_acc_limmed 0,0x7ffe,acc3 265 1.1 christos 266 1.1 christos set_fr_iimmed 0x4000,2,fr8 ; 16 bit result 267 1.1 christos set_fr_iimmed 2,0x4000,fr10 268 1.1 christos set_fr_iimmed 0x7fff,0x7fff,fr9 ; max positive result 269 1.1 christos set_fr_iimmed 0x7fff,0x7fff,fr11 270 1.1 christos cmqmachs fr8,fr10,acc0,cc1,0 271 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 272 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 273 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 274 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 275 1.1 christos test_accg_immed 0,accg0 276 1.1 christos test_acc_limmed 0x0000,0x8008,acc0 277 1.1 christos test_accg_immed 0,accg1 278 1.1 christos test_acc_limmed 0x0000,0x8008,acc1 279 1.1 christos test_accg_immed 0,accg2 280 1.1 christos test_acc_limmed 0x3fff,0x7fff,acc2 281 1.1 christos test_accg_immed 0,accg3 282 1.1 christos test_acc_limmed 0x3fff,0x7fff,acc3 283 1.1 christos 284 1.1 christos ; Mixed operands 285 1.1 christos set_fr_iimmed 2,0xfffd,fr8 ; multiply small numbers 286 1.1 christos set_fr_iimmed 0xfffd,2,fr10 287 1.1 christos set_fr_iimmed 0xfffe,1,fr9 ; multiply by 1 288 1.1 christos set_fr_iimmed 1,0xfffe,fr11 289 1.1 christos cmqmachs fr8,fr10,acc0,cc1,0 290 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 291 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 292 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 293 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 294 1.1 christos test_accg_immed 0,accg0 295 1.1 christos test_acc_limmed 0x0000,0x8002,acc0 296 1.1 christos test_accg_immed 0,accg1 297 1.1 christos test_acc_limmed 0x0000,0x8002,acc1 298 1.1 christos test_accg_immed 0,accg2 299 1.1 christos test_acc_limmed 0x3fff,0x7ffd,acc2 300 1.1 christos test_accg_immed 0,accg3 301 1.1 christos test_acc_limmed 0x3fff,0x7ffd,acc3 302 1.1 christos 303 1.1 christos set_fr_iimmed 0xfffe,0,fr8 ; multiply by 0 304 1.1 christos set_fr_iimmed 0,0xfffe,fr10 305 1.1 christos set_fr_iimmed 0x2001,0xfffe,fr9 ; 15 bit result 306 1.1 christos set_fr_iimmed 0xfffe,0x2001,fr11 307 1.1 christos cmqmachs fr8,fr10,acc0,cc1,0 308 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 309 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 310 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 311 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 312 1.1 christos test_accg_immed 0,accg0 313 1.1 christos test_acc_limmed 0x0000,0x8002,acc0 314 1.1 christos test_accg_immed 0,accg1 315 1.1 christos test_acc_limmed 0x0000,0x8002,acc1 316 1.1 christos test_accg_immed 0,accg2 317 1.1 christos test_acc_limmed 0x3fff,0x3ffb,acc2 318 1.1 christos test_accg_immed 0,accg3 319 1.1 christos test_acc_limmed 0x3fff,0x3ffb,acc3 320 1.1 christos 321 1.1 christos set_fr_iimmed 0x4000,0xfffe,fr8 ; 16 bit result 322 1.1 christos set_fr_iimmed 0xfffe,0x4000,fr10 323 1.1 christos set_fr_iimmed 0x7fff,0x8000,fr9 ; max negative result 324 1.1 christos set_fr_iimmed 0x8000,0x7fff,fr11 325 1.1 christos cmqmachs fr8,fr10,acc0,cc5,0 326 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 327 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 328 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 329 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 330 1.1 christos test_accg_immed 0,accg0 331 1.1 christos test_acc_limmed 0x0000,0x0002,acc0 332 1.1 christos test_accg_immed 0,accg1 333 1.1 christos test_acc_limmed 0x0000,0x0002,acc1 334 1.1 christos test_accg_immed 0xff,accg2 335 1.1 christos test_acc_limmed 0xffff,0xbffb,acc2 336 1.1 christos test_accg_immed 0xff,accg3 337 1.1 christos test_acc_limmed 0xffff,0xbffb,acc3 338 1.1 christos 339 1.1 christos ; Negative operands 340 1.1 christos set_fr_iimmed 0xfffe,0xfffd,fr8 ; multiply small numbers 341 1.1 christos set_fr_iimmed 0xfffd,0xfffe,fr10 342 1.1 christos set_fr_iimmed 0xffff,0xfffe,fr9 ; multiply by -1 343 1.1 christos set_fr_iimmed 0xfffe,0xffff,fr11 344 1.1 christos cmqmachs fr8,fr10,acc0,cc5,0 345 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 346 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 347 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 348 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 349 1.1 christos test_accg_immed 0,accg0 350 1.1 christos test_acc_limmed 0x0000,0x0008,acc0 351 1.1 christos test_accg_immed 0,accg1 352 1.1 christos test_acc_limmed 0x0000,0x0008,acc1 353 1.1 christos test_accg_immed 0xff,accg2 354 1.1 christos test_acc_limmed 0xffff,0xbffd,acc2 355 1.1 christos test_accg_immed 0xff,accg3 356 1.1 christos test_acc_limmed 0xffff,0xbffd,acc3 357 1.1 christos 358 1.1 christos set_fr_iimmed 0x8001,0x8001,fr8 ; almost max positive result 359 1.1 christos set_fr_iimmed 0x8001,0x8001,fr10 360 1.1 christos set_fr_iimmed 0x8000,0x8000,fr9 ; max positive result 361 1.1 christos set_fr_iimmed 0x8000,0x8000,fr11 362 1.1 christos cmqmachs fr8,fr10,acc0,cc5,0 363 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 364 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 365 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 366 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 367 1.1 christos test_accg_immed 0,accg0 368 1.1 christos test_acc_immed 0x3fff0009,acc0 369 1.1 christos test_accg_immed 0,accg1 370 1.1 christos test_acc_immed 0x3fff0009,acc1 371 1.1 christos test_accg_immed 0,accg2 372 1.1 christos test_acc_immed 0x3fffbffd,acc2 373 1.1 christos test_accg_immed 0,accg3 374 1.1 christos test_acc_immed 0x3fffbffd,acc3 375 1.1 christos 376 1.1 christos set_accg_immed 0x7f,accg0 ; saturation 377 1.1 christos set_acc_immed 0xffffffff,acc0 378 1.1 christos set_accg_immed 0x7f,accg1 379 1.1 christos set_acc_immed 0xffffffff,acc1 380 1.1 christos set_accg_immed 0x7f,accg2 ; saturation 381 1.1 christos set_acc_immed 0xffffffff,acc2 382 1.1 christos set_accg_immed 0x7f,accg3 383 1.1 christos set_acc_immed 0xffffffff,acc3 384 1.1 christos set_fr_iimmed 1,1,fr8 385 1.1 christos set_fr_iimmed 1,1,fr10 386 1.1 christos set_fr_iimmed 0x7fff,0x7fff,fr9 ; saturation 387 1.1 christos set_fr_iimmed 0x7fff,0x7fff,fr11 388 1.1 christos cmqmachs fr8,fr10,acc0,cc5,0 389 1.1 christos test_spr_bits 0x3c,2,0xf,msr0 ; msr0.sie is set 390 1.1 christos test_spr_bits 2,1,1,msr0 ; msr0.ovf is set 391 1.1 christos test_spr_bits 1,0,1,msr0 ; msr0.aovf is set 392 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt is set 393 1.1 christos test_accg_immed 0x7f,accg0 394 1.1 christos test_acc_limmed 0xffff,0xffff,acc0 395 1.1 christos test_accg_immed 0x7f,accg1 396 1.1 christos test_acc_limmed 0xffff,0xffff,acc1 397 1.1 christos test_accg_immed 0x7f,accg2 398 1.1 christos test_acc_limmed 0xffff,0xffff,acc2 399 1.1 christos test_accg_immed 0x7f,accg3 400 1.1 christos test_acc_limmed 0xffff,0xffff,acc3 401 1.1 christos 402 1.1 christos set_accg_immed 0x80,accg0 ; saturation 403 1.1 christos set_acc_immed 0,acc0 404 1.1 christos set_accg_immed 0x80,accg1 405 1.1 christos set_acc_immed 0,acc1 406 1.1 christos set_accg_immed 0x80,accg2 ; saturation 407 1.1 christos set_acc_immed 0,acc2 408 1.1 christos set_accg_immed 0x80,accg3 409 1.1 christos set_acc_immed 0,acc3 410 1.1 christos set_fr_iimmed 0xffff,0,fr8 411 1.1 christos set_fr_iimmed 1,0xffff,fr10 412 1.1 christos set_fr_iimmed 0x0000,0x8000,fr9 ; saturation 413 1.1 christos set_fr_iimmed 0x7fff,0x7fff,fr11 414 1.1 christos cmqmachs fr8,fr10,acc0,cc5,0 415 1.1 christos test_spr_bits 0x3c,2,0x9,msr0 ; msr0.sie is set 416 1.1 christos test_spr_bits 2,1,1,msr0 ; msr0.ovf is set 417 1.1 christos test_spr_bits 1,0,1,msr0 ; msr0.aovf is set 418 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt is set 419 1.1 christos test_accg_immed 0x80,accg0 420 1.1 christos test_acc_immed 0,acc0 421 1.1 christos test_accg_immed 0x80,accg1 422 1.1 christos test_acc_immed 0,acc1 423 1.1 christos test_accg_immed 0x80,accg2 424 1.1 christos test_acc_immed 0,acc2 425 1.1 christos test_accg_immed 0x80,accg3 426 1.1 christos test_acc_immed 0,acc3 427 1.1 christos 428 1.1 christos ; Positive operands 429 1.1 christos set_spr_immed 0,msr0 430 1.1 christos set_accg_immed 0x00000011,accg0 431 1.1 christos set_acc_immed 0x11111111,acc0 432 1.1 christos set_accg_immed 0x00000022,accg1 433 1.1 christos set_acc_immed 0x22222222,acc1 434 1.1 christos set_accg_immed 0x00000033,accg2 435 1.1 christos set_acc_immed 0x33333333,acc2 436 1.1 christos set_accg_immed 0x00000044,accg3 437 1.1 christos set_acc_immed 0x44444444,acc3 438 1.1 christos set_fr_iimmed 2,3,fr8 ; multiply small numbers 439 1.1 christos set_fr_iimmed 3,2,fr10 440 1.1 christos set_fr_iimmed 0,1,fr9 ; multiply by 0 441 1.1 christos set_fr_iimmed 2,0,fr11 442 1.1 christos cmqmachs fr8,fr10,acc0,cc0,0 443 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 444 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 445 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 446 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 447 1.1 christos test_accg_immed 0x00000011,accg0 448 1.1 christos test_acc_immed 0x11111111,acc0 449 1.1 christos test_accg_immed 0x00000022,accg1 450 1.1 christos test_acc_immed 0x22222222,acc1 451 1.1 christos test_accg_immed 0x00000033,accg2 452 1.1 christos test_acc_immed 0x33333333,acc2 453 1.1 christos test_accg_immed 0x00000044,accg3 454 1.1 christos test_acc_immed 0x44444444,acc3 455 1.1 christos 456 1.1 christos set_fr_iimmed 2,1,fr8 ; multiply by 1 457 1.1 christos set_fr_iimmed 1,2,fr10 458 1.1 christos set_fr_iimmed 0x3fff,2,fr9 ; 15 bit result 459 1.1 christos set_fr_iimmed 2,0x3fff,fr11 460 1.1 christos cmqmachs fr8,fr10,acc0,cc0,0 461 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 462 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 463 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 464 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 465 1.1 christos test_accg_immed 0x00000011,accg0 466 1.1 christos test_acc_immed 0x11111111,acc0 467 1.1 christos test_accg_immed 0x00000022,accg1 468 1.1 christos test_acc_immed 0x22222222,acc1 469 1.1 christos test_accg_immed 0x00000033,accg2 470 1.1 christos test_acc_immed 0x33333333,acc2 471 1.1 christos test_accg_immed 0x00000044,accg3 472 1.1 christos test_acc_immed 0x44444444,acc3 473 1.1 christos 474 1.1 christos set_fr_iimmed 0x4000,2,fr8 ; 16 bit result 475 1.1 christos set_fr_iimmed 2,0x4000,fr10 476 1.1 christos set_fr_iimmed 0x7fff,0x7fff,fr9 ; max positive result 477 1.1 christos set_fr_iimmed 0x7fff,0x7fff,fr11 478 1.1 christos cmqmachs fr8,fr10,acc0,cc0,0 479 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 480 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 481 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 482 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 483 1.1 christos test_accg_immed 0x00000011,accg0 484 1.1 christos test_acc_immed 0x11111111,acc0 485 1.1 christos test_accg_immed 0x00000022,accg1 486 1.1 christos test_acc_immed 0x22222222,acc1 487 1.1 christos test_accg_immed 0x00000033,accg2 488 1.1 christos test_acc_immed 0x33333333,acc2 489 1.1 christos test_accg_immed 0x00000044,accg3 490 1.1 christos test_acc_immed 0x44444444,acc3 491 1.1 christos 492 1.1 christos ; Mixed operands 493 1.1 christos set_fr_iimmed 2,0xfffd,fr8 ; multiply small numbers 494 1.1 christos set_fr_iimmed 0xfffd,2,fr10 495 1.1 christos set_fr_iimmed 0xfffe,1,fr9 ; multiply by 1 496 1.1 christos set_fr_iimmed 1,0xfffe,fr11 497 1.1 christos cmqmachs fr8,fr10,acc0,cc0,0 498 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 499 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 500 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 501 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 502 1.1 christos test_accg_immed 0x00000011,accg0 503 1.1 christos test_acc_immed 0x11111111,acc0 504 1.1 christos test_accg_immed 0x00000022,accg1 505 1.1 christos test_acc_immed 0x22222222,acc1 506 1.1 christos test_accg_immed 0x00000033,accg2 507 1.1 christos test_acc_immed 0x33333333,acc2 508 1.1 christos test_accg_immed 0x00000044,accg3 509 1.1 christos test_acc_immed 0x44444444,acc3 510 1.1 christos 511 1.1 christos set_fr_iimmed 0xfffe,0,fr8 ; multiply by 0 512 1.1 christos set_fr_iimmed 0,0xfffe,fr10 513 1.1 christos set_fr_iimmed 0x2001,0xfffe,fr9 ; 15 bit result 514 1.1 christos set_fr_iimmed 0xfffe,0x2001,fr11 515 1.1 christos cmqmachs fr8,fr10,acc0,cc0,0 516 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 517 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 518 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 519 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 520 1.1 christos test_accg_immed 0x00000011,accg0 521 1.1 christos test_acc_immed 0x11111111,acc0 522 1.1 christos test_accg_immed 0x00000022,accg1 523 1.1 christos test_acc_immed 0x22222222,acc1 524 1.1 christos test_accg_immed 0x00000033,accg2 525 1.1 christos test_acc_immed 0x33333333,acc2 526 1.1 christos test_accg_immed 0x00000044,accg3 527 1.1 christos test_acc_immed 0x44444444,acc3 528 1.1 christos 529 1.1 christos set_fr_iimmed 0x4000,0xfffe,fr8 ; 16 bit result 530 1.1 christos set_fr_iimmed 0xfffe,0x4000,fr10 531 1.1 christos set_fr_iimmed 0x7fff,0x8000,fr9 ; max negative result 532 1.1 christos set_fr_iimmed 0x8000,0x7fff,fr11 533 1.1 christos cmqmachs fr8,fr10,acc0,cc4,0 534 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 535 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 536 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 537 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 538 1.1 christos test_accg_immed 0x00000011,accg0 539 1.1 christos test_acc_immed 0x11111111,acc0 540 1.1 christos test_accg_immed 0x00000022,accg1 541 1.1 christos test_acc_immed 0x22222222,acc1 542 1.1 christos test_accg_immed 0x00000033,accg2 543 1.1 christos test_acc_immed 0x33333333,acc2 544 1.1 christos test_accg_immed 0x00000044,accg3 545 1.1 christos test_acc_immed 0x44444444,acc3 546 1.1 christos 547 1.1 christos ; Negative operands 548 1.1 christos set_fr_iimmed 0xfffe,0xfffd,fr8 ; multiply small numbers 549 1.1 christos set_fr_iimmed 0xfffd,0xfffe,fr10 550 1.1 christos set_fr_iimmed 0xffff,0xfffe,fr9 ; multiply by -1 551 1.1 christos set_fr_iimmed 0xfffe,0xffff,fr11 552 1.1 christos cmqmachs fr8,fr10,acc0,cc4,0 553 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 554 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 555 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 556 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 557 1.1 christos test_accg_immed 0x00000011,accg0 558 1.1 christos test_acc_immed 0x11111111,acc0 559 1.1 christos test_accg_immed 0x00000022,accg1 560 1.1 christos test_acc_immed 0x22222222,acc1 561 1.1 christos test_accg_immed 0x00000033,accg2 562 1.1 christos test_acc_immed 0x33333333,acc2 563 1.1 christos test_accg_immed 0x00000044,accg3 564 1.1 christos test_acc_immed 0x44444444,acc3 565 1.1 christos 566 1.1 christos set_fr_iimmed 0x8001,0x8001,fr8 ; almost max positive result 567 1.1 christos set_fr_iimmed 0x8001,0x8001,fr10 568 1.1 christos set_fr_iimmed 0x8000,0x8000,fr9 ; max positive result 569 1.1 christos set_fr_iimmed 0x8000,0x8000,fr11 570 1.1 christos cmqmachs fr8,fr10,acc0,cc4,0 571 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 572 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 573 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 574 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 575 1.1 christos test_accg_immed 0x00000011,accg0 576 1.1 christos test_acc_immed 0x11111111,acc0 577 1.1 christos test_accg_immed 0x00000022,accg1 578 1.1 christos test_acc_immed 0x22222222,acc1 579 1.1 christos test_accg_immed 0x00000033,accg2 580 1.1 christos test_acc_immed 0x33333333,acc2 581 1.1 christos test_accg_immed 0x00000044,accg3 582 1.1 christos test_acc_immed 0x44444444,acc3 583 1.1 christos 584 1.1 christos set_accg_immed 0x7f,accg0 ; saturation 585 1.1 christos set_acc_immed 0xffffffff,acc0 586 1.1 christos set_accg_immed 0x7f,accg1 587 1.1 christos set_acc_immed 0xffffffff,acc1 588 1.1 christos set_accg_immed 0x7f,accg2 ; saturation 589 1.1 christos set_acc_immed 0xffffffff,acc2 590 1.1 christos set_accg_immed 0x7f,accg3 591 1.1 christos set_acc_immed 0xffffffff,acc3 592 1.1 christos set_fr_iimmed 1,1,fr8 593 1.1 christos set_fr_iimmed 1,1,fr10 594 1.1 christos set_fr_iimmed 0x7fff,0x7fff,fr9 ; saturation 595 1.1 christos set_fr_iimmed 0x7fff,0x7fff,fr11 596 1.1 christos cmqmachs fr8,fr10,acc0,cc4,0 597 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 598 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 599 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 600 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 601 1.1 christos test_accg_immed 0x7f,accg0 ; saturation 602 1.1 christos test_acc_immed 0xffffffff,acc0 603 1.1 christos test_accg_immed 0x7f,accg1 604 1.1 christos test_acc_immed 0xffffffff,acc1 605 1.1 christos test_accg_immed 0x7f,accg2 ; saturation 606 1.1 christos test_acc_immed 0xffffffff,acc2 607 1.1 christos test_accg_immed 0x7f,accg3 608 1.1 christos test_acc_immed 0xffffffff,acc3 609 1.1 christos 610 1.1 christos set_accg_immed 0x80,accg0 ; saturation 611 1.1 christos set_acc_immed 0,acc0 612 1.1 christos set_accg_immed 0x80,accg1 613 1.1 christos set_acc_immed 0,acc1 614 1.1 christos set_accg_immed 0x80,accg2 ; saturation 615 1.1 christos set_acc_immed 0,acc2 616 1.1 christos set_accg_immed 0x80,accg3 617 1.1 christos set_acc_immed 0,acc3 618 1.1 christos set_fr_iimmed 0xffff,0,fr8 619 1.1 christos set_fr_iimmed 1,0xffff,fr10 620 1.1 christos set_fr_iimmed 0x0000,0x8000,fr9 ; saturation 621 1.1 christos set_fr_iimmed 0x7fff,0x7fff,fr11 622 1.1 christos cmqmachs fr8,fr10,acc0,cc4,0 623 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 624 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 625 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 626 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 627 1.1 christos test_accg_immed 0x80,accg0 ; saturation 628 1.1 christos test_acc_immed 0,acc0 629 1.1 christos test_accg_immed 0x80,accg1 630 1.1 christos test_acc_immed 0,acc1 631 1.1 christos test_accg_immed 0x80,accg2 ; saturation 632 1.1 christos test_acc_immed 0,acc2 633 1.1 christos test_accg_immed 0x80,accg3 634 1.1 christos test_acc_immed 0,acc3 635 1.1 christos 636 1.1 christos ; Positive operands 637 1.1 christos set_spr_immed 0,msr0 638 1.1 christos set_accg_immed 0x00000011,accg0 639 1.1 christos set_acc_immed 0x11111111,acc0 640 1.1 christos set_accg_immed 0x00000022,accg1 641 1.1 christos set_acc_immed 0x22222222,acc1 642 1.1 christos set_accg_immed 0x00000033,accg2 643 1.1 christos set_acc_immed 0x33333333,acc2 644 1.1 christos set_accg_immed 0x00000044,accg3 645 1.1 christos set_acc_immed 0x44444444,acc3 646 1.1 christos set_fr_iimmed 2,3,fr8 ; multiply small numbers 647 1.1 christos set_fr_iimmed 3,2,fr10 648 1.1 christos set_fr_iimmed 0,1,fr9 ; multiply by 0 649 1.1 christos set_fr_iimmed 2,0,fr11 650 1.1 christos cmqmachs fr8,fr10,acc0,cc1,1 651 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 652 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 653 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 654 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 655 1.1 christos test_accg_immed 0x00000011,accg0 656 1.1 christos test_acc_immed 0x11111111,acc0 657 1.1 christos test_accg_immed 0x00000022,accg1 658 1.1 christos test_acc_immed 0x22222222,acc1 659 1.1 christos test_accg_immed 0x00000033,accg2 660 1.1 christos test_acc_immed 0x33333333,acc2 661 1.1 christos test_accg_immed 0x00000044,accg3 662 1.1 christos test_acc_immed 0x44444444,acc3 663 1.1 christos 664 1.1 christos set_fr_iimmed 2,1,fr8 ; multiply by 1 665 1.1 christos set_fr_iimmed 1,2,fr10 666 1.1 christos set_fr_iimmed 0x3fff,2,fr9 ; 15 bit result 667 1.1 christos set_fr_iimmed 2,0x3fff,fr11 668 1.1 christos cmqmachs fr8,fr10,acc0,cc1,1 669 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 670 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 671 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 672 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 673 1.1 christos test_accg_immed 0x00000011,accg0 674 1.1 christos test_acc_immed 0x11111111,acc0 675 1.1 christos test_accg_immed 0x00000022,accg1 676 1.1 christos test_acc_immed 0x22222222,acc1 677 1.1 christos test_accg_immed 0x00000033,accg2 678 1.1 christos test_acc_immed 0x33333333,acc2 679 1.1 christos test_accg_immed 0x00000044,accg3 680 1.1 christos test_acc_immed 0x44444444,acc3 681 1.1 christos 682 1.1 christos set_fr_iimmed 0x4000,2,fr8 ; 16 bit result 683 1.1 christos set_fr_iimmed 2,0x4000,fr10 684 1.1 christos set_fr_iimmed 0x7fff,0x7fff,fr9 ; max positive result 685 1.1 christos set_fr_iimmed 0x7fff,0x7fff,fr11 686 1.1 christos cmqmachs fr8,fr10,acc0,cc1,1 687 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 688 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 689 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 690 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 691 1.1 christos test_accg_immed 0x00000011,accg0 692 1.1 christos test_acc_immed 0x11111111,acc0 693 1.1 christos test_accg_immed 0x00000022,accg1 694 1.1 christos test_acc_immed 0x22222222,acc1 695 1.1 christos test_accg_immed 0x00000033,accg2 696 1.1 christos test_acc_immed 0x33333333,acc2 697 1.1 christos test_accg_immed 0x00000044,accg3 698 1.1 christos test_acc_immed 0x44444444,acc3 699 1.1 christos 700 1.1 christos ; Mixed operands 701 1.1 christos set_fr_iimmed 2,0xfffd,fr8 ; multiply small numbers 702 1.1 christos set_fr_iimmed 0xfffd,2,fr10 703 1.1 christos set_fr_iimmed 0xfffe,1,fr9 ; multiply by 1 704 1.1 christos set_fr_iimmed 1,0xfffe,fr11 705 1.1 christos cmqmachs fr8,fr10,acc0,cc1,1 706 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 707 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 708 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 709 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 710 1.1 christos test_accg_immed 0x00000011,accg0 711 1.1 christos test_acc_immed 0x11111111,acc0 712 1.1 christos test_accg_immed 0x00000022,accg1 713 1.1 christos test_acc_immed 0x22222222,acc1 714 1.1 christos test_accg_immed 0x00000033,accg2 715 1.1 christos test_acc_immed 0x33333333,acc2 716 1.1 christos test_accg_immed 0x00000044,accg3 717 1.1 christos test_acc_immed 0x44444444,acc3 718 1.1 christos 719 1.1 christos set_fr_iimmed 0xfffe,0,fr8 ; multiply by 0 720 1.1 christos set_fr_iimmed 0,0xfffe,fr10 721 1.1 christos set_fr_iimmed 0x2001,0xfffe,fr9 ; 15 bit result 722 1.1 christos set_fr_iimmed 0xfffe,0x2001,fr11 723 1.1 christos cmqmachs fr8,fr10,acc0,cc1,1 724 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 725 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 726 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 727 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 728 1.1 christos test_accg_immed 0x00000011,accg0 729 1.1 christos test_acc_immed 0x11111111,acc0 730 1.1 christos test_accg_immed 0x00000022,accg1 731 1.1 christos test_acc_immed 0x22222222,acc1 732 1.1 christos test_accg_immed 0x00000033,accg2 733 1.1 christos test_acc_immed 0x33333333,acc2 734 1.1 christos test_accg_immed 0x00000044,accg3 735 1.1 christos test_acc_immed 0x44444444,acc3 736 1.1 christos 737 1.1 christos set_fr_iimmed 0x4000,0xfffe,fr8 ; 16 bit result 738 1.1 christos set_fr_iimmed 0xfffe,0x4000,fr10 739 1.1 christos set_fr_iimmed 0x7fff,0x8000,fr9 ; max negative result 740 1.1 christos set_fr_iimmed 0x8000,0x7fff,fr11 741 1.1 christos cmqmachs fr8,fr10,acc0,cc5,1 742 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 743 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 744 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 745 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 746 1.1 christos test_accg_immed 0x00000011,accg0 747 1.1 christos test_acc_immed 0x11111111,acc0 748 1.1 christos test_accg_immed 0x00000022,accg1 749 1.1 christos test_acc_immed 0x22222222,acc1 750 1.1 christos test_accg_immed 0x00000033,accg2 751 1.1 christos test_acc_immed 0x33333333,acc2 752 1.1 christos test_accg_immed 0x00000044,accg3 753 1.1 christos test_acc_immed 0x44444444,acc3 754 1.1 christos 755 1.1 christos ; Negative operands 756 1.1 christos set_fr_iimmed 0xfffe,0xfffd,fr8 ; multiply small numbers 757 1.1 christos set_fr_iimmed 0xfffd,0xfffe,fr10 758 1.1 christos set_fr_iimmed 0xffff,0xfffe,fr9 ; multiply by -1 759 1.1 christos set_fr_iimmed 0xfffe,0xffff,fr11 760 1.1 christos cmqmachs fr8,fr10,acc0,cc5,1 761 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 762 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 763 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 764 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 765 1.1 christos test_accg_immed 0x00000011,accg0 766 1.1 christos test_acc_immed 0x11111111,acc0 767 1.1 christos test_accg_immed 0x00000022,accg1 768 1.1 christos test_acc_immed 0x22222222,acc1 769 1.1 christos test_accg_immed 0x00000033,accg2 770 1.1 christos test_acc_immed 0x33333333,acc2 771 1.1 christos test_accg_immed 0x00000044,accg3 772 1.1 christos test_acc_immed 0x44444444,acc3 773 1.1 christos 774 1.1 christos set_fr_iimmed 0x8001,0x8001,fr8 ; almost max positive result 775 1.1 christos set_fr_iimmed 0x8001,0x8001,fr10 776 1.1 christos set_fr_iimmed 0x8000,0x8000,fr9 ; max positive result 777 1.1 christos set_fr_iimmed 0x8000,0x8000,fr11 778 1.1 christos cmqmachs fr8,fr10,acc0,cc5,1 779 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 780 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 781 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 782 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 783 1.1 christos test_accg_immed 0x00000011,accg0 784 1.1 christos test_acc_immed 0x11111111,acc0 785 1.1 christos test_accg_immed 0x00000022,accg1 786 1.1 christos test_acc_immed 0x22222222,acc1 787 1.1 christos test_accg_immed 0x00000033,accg2 788 1.1 christos test_acc_immed 0x33333333,acc2 789 1.1 christos test_accg_immed 0x00000044,accg3 790 1.1 christos test_acc_immed 0x44444444,acc3 791 1.1 christos 792 1.1 christos set_accg_immed 0x7f,accg0 ; saturation 793 1.1 christos set_acc_immed 0xffffffff,acc0 794 1.1 christos set_accg_immed 0x7f,accg1 795 1.1 christos set_acc_immed 0xffffffff,acc1 796 1.1 christos set_accg_immed 0x7f,accg2 ; saturation 797 1.1 christos set_acc_immed 0xffffffff,acc2 798 1.1 christos set_accg_immed 0x7f,accg3 799 1.1 christos set_acc_immed 0xffffffff,acc3 800 1.1 christos set_fr_iimmed 1,1,fr8 801 1.1 christos set_fr_iimmed 1,1,fr10 802 1.1 christos set_fr_iimmed 0x7fff,0x7fff,fr9 ; saturation 803 1.1 christos set_fr_iimmed 0x7fff,0x7fff,fr11 804 1.1 christos cmqmachs fr8,fr10,acc0,cc5,1 805 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 806 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 807 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 808 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 809 1.1 christos test_accg_immed 0x7f,accg0 ; saturation 810 1.1 christos test_acc_immed 0xffffffff,acc0 811 1.1 christos test_accg_immed 0x7f,accg1 812 1.1 christos test_acc_immed 0xffffffff,acc1 813 1.1 christos test_accg_immed 0x7f,accg2 ; saturation 814 1.1 christos test_acc_immed 0xffffffff,acc2 815 1.1 christos test_accg_immed 0x7f,accg3 816 1.1 christos test_acc_immed 0xffffffff,acc3 817 1.1 christos 818 1.1 christos set_accg_immed 0x80,accg0 ; saturation 819 1.1 christos set_acc_immed 0,acc0 820 1.1 christos set_accg_immed 0x80,accg1 821 1.1 christos set_acc_immed 0,acc1 822 1.1 christos set_accg_immed 0x80,accg2 ; saturation 823 1.1 christos set_acc_immed 0,acc2 824 1.1 christos set_accg_immed 0x80,accg3 825 1.1 christos set_acc_immed 0,acc3 826 1.1 christos set_fr_iimmed 0xffff,0,fr8 827 1.1 christos set_fr_iimmed 1,0xffff,fr10 828 1.1 christos set_fr_iimmed 0x0000,0x8000,fr9 ; saturation 829 1.1 christos set_fr_iimmed 0x7fff,0x7fff,fr11 830 1.1 christos cmqmachs fr8,fr10,acc0,cc5,1 831 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 832 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 833 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 834 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 835 1.1 christos test_accg_immed 0x80,accg0 ; saturation 836 1.1 christos test_acc_immed 0,acc0 837 1.1 christos test_accg_immed 0x80,accg1 838 1.1 christos test_acc_immed 0,acc1 839 1.1 christos test_accg_immed 0x80,accg2 ; saturation 840 1.1 christos test_acc_immed 0,acc2 841 1.1 christos test_accg_immed 0x80,accg3 842 1.1 christos test_acc_immed 0,acc3 843 1.1 christos 844 1.1 christos ; Positive operands 845 1.1 christos set_spr_immed 0,msr0 846 1.1 christos set_accg_immed 0x00000011,accg0 847 1.1 christos set_acc_immed 0x11111111,acc0 848 1.1 christos set_accg_immed 0x00000022,accg1 849 1.1 christos set_acc_immed 0x22222222,acc1 850 1.1 christos set_accg_immed 0x00000033,accg2 851 1.1 christos set_acc_immed 0x33333333,acc2 852 1.1 christos set_accg_immed 0x00000044,accg3 853 1.1 christos set_acc_immed 0x44444444,acc3 854 1.1 christos set_fr_iimmed 2,3,fr8 ; multiply small numbers 855 1.1 christos set_fr_iimmed 3,2,fr10 856 1.1 christos set_fr_iimmed 0,1,fr9 ; multiply by 0 857 1.1 christos set_fr_iimmed 2,0,fr11 858 1.1 christos cmqmachs fr8,fr10,acc0,cc2,1 859 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 860 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 861 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 862 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 863 1.1 christos test_accg_immed 0x00000011,accg0 864 1.1 christos test_acc_immed 0x11111111,acc0 865 1.1 christos test_accg_immed 0x00000022,accg1 866 1.1 christos test_acc_immed 0x22222222,acc1 867 1.1 christos test_accg_immed 0x00000033,accg2 868 1.1 christos test_acc_immed 0x33333333,acc2 869 1.1 christos test_accg_immed 0x00000044,accg3 870 1.1 christos test_acc_immed 0x44444444,acc3 871 1.1 christos 872 1.1 christos set_fr_iimmed 2,1,fr8 ; multiply by 1 873 1.1 christos set_fr_iimmed 1,2,fr10 874 1.1 christos set_fr_iimmed 0x3fff,2,fr9 ; 15 bit result 875 1.1 christos set_fr_iimmed 2,0x3fff,fr11 876 1.1 christos cmqmachs fr8,fr10,acc0,cc2,1 877 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 878 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 879 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 880 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 881 1.1 christos test_accg_immed 0x00000011,accg0 882 1.1 christos test_acc_immed 0x11111111,acc0 883 1.1 christos test_accg_immed 0x00000022,accg1 884 1.1 christos test_acc_immed 0x22222222,acc1 885 1.1 christos test_accg_immed 0x00000033,accg2 886 1.1 christos test_acc_immed 0x33333333,acc2 887 1.1 christos test_accg_immed 0x00000044,accg3 888 1.1 christos test_acc_immed 0x44444444,acc3 889 1.1 christos 890 1.1 christos set_fr_iimmed 0x4000,2,fr8 ; 16 bit result 891 1.1 christos set_fr_iimmed 2,0x4000,fr10 892 1.1 christos set_fr_iimmed 0x7fff,0x7fff,fr9 ; max positive result 893 1.1 christos set_fr_iimmed 0x7fff,0x7fff,fr11 894 1.1 christos cmqmachs fr8,fr10,acc0,cc2,1 895 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 896 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 897 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 898 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 899 1.1 christos test_accg_immed 0x00000011,accg0 900 1.1 christos test_acc_immed 0x11111111,acc0 901 1.1 christos test_accg_immed 0x00000022,accg1 902 1.1 christos test_acc_immed 0x22222222,acc1 903 1.1 christos test_accg_immed 0x00000033,accg2 904 1.1 christos test_acc_immed 0x33333333,acc2 905 1.1 christos test_accg_immed 0x00000044,accg3 906 1.1 christos test_acc_immed 0x44444444,acc3 907 1.1 christos 908 1.1 christos ; Mixed operands 909 1.1 christos set_fr_iimmed 2,0xfffd,fr8 ; multiply small numbers 910 1.1 christos set_fr_iimmed 0xfffd,2,fr10 911 1.1 christos set_fr_iimmed 0xfffe,1,fr9 ; multiply by 1 912 1.1 christos set_fr_iimmed 1,0xfffe,fr11 913 1.1 christos cmqmachs fr8,fr10,acc0,cc2,1 914 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 915 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 916 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 917 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 918 1.1 christos test_accg_immed 0x00000011,accg0 919 1.1 christos test_acc_immed 0x11111111,acc0 920 1.1 christos test_accg_immed 0x00000022,accg1 921 1.1 christos test_acc_immed 0x22222222,acc1 922 1.1 christos test_accg_immed 0x00000033,accg2 923 1.1 christos test_acc_immed 0x33333333,acc2 924 1.1 christos test_accg_immed 0x00000044,accg3 925 1.1 christos test_acc_immed 0x44444444,acc3 926 1.1 christos 927 1.1 christos set_fr_iimmed 0xfffe,0,fr8 ; multiply by 0 928 1.1 christos set_fr_iimmed 0,0xfffe,fr10 929 1.1 christos set_fr_iimmed 0x2001,0xfffe,fr9 ; 15 bit result 930 1.1 christos set_fr_iimmed 0xfffe,0x2001,fr11 931 1.1 christos cmqmachs fr8,fr10,acc0,cc2,1 932 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 933 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 934 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 935 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 936 1.1 christos test_accg_immed 0x00000011,accg0 937 1.1 christos test_acc_immed 0x11111111,acc0 938 1.1 christos test_accg_immed 0x00000022,accg1 939 1.1 christos test_acc_immed 0x22222222,acc1 940 1.1 christos test_accg_immed 0x00000033,accg2 941 1.1 christos test_acc_immed 0x33333333,acc2 942 1.1 christos test_accg_immed 0x00000044,accg3 943 1.1 christos test_acc_immed 0x44444444,acc3 944 1.1 christos 945 1.1 christos set_fr_iimmed 0x4000,0xfffe,fr8 ; 16 bit result 946 1.1 christos set_fr_iimmed 0xfffe,0x4000,fr10 947 1.1 christos set_fr_iimmed 0x7fff,0x8000,fr9 ; max negative result 948 1.1 christos set_fr_iimmed 0x8000,0x7fff,fr11 949 1.1 christos cmqmachs fr8,fr10,acc0,cc6,1 950 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 951 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 952 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 953 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 954 1.1 christos test_accg_immed 0x00000011,accg0 955 1.1 christos test_acc_immed 0x11111111,acc0 956 1.1 christos test_accg_immed 0x00000022,accg1 957 1.1 christos test_acc_immed 0x22222222,acc1 958 1.1 christos test_accg_immed 0x00000033,accg2 959 1.1 christos test_acc_immed 0x33333333,acc2 960 1.1 christos test_accg_immed 0x00000044,accg3 961 1.1 christos test_acc_immed 0x44444444,acc3 962 1.1 christos 963 1.1 christos ; Negative operands 964 1.1 christos set_fr_iimmed 0xfffe,0xfffd,fr8 ; multiply small numbers 965 1.1 christos set_fr_iimmed 0xfffd,0xfffe,fr10 966 1.1 christos set_fr_iimmed 0xffff,0xfffe,fr9 ; multiply by -1 967 1.1 christos set_fr_iimmed 0xfffe,0xffff,fr11 968 1.1 christos cmqmachs fr8,fr10,acc0,cc6,1 969 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 970 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 971 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 972 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 973 1.1 christos test_accg_immed 0x00000011,accg0 974 1.1 christos test_acc_immed 0x11111111,acc0 975 1.1 christos test_accg_immed 0x00000022,accg1 976 1.1 christos test_acc_immed 0x22222222,acc1 977 1.1 christos test_accg_immed 0x00000033,accg2 978 1.1 christos test_acc_immed 0x33333333,acc2 979 1.1 christos test_accg_immed 0x00000044,accg3 980 1.1 christos test_acc_immed 0x44444444,acc3 981 1.1 christos 982 1.1 christos set_fr_iimmed 0x8001,0x8001,fr8 ; almost max positive result 983 1.1 christos set_fr_iimmed 0x8001,0x8001,fr10 984 1.1 christos set_fr_iimmed 0x8000,0x8000,fr9 ; max positive result 985 1.1 christos set_fr_iimmed 0x8000,0x8000,fr11 986 1.1 christos cmqmachs fr8,fr10,acc0,cc6,1 987 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 988 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 989 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 990 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 991 1.1 christos test_accg_immed 0x00000011,accg0 992 1.1 christos test_acc_immed 0x11111111,acc0 993 1.1 christos test_accg_immed 0x00000022,accg1 994 1.1 christos test_acc_immed 0x22222222,acc1 995 1.1 christos test_accg_immed 0x00000033,accg2 996 1.1 christos test_acc_immed 0x33333333,acc2 997 1.1 christos test_accg_immed 0x00000044,accg3 998 1.1 christos test_acc_immed 0x44444444,acc3 999 1.1 christos 1000 1.1 christos set_accg_immed 0x7f,accg0 ; saturation 1001 1.1 christos set_acc_immed 0xffffffff,acc0 1002 1.1 christos set_accg_immed 0x7f,accg1 1003 1.1 christos set_acc_immed 0xffffffff,acc1 1004 1.1 christos set_accg_immed 0x7f,accg2 ; saturation 1005 1.1 christos set_acc_immed 0xffffffff,acc2 1006 1.1 christos set_accg_immed 0x7f,accg3 1007 1.1 christos set_acc_immed 0xffffffff,acc3 1008 1.1 christos set_fr_iimmed 1,1,fr8 1009 1.1 christos set_fr_iimmed 1,1,fr10 1010 1.1 christos set_fr_iimmed 0x7fff,0x7fff,fr9 ; saturation 1011 1.1 christos set_fr_iimmed 0x7fff,0x7fff,fr11 1012 1.1 christos cmqmachs fr8,fr10,acc0,cc6,1 1013 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 1014 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 1015 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 1016 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 1017 1.1 christos test_accg_immed 0x7f,accg0 ; saturation 1018 1.1 christos test_acc_immed 0xffffffff,acc0 1019 1.1 christos test_accg_immed 0x7f,accg1 1020 1.1 christos test_acc_immed 0xffffffff,acc1 1021 1.1 christos test_accg_immed 0x7f,accg2 ; saturation 1022 1.1 christos test_acc_immed 0xffffffff,acc2 1023 1.1 christos test_accg_immed 0x7f,accg3 1024 1.1 christos test_acc_immed 0xffffffff,acc3 1025 1.1 christos 1026 1.1 christos set_accg_immed 0x80,accg0 ; saturation 1027 1.1 christos set_acc_immed 0,acc0 1028 1.1 christos set_accg_immed 0x80,accg1 1029 1.1 christos set_acc_immed 0,acc1 1030 1.1 christos set_accg_immed 0x80,accg2 ; saturation 1031 1.1 christos set_acc_immed 0,acc2 1032 1.1 christos set_accg_immed 0x80,accg3 1033 1.1 christos set_acc_immed 0,acc3 1034 1.1 christos set_fr_iimmed 0xffff,0,fr8 1035 1.1 christos set_fr_iimmed 1,0xffff,fr10 1036 1.1 christos set_fr_iimmed 0x0000,0x8000,fr9 ; saturation 1037 1.1 christos set_fr_iimmed 0x7fff,0x7fff,fr11 1038 1.1 christos cmqmachs fr8,fr10,acc0,cc6,1 1039 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 1040 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 1041 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 1042 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 1043 1.1 christos test_accg_immed 0x80,accg0 ; saturation 1044 1.1 christos test_acc_immed 0,acc0 1045 1.1 christos test_accg_immed 0x80,accg1 1046 1.1 christos test_acc_immed 0,acc1 1047 1.1 christos test_accg_immed 0x80,accg2 ; saturation 1048 1.1 christos test_acc_immed 0,acc2 1049 1.1 christos test_accg_immed 0x80,accg3 1050 1.1 christos test_acc_immed 0,acc3 1051 1.1 christos ; 1052 1.1 christos ; Positive operands 1053 1.1 christos set_spr_immed 0,msr0 1054 1.1 christos set_accg_immed 0x00000011,accg0 1055 1.1 christos set_acc_immed 0x11111111,acc0 1056 1.1 christos set_accg_immed 0x00000022,accg1 1057 1.1 christos set_acc_immed 0x22222222,acc1 1058 1.1 christos set_accg_immed 0x00000033,accg2 1059 1.1 christos set_acc_immed 0x33333333,acc2 1060 1.1 christos set_accg_immed 0x00000044,accg3 1061 1.1 christos set_acc_immed 0x44444444,acc3 1062 1.1 christos set_fr_iimmed 2,3,fr8 ; multiply small numbers 1063 1.1 christos set_fr_iimmed 3,2,fr10 1064 1.1 christos set_fr_iimmed 0,1,fr9 ; multiply by 0 1065 1.1 christos set_fr_iimmed 2,0,fr11 1066 1.1 christos cmqmachs fr8,fr10,acc0,cc3,1 1067 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 1068 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 1069 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 1070 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 1071 1.1 christos test_accg_immed 0x00000011,accg0 1072 1.1 christos test_acc_immed 0x11111111,acc0 1073 1.1 christos test_accg_immed 0x00000022,accg1 1074 1.1 christos test_acc_immed 0x22222222,acc1 1075 1.1 christos test_accg_immed 0x00000033,accg2 1076 1.1 christos test_acc_immed 0x33333333,acc2 1077 1.1 christos test_accg_immed 0x00000044,accg3 1078 1.1 christos test_acc_immed 0x44444444,acc3 1079 1.1 christos 1080 1.1 christos set_fr_iimmed 2,1,fr8 ; multiply by 1 1081 1.1 christos set_fr_iimmed 1,2,fr10 1082 1.1 christos set_fr_iimmed 0x3fff,2,fr9 ; 15 bit result 1083 1.1 christos set_fr_iimmed 2,0x3fff,fr11 1084 1.1 christos cmqmachs fr8,fr10,acc0,cc3,1 1085 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 1086 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 1087 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 1088 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 1089 1.1 christos test_accg_immed 0x00000011,accg0 1090 1.1 christos test_acc_immed 0x11111111,acc0 1091 1.1 christos test_accg_immed 0x00000022,accg1 1092 1.1 christos test_acc_immed 0x22222222,acc1 1093 1.1 christos test_accg_immed 0x00000033,accg2 1094 1.1 christos test_acc_immed 0x33333333,acc2 1095 1.1 christos test_accg_immed 0x00000044,accg3 1096 1.1 christos test_acc_immed 0x44444444,acc3 1097 1.1 christos 1098 1.1 christos set_fr_iimmed 0x4000,2,fr8 ; 16 bit result 1099 1.1 christos set_fr_iimmed 2,0x4000,fr10 1100 1.1 christos set_fr_iimmed 0x7fff,0x7fff,fr9 ; max positive result 1101 1.1 christos set_fr_iimmed 0x7fff,0x7fff,fr11 1102 1.1 christos cmqmachs fr8,fr10,acc0,cc3,1 1103 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 1104 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 1105 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 1106 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 1107 1.1 christos test_accg_immed 0x00000011,accg0 1108 1.1 christos test_acc_immed 0x11111111,acc0 1109 1.1 christos test_accg_immed 0x00000022,accg1 1110 1.1 christos test_acc_immed 0x22222222,acc1 1111 1.1 christos test_accg_immed 0x00000033,accg2 1112 1.1 christos test_acc_immed 0x33333333,acc2 1113 1.1 christos test_accg_immed 0x00000044,accg3 1114 1.1 christos test_acc_immed 0x44444444,acc3 1115 1.1 christos 1116 1.1 christos ; Mixed operands 1117 1.1 christos set_fr_iimmed 2,0xfffd,fr8 ; multiply small numbers 1118 1.1 christos set_fr_iimmed 0xfffd,2,fr10 1119 1.1 christos set_fr_iimmed 0xfffe,1,fr9 ; multiply by 1 1120 1.1 christos set_fr_iimmed 1,0xfffe,fr11 1121 1.1 christos cmqmachs fr8,fr10,acc0,cc3,1 1122 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 1123 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 1124 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 1125 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 1126 1.1 christos test_accg_immed 0x00000011,accg0 1127 1.1 christos test_acc_immed 0x11111111,acc0 1128 1.1 christos test_accg_immed 0x00000022,accg1 1129 1.1 christos test_acc_immed 0x22222222,acc1 1130 1.1 christos test_accg_immed 0x00000033,accg2 1131 1.1 christos test_acc_immed 0x33333333,acc2 1132 1.1 christos test_accg_immed 0x00000044,accg3 1133 1.1 christos test_acc_immed 0x44444444,acc3 1134 1.1 christos 1135 1.1 christos set_fr_iimmed 0xfffe,0,fr8 ; multiply by 0 1136 1.1 christos set_fr_iimmed 0,0xfffe,fr10 1137 1.1 christos set_fr_iimmed 0x2001,0xfffe,fr9 ; 15 bit result 1138 1.1 christos set_fr_iimmed 0xfffe,0x2001,fr11 1139 1.1 christos cmqmachs fr8,fr10,acc0,cc3,1 1140 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 1141 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 1142 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 1143 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 1144 1.1 christos test_accg_immed 0x00000011,accg0 1145 1.1 christos test_acc_immed 0x11111111,acc0 1146 1.1 christos test_accg_immed 0x00000022,accg1 1147 1.1 christos test_acc_immed 0x22222222,acc1 1148 1.1 christos test_accg_immed 0x00000033,accg2 1149 1.1 christos test_acc_immed 0x33333333,acc2 1150 1.1 christos test_accg_immed 0x00000044,accg3 1151 1.1 christos test_acc_immed 0x44444444,acc3 1152 1.1 christos 1153 1.1 christos set_fr_iimmed 0x4000,0xfffe,fr8 ; 16 bit result 1154 1.1 christos set_fr_iimmed 0xfffe,0x4000,fr10 1155 1.1 christos set_fr_iimmed 0x7fff,0x8000,fr9 ; max negative result 1156 1.1 christos set_fr_iimmed 0x8000,0x7fff,fr11 1157 1.1 christos cmqmachs fr8,fr10,acc0,cc7,1 1158 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 1159 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 1160 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 1161 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 1162 1.1 christos test_accg_immed 0x00000011,accg0 1163 1.1 christos test_acc_immed 0x11111111,acc0 1164 1.1 christos test_accg_immed 0x00000022,accg1 1165 1.1 christos test_acc_immed 0x22222222,acc1 1166 1.1 christos test_accg_immed 0x00000033,accg2 1167 1.1 christos test_acc_immed 0x33333333,acc2 1168 1.1 christos test_accg_immed 0x00000044,accg3 1169 1.1 christos test_acc_immed 0x44444444,acc3 1170 1.1 christos 1171 1.1 christos ; Negative operands 1172 1.1 christos set_fr_iimmed 0xfffe,0xfffd,fr8 ; multiply small numbers 1173 1.1 christos set_fr_iimmed 0xfffd,0xfffe,fr10 1174 1.1 christos set_fr_iimmed 0xffff,0xfffe,fr9 ; multiply by -1 1175 1.1 christos set_fr_iimmed 0xfffe,0xffff,fr11 1176 1.1 christos cmqmachs fr8,fr10,acc0,cc7,1 1177 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 1178 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 1179 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 1180 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 1181 1.1 christos test_accg_immed 0x00000011,accg0 1182 1.1 christos test_acc_immed 0x11111111,acc0 1183 1.1 christos test_accg_immed 0x00000022,accg1 1184 1.1 christos test_acc_immed 0x22222222,acc1 1185 1.1 christos test_accg_immed 0x00000033,accg2 1186 1.1 christos test_acc_immed 0x33333333,acc2 1187 1.1 christos test_accg_immed 0x00000044,accg3 1188 1.1 christos test_acc_immed 0x44444444,acc3 1189 1.1 christos 1190 1.1 christos set_fr_iimmed 0x8001,0x8001,fr8 ; almost max positive result 1191 1.1 christos set_fr_iimmed 0x8001,0x8001,fr10 1192 1.1 christos set_fr_iimmed 0x8000,0x8000,fr9 ; max positive result 1193 1.1 christos set_fr_iimmed 0x8000,0x8000,fr11 1194 1.1 christos cmqmachs fr8,fr10,acc0,cc7,1 1195 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 1196 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 1197 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 1198 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 1199 1.1 christos test_accg_immed 0x00000011,accg0 1200 1.1 christos test_acc_immed 0x11111111,acc0 1201 1.1 christos test_accg_immed 0x00000022,accg1 1202 1.1 christos test_acc_immed 0x22222222,acc1 1203 1.1 christos test_accg_immed 0x00000033,accg2 1204 1.1 christos test_acc_immed 0x33333333,acc2 1205 1.1 christos test_accg_immed 0x00000044,accg3 1206 1.1 christos test_acc_immed 0x44444444,acc3 1207 1.1 christos 1208 1.1 christos set_accg_immed 0x7f,accg0 ; saturation 1209 1.1 christos set_acc_immed 0xffffffff,acc0 1210 1.1 christos set_accg_immed 0x7f,accg1 1211 1.1 christos set_acc_immed 0xffffffff,acc1 1212 1.1 christos set_accg_immed 0x7f,accg2 ; saturation 1213 1.1 christos set_acc_immed 0xffffffff,acc2 1214 1.1 christos set_accg_immed 0x7f,accg3 1215 1.1 christos set_acc_immed 0xffffffff,acc3 1216 1.1 christos set_fr_iimmed 1,1,fr8 1217 1.1 christos set_fr_iimmed 1,1,fr10 1218 1.1 christos set_fr_iimmed 0x7fff,0x7fff,fr9 ; saturation 1219 1.1 christos set_fr_iimmed 0x7fff,0x7fff,fr11 1220 1.1 christos cmqmachs fr8,fr10,acc0,cc7,1 1221 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 1222 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 1223 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 1224 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 1225 1.1 christos test_accg_immed 0x7f,accg0 ; saturation 1226 1.1 christos test_acc_immed 0xffffffff,acc0 1227 1.1 christos test_accg_immed 0x7f,accg1 1228 1.1 christos test_acc_immed 0xffffffff,acc1 1229 1.1 christos test_accg_immed 0x7f,accg2 ; saturation 1230 1.1 christos test_acc_immed 0xffffffff,acc2 1231 1.1 christos test_accg_immed 0x7f,accg3 1232 1.1 christos test_acc_immed 0xffffffff,acc3 1233 1.1 christos 1234 1.1 christos set_accg_immed 0x80,accg0 ; saturation 1235 1.1 christos set_acc_immed 0,acc0 1236 1.1 christos set_accg_immed 0x80,accg1 1237 1.1 christos set_acc_immed 0,acc1 1238 1.1 christos set_accg_immed 0x80,accg2 ; saturation 1239 1.1 christos set_acc_immed 0,acc2 1240 1.1 christos set_accg_immed 0x80,accg3 1241 1.1 christos set_acc_immed 0,acc3 1242 1.1 christos set_fr_iimmed 0xffff,0,fr8 1243 1.1 christos set_fr_iimmed 1,0xffff,fr10 1244 1.1 christos set_fr_iimmed 0x0000,0x8000,fr9 ; saturation 1245 1.1 christos set_fr_iimmed 0x7fff,0x7fff,fr11 1246 1.1 christos cmqmachs fr8,fr10,acc0,cc7,1 1247 1.1 christos test_spr_bits 0x3c,2,0,msr0 ; msr0.sie is clear 1248 1.1 christos test_spr_bits 2,1,0,msr0 ; msr0.ovf not set 1249 1.1 christos test_spr_bits 1,0,0,msr0 ; msr0.aovf not set 1250 1.1 christos test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt always set 1251 1.1 christos test_accg_immed 0x80,accg0 ; saturation 1252 1.1 christos test_acc_immed 0,acc0 1253 1.1 christos test_accg_immed 0x80,accg1 1254 1.1 christos test_acc_immed 0,acc1 1255 1.1 christos test_accg_immed 0x80,accg2 ; saturation 1256 1.1 christos test_acc_immed 0,acc2 1257 1.1 christos test_accg_immed 0x80,accg3 1258 1.1 christos test_acc_immed 0,acc3 1259 1.1 christos 1260 1.1 christos pass 1261 1.1 christos 1262 1.1 christos 1263