Skip to content

Commit bcb14d3

Browse files
committed
Instr is an enum class now
1 parent ffe35e2 commit bcb14d3

15 files changed

+894
-862
lines changed

Emulator/VAmiga/Components/CPU/CPU.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -123,19 +123,19 @@ Moira::willExecute(const char *func, Instr I, Mode M, Size S, u16 opcode)
123123
{
124124
switch (I) {
125125

126-
case STOP:
126+
case Instr::STOP:
127127

128128
if (!(opcode & 0x2000)) {
129129
// xfiles("STOP instruction (%x)\n", opcode);
130130
}
131131
break;
132132

133-
case TAS:
133+
case Instr::TAS:
134134

135135
xfiles("TAS instruction\n");
136136
break;
137137

138-
case BKPT:
138+
case Instr::BKPT:
139139

140140
xfiles("BKPT instruction\n");
141141
break;
@@ -156,7 +156,7 @@ Moira::didExecute(const char *func, Instr I, Mode M, Size S, u16 opcode)
156156
{
157157
switch (I) {
158158

159-
case RESET:
159+
case Instr::RESET:
160160

161161
xfiles("RESET instruction\n");
162162
amiga.softReset();

Emulator/VAmiga/Components/CPU/Moira/Moira.cpp

+47-47
Original file line numberDiff line numberDiff line change
@@ -589,54 +589,54 @@ Moira::availabilityMask(Instr I) const
589589

590590
switch (I) {
591591

592-
case BKPT: case MOVEC: case MOVES: case MOVEFCCR: case RTD:
592+
case Instr::BKPT: case Instr::MOVEC: case Instr::MOVES: case Instr::MOVEFCCR: case Instr::RTD:
593593

594594
return AV_68010_UP;
595595

596-
case CALLM: case RTM:
596+
case Instr::CALLM: case Instr::RTM:
597597

598598
return AV_68020;
599599

600-
case cpGEN: case cpRESTORE: case cpSAVE: case cpScc: case cpTRAPcc:
600+
case Instr::cpGEN: case Instr::cpRESTORE: case Instr::cpSAVE: case Instr::cpScc: case Instr::cpTRAPcc:
601601

602602
return AV_68020 | AV_68030;
603603

604-
case BFCHG: case BFCLR: case BFEXTS: case BFEXTU: case BFFFO:
605-
case BFINS: case BFSET: case BFTST: case CAS: case CAS2:
606-
case CHK2: case CMP2: case DIVL: case EXTB: case MULL:
607-
case PACK: case TRAPCC: case TRAPCS: case TRAPEQ: case TRAPGE:
608-
case TRAPGT: case TRAPHI: case TRAPLE: case TRAPLS: case TRAPLT:
609-
case TRAPMI: case TRAPNE: case TRAPPL: case TRAPVC: case TRAPVS:
610-
case TRAPF: case TRAPT: case UNPK:
604+
case Instr::BFCHG: case Instr::BFCLR: case Instr::BFEXTS: case Instr::BFEXTU: case Instr::BFFFO:
605+
case Instr::BFINS: case Instr::BFSET: case Instr::BFTST: case Instr::CAS: case Instr::CAS2:
606+
case Instr::CHK2: case Instr::CMP2: case Instr::DIVL: case Instr::EXTB: case Instr::MULL:
607+
case Instr::PACK: case Instr::TRAPCC: case Instr::TRAPCS: case Instr::TRAPEQ: case Instr::TRAPGE:
608+
case Instr::TRAPGT: case Instr::TRAPHI: case Instr::TRAPLE: case Instr::TRAPLS: case Instr::TRAPLT:
609+
case Instr::TRAPMI: case Instr::TRAPNE: case Instr::TRAPPL: case Instr::TRAPVC: case Instr::TRAPVS:
610+
case Instr::TRAPF: case Instr::TRAPT: case Instr::UNPK:
611611

612612
return AV_68020_UP;
613613

614-
case CINV: case CPUSH: case MOVE16:
614+
case Instr::CINV: case Instr::CPUSH: case Instr::MOVE16:
615615

616616
return AV_68040;
617617

618-
case PFLUSH: case PFLUSHA: case PFLUSHAN: case PFLUSHN: case PLOAD:
619-
case PMOVE: case PTEST:
618+
case Instr::PFLUSH: case Instr::PFLUSHA: case Instr::PFLUSHAN: case Instr::PFLUSHN: case Instr::PLOAD:
619+
case Instr::PMOVE: case Instr::PTEST:
620620

621621
return AV_MMU;
622622

623-
case FABS: case FADD: case FBcc: case FCMP: case FDBcc: case FDIV:
624-
case FMOVE: case FMOVEM: case FMUL: case FNEG: case FNOP:
625-
case FRESTORE: case FSAVE: case FScc: case FSQRT: case FSUB:
626-
case FTRAPcc: case FTST:
623+
case Instr::FABS: case Instr::FADD: case Instr::FBcc: case Instr::FCMP: case Instr::FDBcc: case Instr::FDIV:
624+
case Instr::FMOVE: case Instr::FMOVEM: case Instr::FMUL: case Instr::FNEG: case Instr::FNOP:
625+
case Instr::FRESTORE: case Instr::FSAVE: case Instr::FScc: case Instr::FSQRT: case Instr::FSUB:
626+
case Instr::FTRAPcc: case Instr::FTST:
627627

628-
case FSABS: case FDABS: case FSADD: case FDADD: case FSDIV: case FDDIV:
629-
case FSMOVE: case FDMOVE: case FSMUL: case FDMUL: case FSNEG:
630-
case FDNEG: case FSSQRT: case FDSQRT: case FSSUB: case FDSUB:
628+
case Instr::FSABS: case Instr::FDABS: case Instr::FSADD: case Instr::FDADD: case Instr::FSDIV: case Instr::FDDIV:
629+
case Instr::FSMOVE: case Instr::FDMOVE: case Instr::FSMUL: case Instr::FDMUL: case Instr::FSNEG:
630+
case Instr::FDNEG: case Instr::FSSQRT: case Instr::FDSQRT: case Instr::FSSUB: case Instr::FDSUB:
631631

632632
return AV_FPU;
633633

634-
case FACOS: case FASIN: case FATAN: case FATANH: case FCOS: case FCOSH:
635-
case FETOX: case FETOXM1: case FGETEXP: case FGETMAN: case FINT:
636-
case FINTRZ: case FLOG10: case FLOG2: case FLOGN: case FLOGNP1:
637-
case FMOD: case FMOVECR: case FREM: case FSCAL: case FSGLDIV:
638-
case FSGLMUL: case FSIN: case FSINCOS: case FSINH: case FTAN:
639-
case FTANH: case FTENTOX: case FTWOTOX:
634+
case Instr::FACOS: case Instr::FASIN: case Instr::FATAN: case Instr::FATANH: case Instr::FCOS: case Instr::FCOSH:
635+
case Instr::FETOX: case Instr::FETOXM1: case Instr::FGETEXP: case Instr::FGETMAN: case Instr::FINT:
636+
case Instr::FINTRZ: case Instr::FLOG10: case Instr::FLOG2: case Instr::FLOGN: case Instr::FLOGNP1:
637+
case Instr::FMOD: case Instr::FMOVECR: case Instr::FREM: case Instr::FSCAL: case Instr::FSGLDIV:
638+
case Instr::FSGLMUL: case Instr::FSIN: case Instr::FSINCOS: case Instr::FSINH: case Instr::FTAN:
639+
case Instr::FTANH: case Instr::FTENTOX: case Instr::FTWOTOX:
640640

641641
return 0; // M6888x only
642642

@@ -653,19 +653,19 @@ Moira::availabilityMask(Instr I, Mode M, Size S) const
653653

654654
switch (I) {
655655

656-
case CMPI:
656+
case Instr::CMPI:
657657

658658
if (isPrgMode(M)) mask &= AV_68010_UP;
659659
break;
660660

661-
case CHK: case LINK: case BRA: case BHI: case BLS: case BCC: case BCS:
662-
case BNE: case BEQ: case BVC: case BVS: case BPL: case BMI: case BGE:
663-
case BLT: case BGT: case BLE: case BSR:
661+
case Instr::CHK: case Instr::LINK: case Instr::BRA: case Instr::BHI: case Instr::BLS: case Instr::BCC: case Instr::BCS:
662+
case Instr::BNE: case Instr::BEQ: case Instr::BVC: case Instr::BVS: case Instr::BPL: case Instr::BMI: case Instr::BGE:
663+
case Instr::BLT: case Instr::BGT: case Instr::BLE: case Instr::BSR:
664664

665665
if (S == Long) mask &= AV_68020_UP;
666666
break;
667667

668-
case TST:
668+
case Instr::TST:
669669

670670
if (M == Mode(1) || M >= Mode(9)) mask &= AV_68020_UP;
671671
break;
@@ -684,7 +684,7 @@ u16 Moira::availabilityMask(Instr I, Mode M, Size S, u16 ext) const
684684

685685
switch (I) {
686686

687-
case MOVEC:
687+
case Instr::MOVEC:
688688

689689
switch (ext & 0x0FFF) {
690690

@@ -710,7 +710,7 @@ u16 Moira::availabilityMask(Instr I, Mode M, Size S, u16 ext) const
710710
}
711711
break;
712712

713-
case MOVES:
713+
case Instr::MOVES:
714714

715715
if (ext & 0x7FF) mask = 0;
716716
break;
@@ -761,20 +761,20 @@ Moira::isValidExt(Instr I, Mode M, u16 op, u32 ext) const
761761
{
762762
switch (I) {
763763

764-
case BFCHG: return (ext & 0xF000) == 0;
765-
case BFCLR: return (ext & 0xF000) == 0;
766-
case BFEXTS: return (ext & 0x8000) == 0;
767-
case BFEXTU: return (ext & 0x8000) == 0;
768-
case BFFFO: return (ext & 0x8000) == 0;
769-
case BFINS: return (ext & 0x8000) == 0;
770-
case BFSET: return (ext & 0xF000) == 0;
771-
case BFTST: return (ext & 0xF000) == 0;
772-
case CAS: return (ext & 0xFE38) == 0;
773-
case CAS2: return (ext & 0x0E380E38) == 0;
774-
case CHK2: return (ext & 0x07FF) == 0;
775-
case CMP2: return (ext & 0x0FFF) == 0;
776-
case MULL: return (ext & 0x83F8) == 0;
777-
case DIVL: return (ext & 0x83F8) == 0;
764+
case Instr::BFCHG: return (ext & 0xF000) == 0;
765+
case Instr::BFCLR: return (ext & 0xF000) == 0;
766+
case Instr::BFEXTS: return (ext & 0x8000) == 0;
767+
case Instr::BFEXTU: return (ext & 0x8000) == 0;
768+
case Instr::BFFFO: return (ext & 0x8000) == 0;
769+
case Instr::BFINS: return (ext & 0x8000) == 0;
770+
case Instr::BFSET: return (ext & 0xF000) == 0;
771+
case Instr::BFTST: return (ext & 0xF000) == 0;
772+
case Instr::CAS: return (ext & 0xFE38) == 0;
773+
case Instr::CAS2: return (ext & 0x0E380E38) == 0;
774+
case Instr::CHK2: return (ext & 0x07FF) == 0;
775+
case Instr::CMP2: return (ext & 0x0FFF) == 0;
776+
case Instr::MULL: return (ext & 0x83F8) == 0;
777+
case Instr::DIVL: return (ext & 0x83F8) == 0;
778778

779779
default:
780780
fatalError;

Emulator/VAmiga/Components/CPU/Moira/Moira.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -469,7 +469,7 @@ class Moira : public SubComponent {
469469

470470
// Checks if an instruction is a loop mode instruction
471471
template <Instr I>
472-
constexpr bool looping() { return I >= ABCD_LOOP && I <= TST_LOOP; }
472+
constexpr bool looping() { return I >= Instr::ABCD_LOOP && I <= Instr::TST_LOOP; }
473473

474474

475475
//

Emulator/VAmiga/Components/CPU/Moira/MoiraALU.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ template <Core C, Instr I, Size S> u32 bcd(u32 op1, u32 op2);
2222
// Compare instructions (CMPx)
2323
template <Core C, Size S> void cmp(u32 op1, u32 op2);
2424

25-
// Logic instructions (NOT, NEG, NEGX, ANDx, ORx, EORx)
25+
// Logic instructions (NOT, NEG, NEGX, Instr::ANDx, ORx, EORx)
2626
template <Core C, Instr I, Size S> u32 logic(u32 op1);
2727
template <Core C, Instr I, Size S> u32 logic(u32 op1, u32 op2);
2828

0 commit comments

Comments
 (0)