* hppa.h (pa_opcodes): Use "cX" completer instead of "cx" in fstqx
[external/binutils.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   unsigned32 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   unsigned32 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       unsigned32 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       unsigned32 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 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 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 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 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 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 }