gdb: add target_ops::supports_displaced_step
[deliverable/binutils-gdb.git] / sim / mn10300 / am33-2.igen
CommitLineData
c76b4bab
AO
1// data cache pre-fetch:
2
3// 1111 1001 1010 0110 Rm.. 0000; dcpf (Rm)
48.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)
178.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)
278.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)
428.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)
568.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)
718.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)
888.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)
978.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)
1148.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
1338.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
1498.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
1668.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
1828.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)
1988.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+)
2148.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)
2318.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
2478.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
2638.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
2768.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
2928.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
3098.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
3258.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)
3428.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)
3588.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)
3758.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)
3918.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
4088.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
4268.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
4458.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)
4628.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)
4808.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)
4998.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
5178.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
5358.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
5548.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
5728.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)
5858.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)
6038.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)
6228.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
6428.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
6588.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
6758.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)
6918.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+)
7078.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)
7248.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
7408.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
7538.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)
7708.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
7878.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
8038.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
8208.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)
8368.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)
8528.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)
8698.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
8858.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
9038.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
9228.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)
9408.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)
9588.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)
9778.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
9948.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
10128.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
10318.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)
10498.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)
10678.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)
10868.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
11068.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
11248.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
11408.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
11598.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
11788.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
11918.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
12108.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
12238.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
12428.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
12558.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
12748.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
12878.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
13008.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
13138.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
13268.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
13398.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
13528.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
13658.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
13788.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
13918.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
14048.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
14178.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
14348.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
14488.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
14618.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
14758.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
14898.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
15078.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
15218.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
15348.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
15488.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
15628.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
15808.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
15948.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
16078.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
16218.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
16358.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
16538.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
16678.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
16808.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
16948.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
17088.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
17268.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
17418.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
17568.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
17718.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
17888.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
18018.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
18148.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
18278.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)
18428.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)
18588.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)
18748.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)
18908.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)
19068.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)
19228.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)
19388.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)
19548.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)
19698.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)
19858.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)
20018.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)
20178.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)
20338.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)
20498.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
20658.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
20818.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
20978.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
21138.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
21298.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
21458.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
21618.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
21778.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
21928.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
22088.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
22248.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
22408.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
22568.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
22728.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}
This page took 0.77219 seconds and 4 git commands to generate.