]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - sim/mn10300/am33-2.igen
gas: ginsn: remove unnecessary buffer allocation and free
[thirdparty/binutils-gdb.git] / sim / mn10300 / am33-2.igen
1 // data cache pre-fetch:
2
3 // 1111 1001 1010 0110 Rm.. 0000; dcpf (Rm)
4 8.0xf9+8.0xa6+4.RN2,4.0000:D1a:::dcpf
5 "dcpf"
6 *am33_2
7 {
8 int srcreg;
9
10 PC = cia;
11
12 srcreg = translate_rreg (SD_, RN2);
13 load_word (State.regs[srcreg]);
14 }
15
16 // 1111 1001 1010 0111 0000 0000; dcpf (sp)
17 8.0xf9+8.0xa7+8.0x00:D1b:::dcpf
18 "dcpf"
19 *am33_2
20 {
21 PC = cia;
22
23 load_word (SP);
24 }
25
26 // 1111 1011 1010 0110 Ri.. Rm.. 0000 0000; dcpf (Ri,Rm)
27 8.0xfb+8.0xa6+4.RN2,4.RN0+8.0x00:D2a:::dcpf
28 "dcpf"
29 *am33_2
30 {
31 int srci, srcm;
32
33 PC = cia;
34
35 srci = translate_rreg (SD_, RN2);
36 srcm = translate_rreg (SD_, RN0);
37
38 load_word (State.regs[srci] + State.regs[srcm]);
39 }
40
41 // 1111 1011 1010 0111 Rm.. 0000 IMM8; dcpf (d8,Rm)
42 8.0xfb+8.0xa7+4.RN2,4.0000+8.IMM8:D2b:::dcpf
43 "dcpf"
44 *am33_2
45 {
46 int srcreg;
47
48 PC = cia;
49
50 srcreg = translate_rreg (SD_, RN2);
51
52 load_word (State.regs[srcreg] + EXTEND8 (IMM8));
53 }
54
55 // 1111 1101 1010 0111 Rm.. 0000 IMM24; dcpf (d24,Rm)
56 8.0xfd+8.0xa7+4.RN2,4.0000+8.IMM24A+8.IMM24B+8.IMM24C:D4a:::dcpf
57 "dcpf"
58 *am33_2
59 {
60 int srcreg;
61
62 PC = cia;
63
64 srcreg = translate_rreg (SD_, RN2);
65
66 load_word (State.regs[srcreg] + EXTEND24 (FETCH24 (IMM24A,
67 IMM24B, IMM24C)));
68 }
69
70 // 1111 1110 0100 0110 Rm.. 0000 IMM32; dcpf (d32,Rm)
71 8.0xfe+8.0x46+4.RN2,4.0000+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5a:::dcpf
72 "dcpf"
73 *am33_2
74 {
75 int srcreg;
76
77 PC = cia;
78
79 srcreg = translate_rreg (SD_, RN2);
80
81 load_word (State.regs[srcreg]
82 + FETCH32 (IMM32A, IMM32B, IMM32C, IMM32D));
83 }
84
85 // bit operations with imm8,(abs16) addressing mode:
86
87 // 1111 1110 1000 0010 ABS16 IMM8; btst imm8,(abs16)
88 8.0xfe+8.0x82+8.IMM16A+8.IMM16B+8.IMM8:D3:::btst
89 "btst"
90 *am33_2
91 {
92 PC = cia;
93 genericBtst (IMM8, FETCH16 (IMM16A, IMM16B));
94 }
95
96 // 1111 1110 1000 0000 ABS16 IMM8; bset imm8,(abs16)
97 8.0xfe+8.0x80+8.IMM16A+8.IMM16B+8.IMM8:D3:::bset
98 "bset"
99 *am33_2
100 {
101 uint32_t temp;
102 int z;
103
104 PC = cia;
105 temp = load_byte (FETCH16 (IMM16A, IMM16B));
106 z = (temp & IMM8) == 0;
107 temp |= IMM8;
108 store_byte (FETCH16 (IMM16A, IMM16B), temp);
109 PSW &= ~(PSW_Z | PSW_N | PSW_C | PSW_V);
110 PSW |= (z ? PSW_Z : 0);
111 }
112
113 // 1111 1110 1000 0001 ABS16 IMM8; bclr imm8,(abs16)
114 8.0xfe+8.0x81+8.IMM16A+8.IMM16B+8.IMM8:D3:::bclr
115 "bclr"
116 *am33_2
117 {
118 uint32_t temp;
119 int z;
120
121 PC = cia;
122 temp = load_byte (FETCH16 (IMM16A, IMM16B));
123 z = (temp & IMM8) == 0;
124 temp = temp & ~(IMM8);
125 store_byte (FETCH16 (IMM16A, IMM16B), temp);
126 PSW &= ~(PSW_Z | PSW_N | PSW_C | PSW_V);
127 PSW |= (z ? PSW_Z : 0);
128 }
129
130 // single precision fmov:
131
132 // 1111 1001 0010 000X Rm.. Sn..; fmov (Rm),FSn
133 8.0xf9+4.2,3.0,1.X+4.Rm,4.Sn:D1a:::fmov
134 "fmov"
135 *am33_2
136 {
137 PC = cia;
138
139 if (FPU_DISABLED)
140 fpu_disabled_exception (SD, CPU, cia);
141 else
142 {
143 int reg = translate_rreg (SD_, Rm);
144 XS2FS (X,Sn) = load_word (State.regs[reg]);
145 }
146 }
147
148 // 1111 1001 0010 001X Rm.. Sn..; fmov (Rm+),FSn
149 8.0xf9+4.2,3.1,1.X+4.Rm,4.Sn:D1b:::fmov
150 "fmov"
151 *am33_2
152 {
153 PC = cia;
154
155 if (FPU_DISABLED)
156 fpu_disabled_exception (SD, CPU, cia);
157 else
158 {
159 int reg = translate_rreg (SD_, Rm);
160 XS2FS (X,Sn) = load_word (State.regs[reg]);
161 State.regs[reg] += 4;
162 }
163 }
164
165 // 1111 1001 0010 010X ---- Sn..; fmov (SP),FSn
166 8.0xf9+4.2,3.2,1.X+4.0,4.Sn:D1c:::fmov
167 "fmov"
168 *am33_2
169 {
170 PC = cia;
171
172 if (FPU_DISABLED)
173 fpu_disabled_exception (SD, CPU, cia);
174 else
175 {
176 int reg = REG_SP;
177 XS2FS (X,Sn) = load_word (State.regs[reg]);
178 }
179 }
180
181 // 1111 1001 0010 011X Rm.. Sn..; fmov Rm,FSn
182 8.0xf9+4.2,3.3,1.X+4.Rm,4.Sn:D1d:::fmov
183 "fmov"
184 *am33_2
185 {
186 PC = cia;
187
188 if (FPU_DISABLED)
189 fpu_disabled_exception (SD, CPU, cia);
190 else
191 {
192 int reg = translate_rreg (SD_, Rm);
193 XS2FS (X,Sn) = State.regs[reg];
194 }
195 }
196
197 // 1111 1001 0011 00Y0 Sm.. Rn..; fmov FSm,(Rn)
198 8.0xf9+4.3,2.0,1.Y,1.0+4.Sm,4.Rn:D1e:::fmov
199 "fmov"
200 *am33_2
201 {
202 PC = cia;
203
204 if (FPU_DISABLED)
205 fpu_disabled_exception (SD, CPU, cia);
206 else
207 {
208 int reg = translate_rreg (SD_, Rn);
209 store_word (State.regs[reg], XS2FS (Y,Sm));
210 }
211 }
212
213 // 1111 1001 0011 00Y1 Sm.. Rn..; fmov FSm,(Rn+)
214 8.0xf9+4.3,2.0,1.Y,1.1+4.Sm,4.Rn:D1f:::fmov
215 "fmov"
216 *am33_2
217 {
218 PC = cia;
219
220 if (FPU_DISABLED)
221 fpu_disabled_exception (SD, CPU, cia);
222 else
223 {
224 int reg = translate_rreg (SD_, Rn);
225 store_word (State.regs[reg], XS2FS (Y,Sm));
226 State.regs[reg] += 4;
227 }
228 }
229
230 // 1111 1001 0011 01Y0 Sm.. ----; fmov FSm,(SP)
231 8.0xf9+4.3,2.1,1.Y,1.0+4.Sm,4.0:D1g:::fmov
232 "fmov"
233 *am33_2
234 {
235 PC = cia;
236
237 if (FPU_DISABLED)
238 fpu_disabled_exception (SD, CPU, cia);
239 else
240 {
241 int reg = REG_SP;
242 store_word (State.regs[reg], XS2FS (Y,Sm));
243 }
244 }
245
246 // 1111 1001 0011 01Y1 Sm.. Rn..; fmov FSm,Rn
247 8.0xf9+4.3,2.1,1.Y,1.1+4.Sm,4.Rn:D1h:::fmov
248 "fmov"
249 *am33_2
250 {
251 PC = cia;
252
253 if (FPU_DISABLED)
254 fpu_disabled_exception (SD, CPU, cia);
255 else
256 {
257 int reg = translate_rreg (SD_, Rn);
258 State.regs[reg] = XS2FS (Y,Sm);
259 }
260 }
261
262 // 1111 1001 0100 00YX Sm.. Sn..; fmov FSm,FSn
263 8.0xf9+4.4,2.0,1.Y,1.X+4.Sm,4.Sn:D1i:::fmov
264 "fmov"
265 *am33_2
266 {
267 PC = cia;
268
269 if (FPU_DISABLED)
270 fpu_disabled_exception (SD, CPU, cia);
271 else
272 XS2FS (X,Sn) = XS2FS (Y,Sm);
273 }
274
275 // 1111 1011 0010 000X Rm.. Sn.. d8; fmov (d8,Rm),FSn
276 8.0xfb+4.2,3.0,1.X+4.Rm,4.Sn+8.IMM8:D2a:::fmov
277 "fmov"
278 *am33_2
279 {
280 PC = cia;
281
282 if (FPU_DISABLED)
283 fpu_disabled_exception (SD, CPU, cia);
284 else
285 {
286 int reg = translate_rreg (SD_, Rm);
287 XS2FS (X, Sn) = load_word (State.regs[reg] + EXTEND8 (IMM8));
288 }
289 }
290
291 // 1111 1011 0010 001X Rm.. Sn.. d8; fmov (Rm+,imm8),FSn
292 8.0xfb+4.2,3.1,1.X+4.Rm,4.Sn+8.IMM8:D2b:::fmov
293 "fmov"
294 *am33_2
295 {
296 PC = cia;
297
298 if (FPU_DISABLED)
299 fpu_disabled_exception (SD, CPU, cia);
300 else
301 {
302 int reg = translate_rreg (SD_, Rm);
303 XS2FS (X, Sn) = load_word (State.regs[reg] + EXTEND8 (IMM8));
304 State.regs[reg] += 4;
305 }
306 }
307
308 // 1111 1011 0010 010X ---- Sn.. d8; fmov (d8,SP),FSn
309 8.0xfb+4.2,3.2,1.X+4.0,4.Sn+8.IMM8:D2c:::fmov
310 "fmov"
311 *am33_2
312 {
313 PC = cia;
314
315 if (FPU_DISABLED)
316 fpu_disabled_exception (SD, CPU, cia);
317 else
318 {
319 int reg = REG_SP;
320 XS2FS (X, Sn) = load_word (State.regs[reg] + IMM8);
321 }
322 }
323
324 // 1111 1011 0010 0111 Ri.. Rm.. Sn.. --Z-; fmov (Ri,Rm),FSn
325 8.0xfb+8.0x27+4.Ri,4.Rm+4.Sn,2.0,1.Z,1.0:D2d:::fmov
326 "fmov"
327 *am33_2
328 {
329 PC = cia;
330
331 if (FPU_DISABLED)
332 fpu_disabled_exception (SD, CPU, cia);
333 else
334 {
335 int ri = translate_rreg (SD_, Ri);
336 int rm = translate_rreg (SD_, Rm);
337 XS2FS (Z, Sn) = load_word (State.regs[ri] + State.regs[rm]);
338 }
339 }
340
341 // 1111 1011 0011 00Y0 Sm.. Rn.. d8; fmov FSm,(d8,Rn)
342 8.0xfb+4.3,2.0,1.Y,1.0+4.Sm,4.Rn+8.IMM8:D2e:::fmov
343 "fmov"
344 *am33_2
345 {
346 PC = cia;
347
348 if (FPU_DISABLED)
349 fpu_disabled_exception (SD, CPU, cia);
350 else
351 {
352 int reg = translate_rreg (SD_, Rn);
353 store_word (State.regs[reg] + EXTEND8 (IMM8), XS2FS (Y, Sm));
354 }
355 }
356
357 // 1111 1011 0011 00Y1 Sm.. Rn.. d8; fmov FSm,(Rn+,d8)
358 8.0xfb+4.3,2.0,1.Y,1.1+4.Sm,4.Rn+8.IMM8:D2f:::fmov
359 "fmov"
360 *am33_2
361 {
362 PC = cia;
363
364 if (FPU_DISABLED)
365 fpu_disabled_exception (SD, CPU, cia);
366 else
367 {
368 int reg = translate_rreg (SD_, Rn);
369 store_word (State.regs[reg] + EXTEND8 (IMM8), XS2FS (Y, Sm));
370 State.regs[reg] += 4;
371 }
372 }
373
374 // 1111 1011 0011 01Y0 Sm.. ---- d8; fmov FSm,(d8,SP)
375 8.0xfb+4.3,2.1,1.Y,1.0+4.Sm,4.0+8.IMM8:D2g:::fmov
376 "fmov"
377 *am33_2
378 {
379 PC = cia;
380
381 if (FPU_DISABLED)
382 fpu_disabled_exception (SD, CPU, cia);
383 else
384 {
385 int reg = REG_SP;
386 store_word (State.regs[reg] + IMM8, XS2FS (Y, Sm));
387 }
388 }
389
390 // 1111 1011 0011 0111 Ri.. Rm.. Sm.. --Z-; fmov FSm,(Ri,Rm)
391 8.0xfb+8.0x37+4.Ri,4.Rm+4.Sm,2.0,1.Z,1.0:D2h:::fmov
392 "fmov"
393 *am33_2
394 {
395 PC = cia;
396
397 if (FPU_DISABLED)
398 fpu_disabled_exception (SD, CPU, cia);
399 else
400 {
401 int ri = translate_rreg (SD_, Ri);
402 int rm = translate_rreg (SD_, Rm);
403 store_word (State.regs[ri] + State.regs[rm], XS2FS (Z, Sm));
404 }
405 }
406
407 // 1111 1101 0010 000X Rm.. Sn.. d24; fmov (d24,Rm),FSn
408 8.0xfd+4.2,3.0,1.X+4.Rm,4.Sn+8.IMM24A+8.IMM24B+8.IMM24C:D4a:::fmov
409 "fmov"
410 *am33_2
411 {
412 PC = cia;
413
414 if (FPU_DISABLED)
415 fpu_disabled_exception (SD, CPU, cia);
416 else
417 {
418 int reg = translate_rreg (SD_, Rm);
419 XS2FS (X, Sn) = load_word (State.regs[reg]
420 + EXTEND24 (FETCH24 (IMM24A,
421 IMM24B, IMM24C)));
422 }
423 }
424
425 // 1111 1101 0010 001X Rm.. Sn.. d24; fmov (Rm+,imm24),FSn
426 8.0xfd+4.2,3.1,1.X+4.Rm,4.Sn+8.IMM24A+8.IMM24B+8.IMM24C:D4b:::fmov
427 "fmov"
428 *am33_2
429 {
430 PC = cia;
431
432 if (FPU_DISABLED)
433 fpu_disabled_exception (SD, CPU, cia);
434 else
435 {
436 int reg = translate_rreg (SD_, Rm);
437 XS2FS (X, Sn) = load_word (State.regs[reg]
438 + EXTEND24 (FETCH24 (IMM24A,
439 IMM24B, IMM24C)));
440 State.regs[reg] += 4;
441 }
442 }
443
444 // 1111 1101 0010 010X ---- Sn.. d24; fmov (d24,SP),FSn
445 8.0xfd+4.2,3.2,1.X+4.0,4.Sn+8.IMM24A+8.IMM24B+8.IMM24C:D4c:::fmov
446 "fmov"
447 *am33_2
448 {
449 PC = cia;
450
451 if (FPU_DISABLED)
452 fpu_disabled_exception (SD, CPU, cia);
453 else
454 {
455 int reg = REG_SP;
456 XS2FS (X, Sn) = load_word (State.regs[reg] + FETCH24 (IMM24A,
457 IMM24B, IMM24C));
458 }
459 }
460
461 // 1111 1101 0011 00Y0 Sm.. Rn.. d24; fmov FSm,(d24,Rn)
462 8.0xfd+4.3,2.0,1.Y,1.0+4.Sm,4.Rn+8.IMM24A+8.IMM24B+8.IMM24C:D4e:::fmov
463 "fmov"
464 *am33_2
465 {
466 PC = cia;
467
468 if (FPU_DISABLED)
469 fpu_disabled_exception (SD, CPU, cia);
470 else
471 {
472 int reg = translate_rreg (SD_, Rn);
473 store_word (State.regs[reg]
474 + EXTEND24 (FETCH24 (IMM24A,
475 IMM24B, IMM24C)), XS2FS (Y, Sm));
476 }
477 }
478
479 // 1111 1101 0011 00Y1 Sm.. Rn.. d24; fmov FSm,(Rn+,d24)
480 8.0xfd+4.3,2.0,1.Y,1.1+4.Sm,4.Rn+8.IMM24A+8.IMM24B+8.IMM24C:D4f:::fmov
481 "fmov"
482 *am33_2
483 {
484 PC = cia;
485
486 if (FPU_DISABLED)
487 fpu_disabled_exception (SD, CPU, cia);
488 else
489 {
490 int reg = translate_rreg (SD_, Rn);
491 store_word (State.regs[reg]
492 + EXTEND24 (FETCH24 (IMM24A,
493 IMM24B, IMM24C)), XS2FS (Y, Sm));
494 State.regs[reg] += 4;
495 }
496 }
497
498 // 1111 1101 0011 01Y0 Sm.. ---- d24; fmov FSm,(d24,SP)
499 8.0xfd+4.3,2.1,1.Y,1.0+4.Sm,4.0+8.IMM24A+8.IMM24B+8.IMM24C:D4g:::fmov
500 "fmov"
501 *am33_2
502 {
503 PC = cia;
504
505 if (FPU_DISABLED)
506 fpu_disabled_exception (SD, CPU, cia);
507 else
508 {
509 int reg = REG_SP;
510 store_word (State.regs[reg]
511 + FETCH24 (IMM24A,
512 IMM24B, IMM24C), XS2FS (Y, Sm));
513 }
514 }
515
516 // 1111 1110 0010 000X Rm.. Sn.. d32; fmov (d32,Rm),FSn
517 8.0xfe+4.2,3.0,1.X+4.Rm,4.Sn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5a:::fmov
518 "fmov"
519 *am33_2
520 {
521 PC = cia;
522
523 if (FPU_DISABLED)
524 fpu_disabled_exception (SD, CPU, cia);
525 else
526 {
527 int reg = translate_rreg (SD_, Rm);
528 XS2FS (X, Sn) = load_word (State.regs[reg]
529 + EXTEND32 (FETCH32 (IMM32A, IMM32B,
530 IMM32C, IMM32D)));
531 }
532 }
533
534 // 1111 1110 0010 001X Rm.. Sn.. d32; fmov (Rm+,imm32),FSn
535 8.0xfe+4.2,3.1,1.X+4.Rm,4.Sn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5b:::fmov
536 "fmov"
537 *am33_2
538 {
539 PC = cia;
540
541 if (FPU_DISABLED)
542 fpu_disabled_exception (SD, CPU, cia);
543 else
544 {
545 int reg = translate_rreg (SD_, Rm);
546 XS2FS (X, Sn) = load_word (State.regs[reg]
547 + EXTEND32 (FETCH32 (IMM32A, IMM32B,
548 IMM32C, IMM32D)));
549 State.regs[reg] += 4;
550 }
551 }
552
553 // 1111 1110 0010 010X ---- Sn.. d32; fmov (d32,SP),FSn
554 8.0xfe+4.2,3.2,1.X+4.0,4.Sn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5c:::fmov
555 "fmov"
556 *am33_2
557 {
558 PC = cia;
559
560 if (FPU_DISABLED)
561 fpu_disabled_exception (SD, CPU, cia);
562 else
563 {
564 int reg = REG_SP;
565 XS2FS (X, Sn) = load_word (State.regs[reg]
566 + FETCH32 (IMM32A, IMM32B,
567 IMM32C, IMM32D));
568 }
569 }
570
571 // 1111 1110 0010 011X ---- Sn.. d32; fmov imm32,FSn
572 8.0xfe+4.2,3.3,1.X+4.0,4.Sn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5d:::fmov
573 "fmov"
574 *am33_2
575 {
576 PC = cia;
577
578 if (FPU_DISABLED)
579 fpu_disabled_exception (SD, CPU, cia);
580 else
581 XS2FS (X, Sn) = FETCH32 (IMM32A, IMM32B, IMM32C, IMM32D);
582 }
583
584 // 1111 1110 0011 00Y0 Sm.. Rn.. d32; fmov FSm,(d32,Rn)
585 8.0xfe+4.3,2.0,1.Y,1.0+4.Sm,4.Rn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5e:::fmov
586 "fmov"
587 *am33_2
588 {
589 PC = cia;
590
591 if (FPU_DISABLED)
592 fpu_disabled_exception (SD, CPU, cia);
593 else
594 {
595 int reg = translate_rreg (SD_, Rn);
596 store_word (State.regs[reg]
597 + EXTEND32 (FETCH32 (IMM32A, IMM32B,
598 IMM32C, IMM32D)), XS2FS (Y, Sm));
599 }
600 }
601
602 // 1111 1110 0011 00Y1 Sm.. Rn.. d32; fmov FSm,(Rn+,d32)
603 8.0xfe+4.3,2.0,1.Y,1.1+4.Sm,4.Rn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5f:::fmov
604 "fmov"
605 *am33_2
606 {
607 PC = cia;
608
609 if (FPU_DISABLED)
610 fpu_disabled_exception (SD, CPU, cia);
611 else
612 {
613 int reg = translate_rreg (SD_, Rn);
614 store_word (State.regs[reg]
615 + EXTEND32 (FETCH32 (IMM32A, IMM32B,
616 IMM32C, IMM32D)), XS2FS (Y, Sm));
617 State.regs[reg] += 4;
618 }
619 }
620
621 // 1111 1110 0011 01Y0 Sm.. ---- d32; fmov FSm,(d32,SP)
622 8.0xfe+4.3,2.1,1.Y,1.0+4.Sm,4.0+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5g:::fmov
623 "fmov"
624 *am33_2
625 {
626 PC = cia;
627
628 if (FPU_DISABLED)
629 fpu_disabled_exception (SD, CPU, cia);
630 else
631 {
632 int reg = REG_SP;
633 store_word (State.regs[reg]
634 + FETCH32 (IMM32A, IMM32B,
635 IMM32C, IMM32D), XS2FS (Y, Sm));
636 }
637 }
638
639 // double precision fmov:
640
641 // 1111 1001 1010 000X Rm.. fn.-; fmov (Rm),FDn
642 8.0xf9+4.0xa,3.0,1.X+4.Rm,3.fn,1.0:D1j:::fmov
643 "fmov"
644 *am33_2
645 {
646 PC = cia;
647
648 if (FPU_DISABLED)
649 fpu_disabled_exception (SD, CPU, cia);
650 else
651 {
652 int reg = translate_rreg (SD_, Rm);
653 Xf2FD (X,fn) = load_dword (State.regs[reg]);
654 }
655 }
656
657 // 1111 1001 1010 001X Rm.. fn.-; fmov (Rm+),FDn
658 8.0xf9+4.0xa,3.1,1.X+4.Rm,3.fn,1.0:D1k:::fmov
659 "fmov"
660 *am33_2
661 {
662 PC = cia;
663
664 if (FPU_DISABLED)
665 fpu_disabled_exception (SD, CPU, cia);
666 else
667 {
668 int reg = translate_rreg (SD_, Rm);
669 Xf2FD (X,fn) = load_dword (State.regs[reg]);
670 State.regs[reg] += 8;
671 }
672 }
673
674 // 1111 1001 1010 010X ---- fn.-; fmov (SP),FDn
675 8.0xf9+4.0xa,3.2,1.X+4.0,3.fn,1.0:D1l:::fmov
676 "fmov"
677 *am33_2
678 {
679 PC = cia;
680
681 if (FPU_DISABLED)
682 fpu_disabled_exception (SD, CPU, cia);
683 else
684 {
685 int reg = REG_SP;
686 Xf2FD (X,fn) = load_dword (State.regs[reg]);
687 }
688 }
689
690 // 1111 1001 1011 00Y0 fm.- Rn..; fmov FDm,(Rn)
691 8.0xf9+4.0xb,2.0,1.Y,1.0+3.fm,1.0,4.Rn:D1m:::fmov
692 "fmov"
693 *am33_2
694 {
695 PC = cia;
696
697 if (FPU_DISABLED)
698 fpu_disabled_exception (SD, CPU, cia);
699 else
700 {
701 int reg = translate_rreg (SD_, Rn);
702 store_dword (State.regs[reg], Xf2FD (Y,fm));
703 }
704 }
705
706 // 1111 1001 1011 00Y1 fm.- Rn..; fmov FDm,(Rn+)
707 8.0xf9+4.0xb,2.0,1.Y,1.1+3.fm,1.0,4.Rn:D1n:::fmov
708 "fmov"
709 *am33_2
710 {
711 PC = cia;
712
713 if (FPU_DISABLED)
714 fpu_disabled_exception (SD, CPU, cia);
715 else
716 {
717 int reg = translate_rreg (SD_, Rn);
718 store_dword (State.regs[reg], Xf2FD (Y,fm));
719 State.regs[reg] += 8;
720 }
721 }
722
723 // 1111 1001 1011 01Y0 fm.- ----; fmov FDm,(SP)
724 8.0xf9+4.0xb,2.1,1.Y,1.0+3.fm,1.0,4.0:D1o:::fmov
725 "fmov"
726 *am33_2
727 {
728 PC = cia;
729
730 if (FPU_DISABLED)
731 fpu_disabled_exception (SD, CPU, cia);
732 else
733 {
734 int reg = REG_SP;
735 store_dword (State.regs[reg], Xf2FD (Y,fm));
736 }
737 }
738
739 // 1111 1001 1100 00YX fm.- fn.-; fmov FDm,FDn
740 8.0xf9+4.0xc,2.0,1.Y,1.X+3.fm,1.0,3.fn,1.0:D1p:::fmov
741 "fmov"
742 *am33_2
743 {
744 PC = cia;
745
746 if (FPU_DISABLED)
747 fpu_disabled_exception (SD, CPU, cia);
748 else
749 fpu_unimp_exception (SD, CPU, cia);
750 }
751
752 // 1111 1011 0100 0111 Ri.. Rm.. fn.- --Z-; fmov (Ri,Rm),FDn
753 8.0xfb+8.0x47+4.Ri,4.Rm+3.fn,1.0,2.0,1.Z,1.0:D2i:::fmov
754 "fmov"
755 *am33_2
756 {
757 PC = cia;
758
759 if (FPU_DISABLED)
760 fpu_disabled_exception (SD, CPU, cia);
761 else
762 {
763 int ri = translate_rreg (SD_, Ri);
764 int rm = translate_rreg (SD_, Rm);
765 Xf2FD (Z,fn) = load_dword (State.regs[ri] + State.regs[rm]);
766 }
767 }
768
769 // 1111 1011 0101 0111 Ri.. Rn.. fm.- --Z-; fmov FDm,(Ri,Rn)
770 8.0xfb+8.0x57+4.Ri,4.Rn+3.fm,1.0,2.0,1.Z,1.0:D2j:::fmov
771 "fmov"
772 *am33_2
773 {
774 PC = cia;
775
776 if (FPU_DISABLED)
777 fpu_disabled_exception (SD, CPU, cia);
778 else
779 {
780 int ri = translate_rreg (SD_, Ri);
781 int rn = translate_rreg (SD_, Rn);
782 store_dword (State.regs[ri] + State.regs[rn], Xf2FD (Z,fm));
783 }
784 }
785
786 // 1111 1011 1010 000X Rm.. fn.- d8; fmov (d8,Rm),FDn
787 8.0xfb+4.0xa,3.0,1.X+4.Rm,4.fn+8.IMM8:D2k:::fmov
788 "fmov"
789 *am33_2
790 {
791 PC = cia;
792
793 if (FPU_DISABLED)
794 fpu_disabled_exception (SD, CPU, cia);
795 else
796 {
797 int reg = translate_rreg (SD_, Rm);
798 Xf2FD (X, fn) = load_dword (State.regs[reg] + EXTEND8 (IMM8));
799 }
800 }
801
802 // 1111 1011 1010 001X Rm.. fn.- d8; fmov (Rm+,imm8),FDn
803 8.0xfb+4.0xa,3.1,1.X+4.Rm,4.fn+8.IMM8:D2l:::fmov
804 "fmov"
805 *am33_2
806 {
807 PC = cia;
808
809 if (FPU_DISABLED)
810 fpu_disabled_exception (SD, CPU, cia);
811 else
812 {
813 int reg = translate_rreg (SD_, Rm);
814 Xf2FD (X, fn) = load_dword (State.regs[reg] + EXTEND8 (IMM8));
815 State.regs[reg] += 8;
816 }
817 }
818
819 // 1111 1011 1010 010X ---- fn.- d8; fmov (d8,SP),FDn
820 8.0xfb+4.0xa,3.2,1.X+4.0,4.fn+8.IMM8:D2m:::fmov
821 "fmov"
822 *am33_2
823 {
824 PC = cia;
825
826 if (FPU_DISABLED)
827 fpu_disabled_exception (SD, CPU, cia);
828 else
829 {
830 int reg = REG_SP;
831 Xf2FD (X, fn) = load_dword (State.regs[reg] + IMM8);
832 }
833 }
834
835 // 1111 1011 1011 00Y0 fm.- Rn.. d8; fmov FDm,(d8,Rn)
836 8.0xfb+4.0xb,2.0,1.Y,1.0+4.fm,4.Rn+8.IMM8:D2n:::fmov
837 "fmov"
838 *am33_2
839 {
840 PC = cia;
841
842 if (FPU_DISABLED)
843 fpu_disabled_exception (SD, CPU, cia);
844 else
845 {
846 int reg = translate_rreg (SD_, Rn);
847 store_dword (State.regs[reg] + EXTEND8 (IMM8), Xf2FD (Y, fm));
848 }
849 }
850
851 // 1111 1011 1011 00Y1 fm.- Rn.. d8; fmov FDm,(Rn+,d8)
852 8.0xfb+4.0xb,2.0,1.Y,1.1+4.fm,4.Rn+8.IMM8:D2o:::fmov
853 "fmov"
854 *am33_2
855 {
856 PC = cia;
857
858 if (FPU_DISABLED)
859 fpu_disabled_exception (SD, CPU, cia);
860 else
861 {
862 int reg = translate_rreg (SD_, Rn);
863 store_dword (State.regs[reg] + EXTEND8 (IMM8), Xf2FD (Y, fm));
864 State.regs[reg] += 8;
865 }
866 }
867
868 // 1111 1011 1011 01Y0 fm.- ---- d8; fmov FDm,(d8,SP)
869 8.0xfb+4.0xb,2.1,1.Y,1.0+4.fm,4.0+8.IMM8:D2p:::fmov
870 "fmov"
871 *am33_2
872 {
873 PC = cia;
874
875 if (FPU_DISABLED)
876 fpu_disabled_exception (SD, CPU, cia);
877 else
878 {
879 int reg = REG_SP;
880 store_dword (State.regs[reg] + IMM8, Xf2FD (Y, fm));
881 }
882 }
883
884 // 1111 1101 1010 000X Rm.. fn.- d24; fmov (d24,Rm),FDn
885 8.0xfd+4.0xa,3.0,1.X+4.Rm,4.fn+8.IMM24A+8.IMM24B+8.IMM24C:D4k:::fmov
886 "fmov"
887 *am33_2
888 {
889 PC = cia;
890
891 if (FPU_DISABLED)
892 fpu_disabled_exception (SD, CPU, cia);
893 else
894 {
895 int reg = translate_rreg (SD_, Rm);
896 Xf2FD (X, fn) = load_dword (State.regs[reg]
897 + EXTEND24 (FETCH24 (IMM24A,
898 IMM24B, IMM24C)));
899 }
900 }
901
902 // 1111 1101 1010 001X Rm.. fn.- d24; fmov (Rm+,imm24),FDn
903 8.0xfd+4.0xa,3.1,1.X+4.Rm,4.fn+8.IMM24A+8.IMM24B+8.IMM24C:D4l:::fmov
904 "fmov"
905 *am33_2
906 {
907 PC = cia;
908
909 if (FPU_DISABLED)
910 fpu_disabled_exception (SD, CPU, cia);
911 else
912 {
913 int reg = translate_rreg (SD_, Rm);
914 Xf2FD (X, fn) = load_dword (State.regs[reg]
915 + EXTEND24 (FETCH24 (IMM24A,
916 IMM24B, IMM24C)));
917 State.regs[reg] += 8;
918 }
919 }
920
921 // 1111 1101 1010 010X ---- fn.- d24; fmov (d24,SP),FDn
922 8.0xfd+4.0xa,3.2,1.X+4.0,4.fn+8.IMM24A+8.IMM24B+8.IMM24C:D4m:::fmov
923 "fmov"
924 *am33_2
925 {
926 PC = cia;
927
928 if (FPU_DISABLED)
929 fpu_disabled_exception (SD, CPU, cia);
930 else
931 {
932 int reg = REG_SP;
933 Xf2FD (X, fn) = load_dword (State.regs[reg]
934 + FETCH24 (IMM24A,
935 IMM24B, IMM24C));
936 }
937 }
938
939 // 1111 1101 1011 00Y0 fm.- Rn.. d24; fmov FDm,(d24,Rn)
940 8.0xfd+4.0xb,2.0,1.Y,1.0+4.fm,4.Rn+8.IMM24A+8.IMM24B+8.IMM24C:D4n:::fmov
941 "fmov"
942 *am33_2
943 {
944 PC = cia;
945
946 if (FPU_DISABLED)
947 fpu_disabled_exception (SD, CPU, cia);
948 else
949 {
950 int reg = translate_rreg (SD_, Rn);
951 store_dword (State.regs[reg]
952 + EXTEND24 (FETCH24 (IMM24A,
953 IMM24B, IMM24C)), Xf2FD (Y, fm));
954 }
955 }
956
957 // 1111 1101 1011 00Y1 fm.- Rn.. d24; fmov FDm,(Rn+,d24)
958 8.0xfd+4.0xb,2.0,1.Y,1.1+4.fm,4.Rn+8.IMM24A+8.IMM24B+8.IMM24C:D4o:::fmov
959 "fmov"
960 *am33_2
961 {
962 PC = cia;
963
964 if (FPU_DISABLED)
965 fpu_disabled_exception (SD, CPU, cia);
966 else
967 {
968 int reg = translate_rreg (SD_, Rn);
969 store_dword (State.regs[reg]
970 + EXTEND24 (FETCH24 (IMM24A,
971 IMM24B, IMM24C)), Xf2FD (Y, fm));
972 State.regs[reg] += 8;
973 }
974 }
975
976 // 1111 1101 1011 01Y0 fm.- ---- d24; fmov FDm,(d24,SP)
977 8.0xfd+4.0xb,2.1,1.Y,1.0+4.fm,4.0+8.IMM24A+8.IMM24B+8.IMM24C:D4p:::fmov
978 "fmov"
979 *am33_2
980 {
981 PC = cia;
982
983 if (FPU_DISABLED)
984 fpu_disabled_exception (SD, CPU, cia);
985 else
986 {
987 int reg = REG_SP;
988 store_dword (State.regs[reg] + FETCH24 (IMM24A,
989 IMM24B, IMM24C), Xf2FD (Y, fm));
990 }
991 }
992
993 // 1111 1110 1010 000X Rm.. fn.- d32; fmov (d32,Rm),FDn
994 8.0xfe+4.0xa,3.0,1.X+4.Rm,4.fn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5k:::fmov
995 "fmov"
996 *am33_2
997 {
998 PC = cia;
999
1000 if (FPU_DISABLED)
1001 fpu_disabled_exception (SD, CPU, cia);
1002 else
1003 {
1004 int reg = translate_rreg (SD_, Rm);
1005 Xf2FD (X, fn) = load_dword (State.regs[reg]
1006 + EXTEND32 (FETCH32 (IMM32A, IMM32B,
1007 IMM32C, IMM32D)));
1008 }
1009 }
1010
1011 // 1111 1110 1010 001X Rm.. fn.- d32; fmov (Rm+,imm32),FDn
1012 8.0xfe+4.0xa,3.1,1.X+4.Rm,4.fn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5l:::fmov
1013 "fmov"
1014 *am33_2
1015 {
1016 PC = cia;
1017
1018 if (FPU_DISABLED)
1019 fpu_disabled_exception (SD, CPU, cia);
1020 else
1021 {
1022 int reg = translate_rreg (SD_, Rm);
1023 Xf2FD (X, fn) = load_dword (State.regs[reg]
1024 + EXTEND32 (FETCH32 (IMM32A, IMM32B,
1025 IMM32C, IMM32D)));
1026 State.regs[reg] += 8;
1027 }
1028 }
1029
1030 // 1111 1110 1010 010X ---- fn.- d32; fmov (d32,SP),FDn
1031 8.0xfe+4.0xa,3.2,1.X+4.0,4.fn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5m:::fmov
1032 "fmov"
1033 *am33_2
1034 {
1035 PC = cia;
1036
1037 if (FPU_DISABLED)
1038 fpu_disabled_exception (SD, CPU, cia);
1039 else
1040 {
1041 int reg = REG_SP;
1042 Xf2FD (X, fn) = load_dword (State.regs[reg]
1043 + FETCH32 (IMM32A, IMM32B,
1044 IMM32C, IMM32D));
1045 }
1046 }
1047
1048 // 1111 1110 1011 00Y0 fm.- Rn.. d32; fmov FDm,(d32,Rn)
1049 8.0xfe+4.0xb,2.0,1.Y,1.0+4.fm,4.Rn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5n:::fmov
1050 "fmov"
1051 *am33_2
1052 {
1053 PC = cia;
1054
1055 if (FPU_DISABLED)
1056 fpu_disabled_exception (SD, CPU, cia);
1057 else
1058 {
1059 int reg = translate_rreg (SD_, Rn);
1060 store_dword (State.regs[reg]
1061 + EXTEND32 (FETCH32 (IMM32A, IMM32B,
1062 IMM32C, IMM32D)), Xf2FD (Y, fm));
1063 }
1064 }
1065
1066 // 1111 1110 1011 00Y1 fm.- Rn.. d32; fmov FDm,(Rn+,d32)
1067 8.0xfe+4.0xb,2.0,1.Y,1.1+4.fm,4.Rn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5o:::fmov
1068 "fmov"
1069 *am33_2
1070 {
1071 PC = cia;
1072
1073 if (FPU_DISABLED)
1074 fpu_disabled_exception (SD, CPU, cia);
1075 else
1076 {
1077 int reg = translate_rreg (SD_, Rn);
1078 store_dword (State.regs[reg]
1079 + EXTEND32 (FETCH32 (IMM32A, IMM32B,
1080 IMM32C, IMM32D)), Xf2FD (Y, fm));
1081 State.regs[reg] += 8;
1082 }
1083 }
1084
1085 // 1111 1110 1011 01Y0 fm.- ---- d32; fmov FDm,(d32,SP)
1086 8.0xfe+4.0xb,2.1,1.Y,1.0+4.fm,4.0+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5p:::fmov
1087 "fmov"
1088 *am33_2
1089 {
1090 PC = cia;
1091
1092 if (FPU_DISABLED)
1093 fpu_disabled_exception (SD, CPU, cia);
1094 else
1095 {
1096 int reg = REG_SP;
1097 store_dword (State.regs[reg]
1098 + FETCH32 (IMM32A, IMM32B,
1099 IMM32C, IMM32D), Xf2FD (Y, fm));
1100 }
1101 }
1102
1103 // FPCR fmov:
1104
1105 // 1111 1001 1011 0101 Rm.. ----; fmov Rm,FPCR
1106 8.0xf9+8.0xb5+4.Rm,4.0:D1q:::fmov
1107 "fmov"
1108 *am33_2
1109 {
1110 PC = cia;
1111
1112 if (FPU_DISABLED)
1113 fpu_disabled_exception (SD, CPU, cia);
1114 else
1115 {
1116 int reg = translate_rreg (SD_, Rm);
1117 uint32_t val = State.regs[reg];
1118 FPCR = (val & (EC_MASK | EE_MASK | FCC_MASK))
1119 | ((FPCR & ~val) & EF_MASK);
1120 }
1121 }
1122
1123 // 1111 1001 1011 0111 ---- Rn..; fmov FPCR,Rn
1124 8.0xf9+8.0xb7+4.0,4.Rn:D1r:::fmov
1125 "fmov"
1126 *am33_2
1127 {
1128 PC = cia;
1129
1130 if (FPU_DISABLED)
1131 fpu_disabled_exception (SD, CPU, cia);
1132 else
1133 {
1134 int reg = translate_rreg (SD_, Rn);
1135 State.regs[reg] = FPCR & FPCR_MASK;
1136 }
1137 }
1138
1139 // 1111 1101 1011 0101 imm32; fmov imm32,FPCR
1140 8.0xfd+8.0xb5+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5:::fmov
1141 "fmov"
1142 *am33_2
1143 {
1144 PC = cia;
1145
1146 if (FPU_DISABLED)
1147 fpu_disabled_exception (SD, CPU, cia);
1148 else
1149 {
1150 uint32_t val = FETCH32 (IMM32A, IMM32B, IMM32C, IMM32D);
1151 FPCR = (val & (EC_MASK | EE_MASK | FCC_MASK))
1152 | ((FPCR & ~val) & EF_MASK);
1153 }
1154 }
1155
1156 // fabs:
1157
1158 // 1111 1001 0100 010X ---- Sn..; fabs FSn
1159 8.0xf9+4.4,3.2,1.X+4.0,4.Sn:D1a:::fabs
1160 "fabs"
1161 *am33_2
1162 {
1163 PC = cia;
1164
1165 if (FPU_DISABLED)
1166 fpu_disabled_exception (SD, CPU, cia);
1167 else
1168 {
1169 sim_fpu in, out;
1170
1171 FS2FPU (XS2FS (X,Sn), in);
1172 sim_fpu_abs (&out, &in);
1173 FPU2FS (out, XS2FS (X,Sn));
1174 }
1175 }
1176
1177 // 1111 1001 1100 010X ---- Sn..; fabs FDn
1178 8.0xf9+4.0xc,3.2,1.X+4.0,3.fn,1.0:D1b:::fabs
1179 "fabs"
1180 *am33_2
1181 {
1182 PC = cia;
1183
1184 if (FPU_DISABLED)
1185 fpu_disabled_exception (SD, CPU, cia);
1186 else
1187 fpu_unimp_exception (SD, CPU, cia);
1188 }
1189
1190 // 1111 1011 0100 0100 Sm.. ---- Sn.. X-Z-; fabs FSm,FSn
1191 8.0xfb+8.0x44+4.Sm,4.0+4.Sn,1.X,1.0,1.Z,1.0:D2a:::fabs
1192 "fabs"
1193 *am33_2
1194 {
1195 PC = cia;
1196
1197 if (FPU_DISABLED)
1198 fpu_disabled_exception (SD, CPU, cia);
1199 else
1200 {
1201 sim_fpu in, out;
1202
1203 FS2FPU (XS2FS (X,Sm), in);
1204 sim_fpu_abs (&out, &in);
1205 FPU2FS (out, XS2FS (Z,Sn));
1206 }
1207 }
1208
1209 // 1111 1011 1100 0100 fm.- ---- fn.- X-Z-; fabs FDm,FDn
1210 8.0xfb+8.0xc4+3.fm,1.0,4.0+3.fn,1.0,1.X,1.0,1.Z,1.0:D2b:::fabs
1211 "fabs"
1212 *am33_2
1213 {
1214 PC = cia;
1215
1216 if (FPU_DISABLED)
1217 fpu_disabled_exception (SD, CPU, cia);
1218 else
1219 fpu_unimp_exception (SD, CPU, cia);
1220 }
1221
1222 // 1111 1001 0100 011X ---- Sn..; fneg FSn
1223 8.0xf9+4.4,3.3,1.X+4.0,4.Sn:D1a:::fneg
1224 "fneg"
1225 *am33_2
1226 {
1227 PC = cia;
1228
1229 if (FPU_DISABLED)
1230 fpu_disabled_exception (SD, CPU, cia);
1231 else
1232 {
1233 sim_fpu in, out;
1234
1235 FS2FPU (XS2FS (X,Sn), in);
1236 sim_fpu_neg (&out, &in);
1237 FPU2FS (out, XS2FS (X,Sn));
1238 }
1239 }
1240
1241 // 1111 1001 1100 011X ---- Sn..; fneg FDn
1242 8.0xf9+4.0xc,3.3,1.X+4.0,3.fn,1.0:D1b:::fneg
1243 "fneg"
1244 *am33_2
1245 {
1246 PC = cia;
1247
1248 if (FPU_DISABLED)
1249 fpu_disabled_exception (SD, CPU, cia);
1250 else
1251 fpu_unimp_exception (SD, CPU, cia);
1252 }
1253
1254 // 1111 1011 0100 0110 Sm.. ---- Sn.. X-Z-; fneg FSm,FSn
1255 8.0xfb+8.0x46+4.Sm,4.0+4.Sn,1.X,1.0,1.Z,1.0:D2a:::fneg
1256 "fneg"
1257 *am33_2
1258 {
1259 PC = cia;
1260
1261 if (FPU_DISABLED)
1262 fpu_disabled_exception (SD, CPU, cia);
1263 else
1264 {
1265 sim_fpu in, out;
1266
1267 FS2FPU (XS2FS (X,Sm), in);
1268 sim_fpu_neg (&out, &in);
1269 FPU2FS (out, XS2FS (Z,Sn));
1270 }
1271 }
1272
1273 // 1111 1011 1100 0110 fm.- ---- fn.- X-Z-; fneg FDm,FDn
1274 8.0xfb+8.0xc6+3.fm,1.0,4.0+3.fn,1.0,1.X,1.0,1.Z,1.0:D2b:::fneg
1275 "fneg"
1276 *am33_2
1277 {
1278 PC = cia;
1279
1280 if (FPU_DISABLED)
1281 fpu_disabled_exception (SD, CPU, cia);
1282 else
1283 fpu_unimp_exception (SD, CPU, cia);
1284 }
1285
1286 // 1111 1001 0101 000X ---- Sn..; frsqrt FSn
1287 8.0xf9+4.5,3.0,1.X+4.0,4.Sn:D1a:::frsqrt
1288 "frsqrt"
1289 *am33_2
1290 {
1291 PC = cia;
1292
1293 if (FPU_DISABLED)
1294 fpu_disabled_exception (SD, CPU, cia);
1295 else
1296 fpu_rsqrt (SD, CPU, cia, &XS2FS (X,Sn), &XS2FS (X,Sn), FP_SINGLE);
1297 }
1298
1299 // 1111 1001 1101 000X ---- fn.-; frsqrt FDn
1300 8.0xf9+4.0xd,3.0,1.X+4.0,3.fn,1.0:D1b:::frsqrt
1301 "frsqrt"
1302 *am33_2
1303 {
1304 PC = cia;
1305
1306 if (FPU_DISABLED)
1307 fpu_disabled_exception (SD, CPU, cia);
1308 else
1309 fpu_unimp_exception (SD, CPU, cia);
1310 }
1311
1312 // 1111 1011 0101 0000 Sm.. ---- Sn.. X-Z-; frsqrt FSm,FSn
1313 8.0xfb+8.0x50+4.Sm,4.0+4.Sn,1.X,1.0,1.Z,1.0:D2a:::frsqrt
1314 "frsqrt"
1315 *am33_2
1316 {
1317 PC = cia;
1318
1319 if (FPU_DISABLED)
1320 fpu_disabled_exception (SD, CPU, cia);
1321 else
1322 fpu_rsqrt (SD, CPU, cia, &XS2FS (X,Sm), &XS2FS (Z,Sn), FP_SINGLE);
1323 }
1324
1325 // 1111 1011 1101 0000 fm.- ---- fn.- X-Z-; frsqrt FDm,FDn
1326 8.0xfb+8.0xd0+3.fm,1.0,4.0+3.fn,1.0,1.X,1.0,1.Z,1.0:D2b:::frsqrt
1327 "frsqrt"
1328 *am33_2
1329 {
1330 PC = cia;
1331
1332 if (FPU_DISABLED)
1333 fpu_disabled_exception (SD, CPU, cia);
1334 else
1335 fpu_unimp_exception (SD, CPU, cia);
1336 }
1337
1338 // 1111 1001 0101 001X ---- Sn..; fsqrt FSn
1339 8.0xf9+4.5,3.1,1.X+4.0,4.Sn:D1a:::fsqrt
1340 "fsqrt"
1341 *am33_2
1342 {
1343 PC = cia;
1344
1345 if (FPU_DISABLED)
1346 fpu_disabled_exception (SD, CPU, cia);
1347 else
1348 fpu_unimp_exception (SD, CPU, cia);
1349 }
1350
1351 // 1111 1001 1101 001X ---- fn.-; fsqrt FDn
1352 8.0xf9+4.0xd,3.1,1.X+4.0,3.fn,1.0:D1b:::fsqrt
1353 "fsqrt"
1354 *am33_2
1355 {
1356 PC = cia;
1357
1358 if (FPU_DISABLED)
1359 fpu_disabled_exception (SD, CPU, cia);
1360 else
1361 fpu_unimp_exception (SD, CPU, cia);
1362 }
1363
1364 // 1111 1011 0101 0100 Sm.. ---- Sn.. X-Z-; fsqrt FSm,FSn
1365 8.0xfb+8.0x54+4.Sm,4.0+4.Sn,1.X,1.0,1.Z,1.0:D2a:::fsqrt
1366 "fsqrt"
1367 *am33_2
1368 {
1369 PC = cia;
1370
1371 if (FPU_DISABLED)
1372 fpu_disabled_exception (SD, CPU, cia);
1373 else
1374 fpu_unimp_exception (SD, CPU, cia);
1375 }
1376
1377 // 1111 1011 1101 0100 fm.- ---- fn.- X-Z-; fsqrt FDm,FDn
1378 8.0xfb+8.0xd4+3.fm,1.0,4.0+3.fn,1.0,1.X,1.0,1.Z,1.0:D2b:::fsqrt
1379 "fsqrt"
1380 *am33_2
1381 {
1382 PC = cia;
1383
1384 if (FPU_DISABLED)
1385 fpu_disabled_exception (SD, CPU, cia);
1386 else
1387 fpu_unimp_exception (SD, CPU, cia);
1388 }
1389
1390 // 1111 1001 0101 01YX Sm.. Sn..; fcmp FSm, FSn
1391 8.0xf9+4.5,2.1,1.Y,1.X+4.Sm,4.Sn:D1a:::fcmp
1392 "fcmp"
1393 *am33_2
1394 {
1395 PC = cia;
1396
1397 if (FPU_DISABLED)
1398 fpu_disabled_exception (SD, CPU, cia);
1399 else
1400 fpu_cmp (SD, CPU, cia, &XS2FS (X,Sn), &XS2FS (Y,Sm), FP_SINGLE);
1401 }
1402
1403 // 1111 1001 1101 01YX fm.- fn.-; fcmp FDm, FDn
1404 8.0xf9+4.0xd,2.1,1.Y,1.X+3.fm,1.0,3.fn,1.0:D1b:::fcmp
1405 "fcmp"
1406 *am33_2
1407 {
1408 PC = cia;
1409
1410 if (FPU_DISABLED)
1411 fpu_disabled_exception (SD, CPU, cia);
1412 else
1413 fpu_unimp_exception (SD, CPU, cia);
1414 }
1415
1416 // 1111 1110 0011 01Y1 Sm.. ---- IMM32; fcmp imm32, FSm
1417 8.0xfe+4.3,2.1,1.Y,1.1+4.Sm,4.0+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5:::fcmp
1418 "fcmp"
1419 *am33_2
1420 {
1421 PC = cia;
1422
1423 if (FPU_DISABLED)
1424 fpu_disabled_exception (SD, CPU, cia);
1425 else
1426 {
1427 uint32_t imm = FETCH32 (IMM32A, IMM32B, IMM32C, IMM32D);
1428
1429 fpu_cmp (SD, CPU, cia, &XS2FS (Y,Sm), &imm, FP_SINGLE);
1430 }
1431 }
1432
1433 // 1111 1001 0110 00YX Sm.. Sn..; fadd FSm, FSn
1434 8.0xf9+4.6,2.0,1.Y,1.X+4.Sm,4.Sn:D1a:::fadd
1435 "fadd"
1436 *am33_2
1437 {
1438 PC = cia;
1439
1440 if (FPU_DISABLED)
1441 fpu_disabled_exception (SD, CPU, cia);
1442 else
1443 fpu_add (SD, CPU, cia,
1444 &XS2FS (Y,Sm), &XS2FS (X,Sn), &XS2FS (X,Sn), FP_SINGLE);
1445 }
1446
1447 // 1111 1001 1110 00YX fm.- fn.-; fadd FDm, FDn
1448 8.0xf9+4.0xe,2.0,1.Y,1.X+3.fm,1.0,3.fn,1.0:D1b:::fadd
1449 "fadd"
1450 *am33_2
1451 {
1452 PC = cia;
1453
1454 if (FPU_DISABLED)
1455 fpu_disabled_exception (SD, CPU, cia);
1456 else
1457 fpu_unimp_exception (SD, CPU, cia);
1458 }
1459
1460 // 1111 1011 0110 0000 Sm1. Sm2. Sn.. XYZ-; fadd FSm1, FSm2, FSn
1461 8.0xfb+8.0x60+4.Sm1,4.Sm2+4.Sn,1.X,1.Y,1.Z,1.0:D2a:::fadd
1462 "fadd"
1463 *am33_2
1464 {
1465 PC = cia;
1466
1467 if (FPU_DISABLED)
1468 fpu_disabled_exception (SD, CPU, cia);
1469 else
1470 fpu_add (SD, CPU, cia,
1471 &XS2FS (X,Sm1), &XS2FS (Y,Sm2), &XS2FS (Z,Sn), FP_SINGLE);
1472 }
1473
1474 // 1111 1011 1110 0000 fm1- fm2- fn.- XYZ-; fadd FDm1, FDm2, FDn
1475 8.0xfb+8.0xe0+3.fm1,1.0,3.fm2,1.0+3.fn,1.0,1.X,1.Y,1.Z,1.0:D2b:::fadd
1476 "fadd"
1477 *am33_2
1478 {
1479 PC = cia;
1480
1481 if (FPU_DISABLED)
1482 fpu_disabled_exception (SD, CPU, cia);
1483 else
1484 fpu_unimp_exception (SD, CPU, cia);
1485 }
1486
1487
1488 // 1111 1110 0110 00YX Sm.. Sn.. IMM32; fadd imm32, FSm, FSn
1489 8.0xfe+4.6,2.0,1.Y,1.X+4.Sm,4.Sn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5:::fadd
1490 "fadd"
1491 *am33_2
1492 {
1493 PC = cia;
1494
1495 if (FPU_DISABLED)
1496 fpu_disabled_exception (SD, CPU, cia);
1497 else
1498 {
1499 uint32_t imm = FETCH32 (IMM32A, IMM32B, IMM32C, IMM32D);
1500
1501 fpu_add (SD, CPU, cia,
1502 &XS2FS (Y,Sm), &imm, &XS2FS (X,Sn), FP_SINGLE);
1503 }
1504 }
1505
1506 // 1111 1001 0110 01YX Sm.. Sn..; fsub FSm, FSn
1507 8.0xf9+4.6,2.1,1.Y,1.X+4.Sm,4.Sn:D1a:::fsub
1508 "fsub"
1509 *am33_2
1510 {
1511 PC = cia;
1512
1513 if (FPU_DISABLED)
1514 fpu_disabled_exception (SD, CPU, cia);
1515 else
1516 fpu_sub (SD, CPU, cia,
1517 &XS2FS (X,Sn), &XS2FS (Y,Sm), &XS2FS (X,Sn), FP_SINGLE);
1518 }
1519
1520 // 1111 1001 1110 01YX fm.- fn.-; fsub FDm, FDn
1521 8.0xf9+4.0xe,2.1,1.Y,1.X+3.fm,1.0,3.fn,1.0:D1b:::fsub
1522 "fsub"
1523 *am33_2
1524 {
1525 PC = cia;
1526
1527 if (FPU_DISABLED)
1528 fpu_disabled_exception (SD, CPU, cia);
1529 else
1530 fpu_unimp_exception (SD, CPU, cia);
1531 }
1532
1533 // 1111 1011 0110 0100 Sm1. Sm2. Sn.. XYZ-; fsub FSm1, FSm2, FSn
1534 8.0xfb+8.0x64+4.Sm1,4.Sm2+4.Sn,1.X,1.Y,1.Z,1.0:D2a:::fsub
1535 "fsub"
1536 *am33_2
1537 {
1538 PC = cia;
1539
1540 if (FPU_DISABLED)
1541 fpu_disabled_exception (SD, CPU, cia);
1542 else
1543 fpu_sub (SD, CPU, cia,
1544 &XS2FS (Y,Sm2), &XS2FS (X,Sm1), &XS2FS (Z,Sn), FP_SINGLE);
1545 }
1546
1547 // 1111 1011 1110 0100 fm1- fm2- fn.- XYZ-; fsub FDm1, FDm2, FDn
1548 8.0xfb+8.0xe4+3.fm1,1.0,3.fm2,1.0+3.fn,1.0,1.X,1.Y,1.Z,1.0:D2b:::fsub
1549 "fsub"
1550 *am33_2
1551 {
1552 PC = cia;
1553
1554 if (FPU_DISABLED)
1555 fpu_disabled_exception (SD, CPU, cia);
1556 else
1557 fpu_unimp_exception (SD, CPU, cia);
1558 }
1559
1560
1561 // 1111 1110 0110 01YX Sm.. Sn.. IMM32; fsub imm32, FSm, FSn
1562 8.0xfe+4.6,2.1,1.Y,1.X+4.Sm,4.Sn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5:::fsub
1563 "fsub"
1564 *am33_2
1565 {
1566 PC = cia;
1567
1568 if (FPU_DISABLED)
1569 fpu_disabled_exception (SD, CPU, cia);
1570 else
1571 {
1572 uint32_t imm = FETCH32 (IMM32A, IMM32B, IMM32C, IMM32D);
1573
1574 fpu_sub (SD, CPU, cia,
1575 &XS2FS (Y,Sm), &imm, &XS2FS (X,Sn), FP_SINGLE);
1576 }
1577 }
1578
1579 // 1111 1001 0111 00YX Sm.. Sn..; fmul FSm, FSn
1580 8.0xf9+4.7,2.0,1.Y,1.X+4.Sm,4.Sn:D1a:::fmul
1581 "fmul"
1582 *am33_2
1583 {
1584 PC = cia;
1585
1586 if (FPU_DISABLED)
1587 fpu_disabled_exception (SD, CPU, cia);
1588 else
1589 fpu_mul (SD, CPU, cia,
1590 &XS2FS (Y,Sm), &XS2FS (X,Sn), &XS2FS (X,Sn), FP_SINGLE);
1591 }
1592
1593 // 1111 1001 1111 00YX fm.- fn.-; fmul FDm, FDn
1594 8.0xf9+4.0xf,2.0,1.Y,1.X+3.fm,1.0,3.fn,1.0:D1b:::fmul
1595 "fmul"
1596 *am33_2
1597 {
1598 PC = cia;
1599
1600 if (FPU_DISABLED)
1601 fpu_disabled_exception (SD, CPU, cia);
1602 else
1603 fpu_unimp_exception (SD, CPU, cia);
1604 }
1605
1606 // 1111 1011 0111 0000 Sm1. Sm2. Sn.. XYZ-; fmul FSm1, FSm2, FSn
1607 8.0xfb+8.0x70+4.Sm1,4.Sm2+4.Sn,1.X,1.Y,1.Z,1.0:D2a:::fmul
1608 "fmul"
1609 *am33_2
1610 {
1611 PC = cia;
1612
1613 if (FPU_DISABLED)
1614 fpu_disabled_exception (SD, CPU, cia);
1615 else
1616 fpu_mul (SD, CPU, cia,
1617 &XS2FS (X,Sm1), &XS2FS (Y,Sm2), &XS2FS (Z,Sn), FP_SINGLE);
1618 }
1619
1620 // 1111 1011 1111 0000 fm1- fm2- fn.- XYZ-; fmul FDm1, FDm2, FDn
1621 8.0xfb+8.0xf0+3.fm1,1.0,3.fm2,1.0+3.fn,1.0,1.X,1.Y,1.Z,1.0:D2b:::fmul
1622 "fmul"
1623 *am33_2
1624 {
1625 PC = cia;
1626
1627 if (FPU_DISABLED)
1628 fpu_disabled_exception (SD, CPU, cia);
1629 else
1630 fpu_unimp_exception (SD, CPU, cia);
1631 }
1632
1633
1634 // 1111 1110 0111 00YX Sm.. Sn.. IMM32; fmul imm32, FSm, FSn
1635 8.0xfe+4.7,2.0,1.Y,1.X+4.Sm,4.Sn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5:::fmul
1636 "fmul"
1637 *am33_2
1638 {
1639 PC = cia;
1640
1641 if (FPU_DISABLED)
1642 fpu_disabled_exception (SD, CPU, cia);
1643 else
1644 {
1645 uint32_t imm = FETCH32 (IMM32A, IMM32B, IMM32C, IMM32D);
1646
1647 fpu_mul (SD, CPU, cia,
1648 &imm, &XS2FS (Y,Sm), &XS2FS (X,Sn), FP_SINGLE);
1649 }
1650 }
1651
1652 // 1111 1001 0111 01YX Sm.. Sn..; fdiv FSm, FSn
1653 8.0xf9+4.7,2.1,1.Y,1.X+4.Sm,4.Sn:D1a:::fdiv
1654 "fdiv"
1655 *am33_2
1656 {
1657 PC = cia;
1658
1659 if (FPU_DISABLED)
1660 fpu_disabled_exception (SD, CPU, cia);
1661 else
1662 fpu_div (SD, CPU, cia,
1663 &XS2FS (X,Sn), &XS2FS (Y,Sm), &XS2FS (X,Sn), FP_SINGLE);
1664 }
1665
1666 // 1111 1001 1111 01YX fm.- fn.-; fdiv FDm, FDn
1667 8.0xf9+4.0xf,2.1,1.Y,1.X+3.fm,1.0,3.fn,1.0:D1b:::fdiv
1668 "fdiv"
1669 *am33_2
1670 {
1671 PC = cia;
1672
1673 if (FPU_DISABLED)
1674 fpu_disabled_exception (SD, CPU, cia);
1675 else
1676 fpu_unimp_exception (SD, CPU, cia);
1677 }
1678
1679 // 1111 1011 0111 0100 Sm1. Sm2. Sn.. XYZ-; fdiv FSm1, FSm2, FSn
1680 8.0xfb+8.0x74+4.Sm1,4.Sm2+4.Sn,1.X,1.Y,1.Z,1.0:D2a:::fdiv
1681 "fdiv"
1682 *am33_2
1683 {
1684 PC = cia;
1685
1686 if (FPU_DISABLED)
1687 fpu_disabled_exception (SD, CPU, cia);
1688 else
1689 fpu_div (SD, CPU, cia,
1690 &XS2FS (Y,Sm2), &XS2FS (X,Sm1), &XS2FS (Z,Sn), FP_SINGLE);
1691 }
1692
1693 // 1111 1011 1111 0100 fm1- fm2- fn.- XYZ-; fdiv FDm1, FDm2, FDn
1694 8.0xfb+8.0xf4+3.fm1,1.0,3.fm2,1.0+3.fn,1.0,1.X,1.Y,1.Z,1.0:D2b:::fdiv
1695 "fdiv"
1696 *am33_2
1697 {
1698 PC = cia;
1699
1700 if (FPU_DISABLED)
1701 fpu_disabled_exception (SD, CPU, cia);
1702 else
1703 fpu_unimp_exception (SD, CPU, cia);
1704 }
1705
1706
1707 // 1111 1110 0111 01YX Sm.. Sn.. IMM32; fdiv imm32, FSm, FSn
1708 8.0xfe+4.7,2.1,1.Y,1.X+4.Sm,4.Sn+8.IMM32A+8.IMM32B+8.IMM32C+8.IMM32D:D5:::fdiv
1709 "fdiv"
1710 *am33_2
1711 {
1712 PC = cia;
1713
1714 if (FPU_DISABLED)
1715 fpu_disabled_exception (SD, CPU, cia);
1716 else
1717 {
1718 uint32_t imm = FETCH32 (IMM32A, IMM32B, IMM32C, IMM32D);
1719
1720 fpu_div (SD, CPU, cia,
1721 &XS2FS (Y,Sm), &imm, &XS2FS (X,Sn), FP_SINGLE);
1722 }
1723 }
1724
1725 // 1111 1011 1000 00Sn Sm1. Sm2. Sm3. XYZA; fmadd FSm1, FSm2, FSm3, FSn
1726 8.0xfb+4.8,2.0,2.Sn+4.Sm1,4.Sm2+4.Sm3,1.X,1.Y,1.Z,1.A:D2:::fmadd
1727 "fmadd"
1728 *am33_2
1729 {
1730 PC = cia;
1731
1732 if (FPU_DISABLED)
1733 fpu_disabled_exception (SD, CPU, cia);
1734 else
1735 fpu_fmadd (SD, CPU, cia,
1736 &XS2FS (X,Sm1), &XS2FS (Y,Sm2), &XS2FS (Z,Sm3),
1737 &AS2FS (A,Sn), FP_SINGLE);
1738 }
1739
1740 // 1111 1011 1000 01Sn Sm1. Sm2. Sm3. XYZA; fmsub FSm1, FSm2, FSm3, FSn
1741 8.0xfb+4.8,2.1,2.Sn+4.Sm1,4.Sm2+4.Sm3,1.X,1.Y,1.Z,1.A:D2:::fmsub
1742 "fmsub"
1743 *am33_2
1744 {
1745 PC = cia;
1746
1747 if (FPU_DISABLED)
1748 fpu_disabled_exception (SD, CPU, cia);
1749 else
1750 fpu_fmsub (SD, CPU, cia,
1751 &XS2FS (X,Sm1), &XS2FS (Y,Sm2), &XS2FS (Z,Sm3),
1752 &AS2FS (A,Sn), FP_SINGLE);
1753 }
1754
1755 // 1111 1011 1001 00Sn Sm1. Sm2. Sm3. XYZA; fnmadd FSm1, FSm2, FSm3, FSn
1756 8.0xfb+4.9,2.0,2.Sn+4.Sm1,4.Sm2+4.Sm3,1.X,1.Y,1.Z,1.A:D2:::fnmadd
1757 "fnmadd"
1758 *am33_2
1759 {
1760 PC = cia;
1761
1762 if (FPU_DISABLED)
1763 fpu_disabled_exception (SD, CPU, cia);
1764 else
1765 fpu_fnmadd (SD, CPU, cia,
1766 &XS2FS (X,Sm1), &XS2FS (Y,Sm2), &XS2FS (Z,Sm3),
1767 &AS2FS (A,Sn), FP_SINGLE);
1768 }
1769
1770 // 1111 1011 1001 01Sn Sm1. Sm2. Sm3. XYZA; fnmsub FSm1, FSm2, FSm3, FSn
1771 8.0xfb+4.9,2.1,2.Sn+4.Sm1,4.Sm2+4.Sm3,1.X,1.Y,1.Z,1.A:D2:::fnmsub
1772 "fnmsub"
1773 *am33_2
1774 {
1775 PC = cia;
1776
1777 if (FPU_DISABLED)
1778 fpu_disabled_exception (SD, CPU, cia);
1779 else
1780 fpu_fnmsub (SD, CPU, cia,
1781 &XS2FS (X,Sm1), &XS2FS (Y,Sm2), &XS2FS (Z,Sm3),
1782 &AS2FS (A,Sn), FP_SINGLE);
1783 }
1784
1785 // conversion:
1786
1787 // 1111 1011 0100 0000 Sm.. ---- Sn.. X-Z-; ftoi FSm,FSn
1788 8.0xfb+8.0x40+4.Sm,4.0+4.Sn,1.X,1.0,1.Z,1.0:D2:::ftoi
1789 "ftoi"
1790 *am33_2
1791 {
1792 PC = cia;
1793
1794 if (FPU_DISABLED)
1795 fpu_disabled_exception (SD, CPU, cia);
1796 else
1797 fpu_unimp_exception (SD, CPU, cia);
1798 }
1799
1800 // 1111 1011 0100 0010 Sm.. ---- Sn.. X-Z-; itof FSm,FSn
1801 8.0xfb+8.0x42+4.Sm,4.0+4.Sn,1.X,1.0,1.Z,1.0:D2:::itof
1802 "itof"
1803 *am33_2
1804 {
1805 PC = cia;
1806
1807 if (FPU_DISABLED)
1808 fpu_disabled_exception (SD, CPU, cia);
1809 else
1810 fpu_unimp_exception (SD, CPU, cia);
1811 }
1812
1813 // 1111 1011 0101 0010 Sm.. ---- fn.- X-Z-; ftod FSm,FDn
1814 8.0xfb+8.0x52+4.Sm,4.0+3.fn,1.0,1.X,1.0,1.Z,1.0:D2:::ftod
1815 "ftod"
1816 *am33_2
1817 {
1818 PC = cia;
1819
1820 if (FPU_DISABLED)
1821 fpu_disabled_exception (SD, CPU, cia);
1822 else
1823 fpu_unimp_exception (SD, CPU, cia);
1824 }
1825
1826 // 1111 1011 0101 0110 fm.- ---- Sn.. X-Z-; dtof FDm,FSn
1827 8.0xfb+8.0x56+3.fm,1.0,4.0+4.Sn,1.X,1.0,1.Z,1.0:D2:::dtof
1828 "dtof"
1829 *am33_2
1830 {
1831 PC = cia;
1832
1833 if (FPU_DISABLED)
1834 fpu_disabled_exception (SD, CPU, cia);
1835 else
1836 fpu_unimp_exception (SD, CPU, cia);
1837 }
1838
1839 // branching:
1840
1841 // 1111 1000 1101 0000 d8; fbeq (d8,PC) (d8 is sign-extended)
1842 8.0xf8+8.0xd0+8.D8:D1:::fbeq
1843 "fbeq"
1844 *am33_2
1845 {
1846 PC = cia;
1847
1848 if (FPU_DISABLED)
1849 fpu_disabled_exception (SD, CPU, cia);
1850 else if ((FPCR & FCC_E))
1851 {
1852 State.regs[REG_PC] += EXTEND8 (D8);
1853 nia = PC;
1854 }
1855 }
1856
1857 // 1111 1000 1101 0001 d8; fbne (d8,PC) (d8 is sign-extended)
1858 8.0xf8+8.0xd1+8.D8:D1:::fbne
1859 "fbne"
1860 *am33_2
1861 {
1862 PC = cia;
1863
1864 if (FPU_DISABLED)
1865 fpu_disabled_exception (SD, CPU, cia);
1866 else if ((FPCR & (FCC_U | FCC_L | FCC_G)))
1867 {
1868 State.regs[REG_PC] += EXTEND8 (D8);
1869 nia = PC;
1870 }
1871 }
1872
1873 // 1111 1000 1101 0010 d8; fbgt (d8,PC) (d8 is sign-extended)
1874 8.0xf8+8.0xd2+8.D8:D1:::fbgt
1875 "fbgt"
1876 *am33_2
1877 {
1878 PC = cia;
1879
1880 if (FPU_DISABLED)
1881 fpu_disabled_exception (SD, CPU, cia);
1882 else if ((FPCR & FCC_G))
1883 {
1884 State.regs[REG_PC] += EXTEND8 (D8);
1885 nia = PC;
1886 }
1887 }
1888
1889 // 1111 1000 1101 0011 d8; fbge (d8,PC) (d8 is sign-extended)
1890 8.0xf8+8.0xd3+8.D8:D1:::fbge
1891 "fbge"
1892 *am33_2
1893 {
1894 PC = cia;
1895
1896 if (FPU_DISABLED)
1897 fpu_disabled_exception (SD, CPU, cia);
1898 else if ((FPCR & (FCC_G | FCC_E)))
1899 {
1900 State.regs[REG_PC] += EXTEND8 (D8);
1901 nia = PC;
1902 }
1903 }
1904
1905 // 1111 1000 1101 0100 d8; fblt (d8,PC) (d8 is sign-extended)
1906 8.0xf8+8.0xd4+8.D8:D1:::fblt
1907 "fblt"
1908 *am33_2
1909 {
1910 PC = cia;
1911
1912 if (FPU_DISABLED)
1913 fpu_disabled_exception (SD, CPU, cia);
1914 else if ((FPCR & FCC_L))
1915 {
1916 State.regs[REG_PC] += EXTEND8 (D8);
1917 nia = PC;
1918 }
1919 }
1920
1921 // 1111 1000 1101 0101 d8; fble (d8,PC) (d8 is sign-extended)
1922 8.0xf8+8.0xd5+8.D8:D1:::fble
1923 "fble"
1924 *am33_2
1925 {
1926 PC = cia;
1927
1928 if (FPU_DISABLED)
1929 fpu_disabled_exception (SD, CPU, cia);
1930 else if ((FPCR & (FCC_L | FCC_E)))
1931 {
1932 State.regs[REG_PC] += EXTEND8 (D8);
1933 nia = PC;
1934 }
1935 }
1936
1937 // 1111 1000 1101 0110 d8; fbuo (d8,PC) (d8 is sign-extended)
1938 8.0xf8+8.0xd6+8.D8:D1:::fbuo
1939 "fbuo"
1940 *am33_2
1941 {
1942 PC = cia;
1943
1944 if (FPU_DISABLED)
1945 fpu_disabled_exception (SD, CPU, cia);
1946 else if ((FPCR & FCC_U))
1947 {
1948 State.regs[REG_PC] += EXTEND8 (D8);
1949 nia = PC;
1950 }
1951 }
1952
1953 // 1111 1000 1101 0111 d8; fblg (d8,PC) (d8 is sign-extended)
1954 8.0xf8+8.0xd7+8.D8:D1:::fblg
1955 "fblg"
1956 *am33_2
1957 {
1958 PC = cia;
1959
1960 if (FPU_DISABLED)
1961 fpu_disabled_exception (SD, CPU, cia);
1962 else if ((FPCR & (FCC_L | FCC_G)))
1963 {
1964 State.regs[REG_PC] += EXTEND8 (D8);
1965 nia = PC;
1966 }
1967 }
1968 // 1111 1000 1101 1000 d8; fbleg (d8,PC) (d8 is sign-extended)
1969 8.0xf8+8.0xd8+8.D8:D1:::fbleg
1970 "fbleg"
1971 *am33_2
1972 {
1973 PC = cia;
1974
1975 if (FPU_DISABLED)
1976 fpu_disabled_exception (SD, CPU, cia);
1977 else if ((FPCR & (FCC_L | FCC_E | FCC_G)))
1978 {
1979 State.regs[REG_PC] += EXTEND8 (D8);
1980 nia = PC;
1981 }
1982 }
1983
1984 // 1111 1000 1101 1001 d8; fbug (d8,PC) (d8 is sign-extended)
1985 8.0xf8+8.0xd9+8.D8:D1:::fbug
1986 "fbug"
1987 *am33_2
1988 {
1989 PC = cia;
1990
1991 if (FPU_DISABLED)
1992 fpu_disabled_exception (SD, CPU, cia);
1993 else if ((FPCR & (FCC_U | FCC_G)))
1994 {
1995 State.regs[REG_PC] += EXTEND8 (D8);
1996 nia = PC;
1997 }
1998 }
1999
2000 // 1111 1000 1101 1010 d8; fbuge (d8,PC) (d8 is sign-extended)
2001 8.0xf8+8.0xda+8.D8:D1:::fbuge
2002 "fbuge"
2003 *am33_2
2004 {
2005 PC = cia;
2006
2007 if (FPU_DISABLED)
2008 fpu_disabled_exception (SD, CPU, cia);
2009 else if ((FPCR & (FCC_U | FCC_G | FCC_E)))
2010 {
2011 State.regs[REG_PC] += EXTEND8 (D8);
2012 nia = PC;
2013 }
2014 }
2015
2016 // 1111 1000 1101 1011 d8; fbul (d8,PC) (d8 is sign-extended)
2017 8.0xf8+8.0xdb+8.D8:D1:::fbul
2018 "fbul"
2019 *am33_2
2020 {
2021 PC = cia;
2022
2023 if (FPU_DISABLED)
2024 fpu_disabled_exception (SD, CPU, cia);
2025 else if ((FPCR & (FCC_U | FCC_L)))
2026 {
2027 State.regs[REG_PC] += EXTEND8 (D8);
2028 nia = PC;
2029 }
2030 }
2031
2032 // 1111 1000 1101 1100 d8; fbule (d8,PC) (d8 is sign-extended)
2033 8.0xf8+8.0xdc+8.D8:D1:::fbule
2034 "fbule"
2035 *am33_2
2036 {
2037 PC = cia;
2038
2039 if (FPU_DISABLED)
2040 fpu_disabled_exception (SD, CPU, cia);
2041 else if ((FPCR & (FCC_U | FCC_L | FCC_E)))
2042 {
2043 State.regs[REG_PC] += EXTEND8 (D8);
2044 nia = PC;
2045 }
2046 }
2047
2048 // 1111 1000 1101 1101 d8; fbue (d8,PC) (d8 is sign-extended)
2049 8.0xf8+8.0xdd+8.D8:D1:::fbue
2050 "fbue"
2051 *am33_2
2052 {
2053 PC = cia;
2054
2055 if (FPU_DISABLED)
2056 fpu_disabled_exception (SD, CPU, cia);
2057 else if ((FPCR & (FCC_U | FCC_E)))
2058 {
2059 State.regs[REG_PC] += EXTEND8 (D8);
2060 nia = PC;
2061 }
2062 }
2063
2064 // 1111 0000 1101 0000; fleq
2065 8.0xf0+8.0xd0:D0:::fleq
2066 "fleq"
2067 *am33_2
2068 {
2069 PC = cia;
2070
2071 if (FPU_DISABLED)
2072 fpu_disabled_exception (SD, CPU, cia);
2073 else if ((FPCR & FCC_E))
2074 {
2075 State.regs[REG_PC] = State.regs[REG_LAR] - 4;
2076 nia = PC;
2077 }
2078 }
2079
2080 // 1111 0000 1101 0001; flne
2081 8.0xf0+8.0xd1:D0:::flne
2082 "flne"
2083 *am33_2
2084 {
2085 PC = cia;
2086
2087 if (FPU_DISABLED)
2088 fpu_disabled_exception (SD, CPU, cia);
2089 else if ((FPCR & (FCC_U | FCC_L | FCC_G)))
2090 {
2091 State.regs[REG_PC] = State.regs[REG_LAR] - 4;
2092 nia = PC;
2093 }
2094 }
2095
2096 // 1111 0000 1101 0010; flgt
2097 8.0xf0+8.0xd2:D0:::flgt
2098 "flgt"
2099 *am33_2
2100 {
2101 PC = cia;
2102
2103 if (FPU_DISABLED)
2104 fpu_disabled_exception (SD, CPU, cia);
2105 else if ((FPCR & FCC_G))
2106 {
2107 State.regs[REG_PC] = State.regs[REG_LAR] - 4;
2108 nia = PC;
2109 }
2110 }
2111
2112 // 1111 0000 1101 0011; flge
2113 8.0xf0+8.0xd3:D0:::flge
2114 "flge"
2115 *am33_2
2116 {
2117 PC = cia;
2118
2119 if (FPU_DISABLED)
2120 fpu_disabled_exception (SD, CPU, cia);
2121 else if ((FPCR & (FCC_G | FCC_E)))
2122 {
2123 State.regs[REG_PC] = State.regs[REG_LAR] - 4;
2124 nia = PC;
2125 }
2126 }
2127
2128 // 1111 0000 1101 0100; fllt
2129 8.0xf0+8.0xd4:D0:::fllt
2130 "fllt"
2131 *am33_2
2132 {
2133 PC = cia;
2134
2135 if (FPU_DISABLED)
2136 fpu_disabled_exception (SD, CPU, cia);
2137 else if ((FPCR & FCC_L))
2138 {
2139 State.regs[REG_PC] = State.regs[REG_LAR] - 4;
2140 nia = PC;
2141 }
2142 }
2143
2144 // 1111 0000 1101 0101; flle
2145 8.0xf0+8.0xd5:D0:::flle
2146 "flle"
2147 *am33_2
2148 {
2149 PC = cia;
2150
2151 if (FPU_DISABLED)
2152 fpu_disabled_exception (SD, CPU, cia);
2153 else if ((FPCR & (FCC_L | FCC_E)))
2154 {
2155 State.regs[REG_PC] = State.regs[REG_LAR] - 4;
2156 nia = PC;
2157 }
2158 }
2159
2160 // 1111 0000 1101 0110; fluo
2161 8.0xf0+8.0xd6:D0:::fluo
2162 "fluo"
2163 *am33_2
2164 {
2165 PC = cia;
2166
2167 if (FPU_DISABLED)
2168 fpu_disabled_exception (SD, CPU, cia);
2169 else if ((FPCR & FCC_U))
2170 {
2171 State.regs[REG_PC] = State.regs[REG_LAR] - 4;
2172 nia = PC;
2173 }
2174 }
2175
2176 // 1111 0000 1101 0111; fllg
2177 8.0xf0+8.0xd7:D0:::fllg
2178 "fllg"
2179 *am33_2
2180 {
2181 PC = cia;
2182
2183 if (FPU_DISABLED)
2184 fpu_disabled_exception (SD, CPU, cia);
2185 else if ((FPCR & (FCC_L | FCC_G)))
2186 {
2187 State.regs[REG_PC] = State.regs[REG_LAR] - 4;
2188 nia = PC;
2189 }
2190 }
2191 // 1111 0000 1101 1000; flleg
2192 8.0xf0+8.0xd8:D0:::flleg
2193 "flleg"
2194 *am33_2
2195 {
2196 PC = cia;
2197
2198 if (FPU_DISABLED)
2199 fpu_disabled_exception (SD, CPU, cia);
2200 else if ((FPCR & (FCC_L | FCC_E | FCC_G)))
2201 {
2202 State.regs[REG_PC] = State.regs[REG_LAR] - 4;
2203 nia = PC;
2204 }
2205 }
2206
2207 // 1111 0000 1101 1001; flug
2208 8.0xf0+8.0xd9:D0:::flug
2209 "flug"
2210 *am33_2
2211 {
2212 PC = cia;
2213
2214 if (FPU_DISABLED)
2215 fpu_disabled_exception (SD, CPU, cia);
2216 else if ((FPCR & (FCC_U | FCC_G)))
2217 {
2218 State.regs[REG_PC] = State.regs[REG_LAR] - 4;
2219 nia = PC;
2220 }
2221 }
2222
2223 // 1111 0000 1101 1010; fluge
2224 8.0xf0+8.0xda:D0:::fluge
2225 "fluge"
2226 *am33_2
2227 {
2228 PC = cia;
2229
2230 if (FPU_DISABLED)
2231 fpu_disabled_exception (SD, CPU, cia);
2232 else if ((FPCR & (FCC_U | FCC_G | FCC_E)))
2233 {
2234 State.regs[REG_PC] = State.regs[REG_LAR] - 4;
2235 nia = PC;
2236 }
2237 }
2238
2239 // 1111 0000 1101 1011; flul
2240 8.0xf0+8.0xdb:D0:::flul
2241 "flul"
2242 *am33_2
2243 {
2244 PC = cia;
2245
2246 if (FPU_DISABLED)
2247 fpu_disabled_exception (SD, CPU, cia);
2248 else if ((FPCR & (FCC_U | FCC_L)))
2249 {
2250 State.regs[REG_PC] = State.regs[REG_LAR] - 4;
2251 nia = PC;
2252 }
2253 }
2254
2255 // 1111 0000 1101 1100; flule
2256 8.0xf0+8.0xdc:D0:::flule
2257 "flule"
2258 *am33_2
2259 {
2260 PC = cia;
2261
2262 if (FPU_DISABLED)
2263 fpu_disabled_exception (SD, CPU, cia);
2264 else if ((FPCR & (FCC_U | FCC_L | FCC_E)))
2265 {
2266 State.regs[REG_PC] = State.regs[REG_LAR] - 4;
2267 nia = PC;
2268 }
2269 }
2270
2271 // 1111 0000 1101 1101; flue
2272 8.0xf0+8.0xdd:D0:::flue
2273 "flue"
2274 *am33_2
2275 {
2276 PC = cia;
2277
2278 if (FPU_DISABLED)
2279 fpu_disabled_exception (SD, CPU, cia);
2280 else if ((FPCR & (FCC_U | FCC_E)))
2281 {
2282 State.regs[REG_PC] = State.regs[REG_LAR] - 4;
2283 nia = PC;
2284 }
2285 }