272 lines
6.5 KiB
C++
272 lines
6.5 KiB
C++
#pragma once
|
|
// AUTO-GENERATED by pygen.ipynb — DO NOT EDIT MANUALLY
|
|
#include <spider/runtime/common.hpp>
|
|
|
|
namespace spider {
|
|
|
|
// Addressing mode masks — indexed by opcode.
|
|
// [opcode][0] = mask for param 1, [opcode][1] = mask for param 2
|
|
constexpr u8 ADDR_MODE_MASKS[][2] = {
|
|
{ 0x00, 0x00 }, // NOP
|
|
{ 0x00, 0x00 }, // SPDR
|
|
{ 0x05, 0x00 }, // MMODE
|
|
{ 0x1F, 0x00 }, // INT
|
|
{ 0x1F, 0x00 }, // LRV
|
|
{ 0x1E, 0x00 }, // FSR
|
|
{ 0x1E, 0x00 }, // FIR
|
|
{ 0x1E, 0x00 }, // FZR
|
|
{ 0x1E, 0x1F }, // LSR
|
|
{ 0x04, 0x00 }, // FVR
|
|
{ 0x1E, 0xFF }, // MOV
|
|
{ 0x04, 0x04 }, // MOR
|
|
{ 0x00, 0x00 }, // AMOV
|
|
{ 0x04, 0x04 }, // SWP
|
|
{ 0x04, 0x00 }, // AHM
|
|
{ 0xFF, 0x00 }, // COM
|
|
{ 0xFF, 0x00 }, // NEG
|
|
{ 0xFF, 0x00 }, // EXS
|
|
{ 0xFF, 0x00 }, // INC
|
|
{ 0xFF, 0x00 }, // DEC
|
|
{ 0x1E, 0xFF }, // ADD
|
|
{ 0x1E, 0xFF }, // SUB
|
|
{ 0x1E, 0xFF }, // MUL
|
|
{ 0x1E, 0xFF }, // UMUL
|
|
{ 0x1E, 0xFF }, // DIV
|
|
{ 0x1E, 0xFF }, // UDIV
|
|
{ 0x1E, 0xFF }, // MOD
|
|
{ 0x1E, 0xFF }, // UMOD
|
|
{ 0x1E, 0xFF }, // DMOD
|
|
{ 0x1E, 0xFF }, // UDMD
|
|
{ 0xFF, 0x00 }, // FBT
|
|
{ 0x1E, 0xFF }, // STB
|
|
{ 0x1E, 0xFF }, // CRB
|
|
{ 0x1E, 0xFF }, // TSB
|
|
{ 0xFF, 0x00 }, // BOOL
|
|
{ 0xFF, 0x00 }, // NOT
|
|
{ 0x1E, 0xFF }, // AND
|
|
{ 0x1E, 0xFF }, // OR
|
|
{ 0x1E, 0xFF }, // XOR
|
|
{ 0x1E, 0xFF }, // SHL
|
|
{ 0x1E, 0xFF }, // SHR
|
|
{ 0x1E, 0xFF }, // SSR
|
|
{ 0x1E, 0xFF }, // ROL
|
|
{ 0x1E, 0xFF }, // ROR
|
|
{ 0xFF, 0x00 }, // CNT
|
|
{ 0x1E, 0xFF }, // EQ
|
|
{ 0x1E, 0xFF }, // NE
|
|
{ 0x1E, 0xFF }, // GT
|
|
{ 0x1E, 0xFF }, // GE
|
|
{ 0x1E, 0xFF }, // LT
|
|
{ 0x1E, 0xFF }, // LE
|
|
{ 0xFF, 0x00 }, // JMP
|
|
{ 0xFF, 0x00 }, // JEQ
|
|
{ 0xFF, 0x00 }, // JNE
|
|
{ 0x1E, 0xFF }, // JIF
|
|
{ 0xFF, 0x00 }, // JMR
|
|
{ 0xFF, 0x00 }, // JER
|
|
{ 0xFF, 0x00 }, // JNR
|
|
{ 0x1E, 0xFF }, // JIR
|
|
{ 0x1E, 0xFF }, // SFB
|
|
{ 0x1E, 0xFF }, // LFB
|
|
{ 0x1E, 0xFF }, // JUF
|
|
{ 0x1E, 0xFF }, // JUR
|
|
{ 0xFF, 0x00 }, // PUSH
|
|
{ 0xFF, 0x00 }, // POP
|
|
{ 0xFF, 0x00 }, // ALLOC
|
|
{ 0xFF, 0x00 }, // HFREE
|
|
{ 0xFF, 0x00 }, // CALL
|
|
{ 0x00, 0x00 }, // RET
|
|
{ 0xFF, 0x00 }, // EDI
|
|
{ 0xFF, 0x00 }, // SHSS
|
|
{ 0xFF, 0x00 }, // FLI
|
|
{ 0xFF, 0x00 }, // FNEG
|
|
{ 0x1E, 0xFF }, // FADD
|
|
{ 0x1E, 0xFF }, // FSUB
|
|
{ 0x1E, 0xFF }, // FMUL
|
|
{ 0x1E, 0xFF }, // FDIV
|
|
{ 0x1E, 0xFF }, // FMOD
|
|
{ 0x1E, 0xFF }, // FDMOD
|
|
{ 0xFF, 0x00 }, // FEPS
|
|
{ 0xFF, 0x00 }, // FEEP
|
|
{ 0x1E, 0xFF }, // FEQ
|
|
{ 0x1E, 0xFF }, // FNE
|
|
{ 0x1E, 0xFF }, // FGT
|
|
{ 0x1E, 0xFF }, // FGE
|
|
{ 0x1E, 0xFF }, // FLT
|
|
{ 0x1E, 0xFF }, // FLE
|
|
{ 0xFF, 0x00 }, // F2D
|
|
{ 0xFF, 0x00 }, // D2F
|
|
{ 0xFF, 0x00 }, // I2F
|
|
{ 0xFF, 0x00 }, // I2D
|
|
{ 0xFF, 0x00 }, // L2F
|
|
{ 0xFF, 0x00 }, // L2D
|
|
{ 0xFF, 0x00 }, // F2I
|
|
{ 0xFF, 0x00 }, // F2L
|
|
{ 0xFF, 0x00 }, // D2I
|
|
{ 0xFF, 0x00 }, // D2L
|
|
{ 0xFF, 0x00 }, // SIN
|
|
{ 0xFF, 0x00 }, // COS
|
|
{ 0xFF, 0x00 }, // TAN
|
|
{ 0xFF, 0x00 }, // ASIN
|
|
{ 0xFF, 0x00 }, // ACOS
|
|
{ 0xFF, 0x00 }, // ATAN
|
|
{ 0x1E, 0xFF }, // ATAN2
|
|
{ 0xFF, 0x00 }, // EXP
|
|
{ 0xFF, 0x00 }, // LOG
|
|
{ 0x1E, 0xFF }, // LOGAB
|
|
{ 0x1E, 0xFF }, // POW
|
|
{ 0xFF, 0x00 }, // SQRT
|
|
{ 0x1E, 0xFF }, // ROOT
|
|
{ 0x00, 0x00 }, // ADC
|
|
{ 0x00, 0x00 }, // SWC
|
|
{ 0x00, 0x00 }, // MWO
|
|
{ 0x00, 0x00 }, // UMO
|
|
{ 0x00, 0x00 }, // MADD
|
|
{ 0x00, 0x00 }, // MSUB
|
|
{ 0x00, 0x00 }, // MMUL
|
|
{ 0x00, 0x00 }, // MINV
|
|
{ 0x00, 0x00 }, // MTRA
|
|
{ 0x00, 0x00 }, // MDET
|
|
{ 0x00, 0x00 }, // QMKA
|
|
{ 0x00, 0x00 }, // QMUL
|
|
{ 0x00, 0x00 }, // XADD
|
|
{ 0x00, 0x00 }, // XSUB
|
|
{ 0x00, 0x00 }, // XAMA
|
|
{ 0x00, 0x00 }, // XMUL
|
|
{ 0x00, 0x00 }, // XDIV
|
|
{ 0x00, 0x00 }, // UPY
|
|
};
|
|
|
|
// Type size masks — indexed by opcode.
|
|
constexpr u8 TYPE_SIZE_MASKS[] = {
|
|
0x00, // NOP
|
|
0x00, // SPDR
|
|
0x01, // MMODE
|
|
0x08, // INT
|
|
0x08, // LRV
|
|
0x08, // FSR
|
|
0x08, // FIR
|
|
0x08, // FZR
|
|
0x08, // LSR
|
|
0x08, // FVR
|
|
0x0F, // MOV
|
|
0x08, // MOR
|
|
0x08, // AMOV
|
|
0x08, // SWP
|
|
0x08, // AHM
|
|
0x0F, // COM
|
|
0x0F, // NEG
|
|
0x0F, // EXS
|
|
0x0F, // INC
|
|
0x0F, // DEC
|
|
0x0F, // ADD
|
|
0x0F, // SUB
|
|
0x0F, // MUL
|
|
0x0F, // UMUL
|
|
0x0F, // DIV
|
|
0x0F, // UDIV
|
|
0x0F, // MOD
|
|
0x0F, // UMOD
|
|
0x0F, // DMOD
|
|
0x0F, // UDMD
|
|
0x0F, // FBT
|
|
0x0F, // STB
|
|
0x0F, // CRB
|
|
0x0F, // TSB
|
|
0x0F, // BOOL
|
|
0x0F, // NOT
|
|
0x0F, // AND
|
|
0x0F, // OR
|
|
0x0F, // XOR
|
|
0x0F, // SHL
|
|
0x0F, // SHR
|
|
0x0F, // SSR
|
|
0x0F, // ROL
|
|
0x0F, // ROR
|
|
0x0F, // CNT
|
|
0x0F, // EQ
|
|
0x0F, // NE
|
|
0x0F, // GT
|
|
0x0F, // GE
|
|
0x0F, // LT
|
|
0x0F, // LE
|
|
0x0F, // JMP
|
|
0x0F, // JEQ
|
|
0x0F, // JNE
|
|
0x0F, // JIF
|
|
0x0F, // JMR
|
|
0x0F, // JER
|
|
0x0F, // JNR
|
|
0x0F, // JIR
|
|
0x0F, // SFB
|
|
0x0F, // LFB
|
|
0x0F, // JUF
|
|
0x0F, // JUR
|
|
0x0F, // PUSH
|
|
0x0F, // POP
|
|
0x0F, // ALLOC
|
|
0x0F, // HFREE
|
|
0x0F, // CALL
|
|
0x0F, // RET
|
|
0x0F, // EDI
|
|
0x0F, // SHSS
|
|
0x0C, // FLI
|
|
0x0C, // FNEG
|
|
0x0C, // FADD
|
|
0x0C, // FSUB
|
|
0x0C, // FMUL
|
|
0x0C, // FDIV
|
|
0x0C, // FMOD
|
|
0x0C, // FDMOD
|
|
0x0C, // FEPS
|
|
0x0C, // FEEP
|
|
0x0C, // FEQ
|
|
0x0C, // FNE
|
|
0x0C, // FGT
|
|
0x0C, // FGE
|
|
0x0C, // FLT
|
|
0x0C, // FLE
|
|
0x00, // F2D
|
|
0x00, // D2F
|
|
0x00, // I2F
|
|
0x00, // I2D
|
|
0x00, // L2F
|
|
0x00, // L2D
|
|
0x00, // F2I
|
|
0x00, // F2L
|
|
0x00, // D2I
|
|
0x00, // D2L
|
|
0x0C, // SIN
|
|
0x0C, // COS
|
|
0x0C, // TAN
|
|
0x0C, // ASIN
|
|
0x0C, // ACOS
|
|
0x0C, // ATAN
|
|
0x0C, // ATAN2
|
|
0x0C, // EXP
|
|
0x0C, // LOG
|
|
0x0C, // LOGAB
|
|
0x0C, // POW
|
|
0x0C, // SQRT
|
|
0x0C, // ROOT
|
|
0x00, // ADC
|
|
0x00, // SWC
|
|
0x00, // MWO
|
|
0x00, // UMO
|
|
0x00, // MADD
|
|
0x00, // MSUB
|
|
0x00, // MMUL
|
|
0x00, // MINV
|
|
0x00, // MTRA
|
|
0x00, // MDET
|
|
0x00, // QMKA
|
|
0x00, // QMUL
|
|
0x00, // XADD
|
|
0x00, // XSUB
|
|
0x00, // XAMA
|
|
0x00, // XMUL
|
|
0x00, // XDIV
|
|
0x00, // UPY
|
|
};
|
|
|
|
} // namespace spider
|