executed pygen, we now have cpu instructions yay, made some changes to pygen

This commit is contained in:
2026-03-20 11:04:37 -06:00
parent 0d8fef5ef9
commit 16fa0bf3ea
4 changed files with 930 additions and 23 deletions

View File

@@ -0,0 +1,268 @@
#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
{ 0x00, 0x00 }, // FVR
{ 0x00, 0x00 }, // MOV
{ 0x00, 0x00 }, // MOR
{ 0x00, 0x00 }, // AMOV
{ 0x04, 0x04 }, // SWP
{ 0x04, 0x00 }, // AHM
{ 0x00, 0x00 }, // COM
{ 0x00, 0x00 }, // NEG
{ 0x00, 0x00 }, // EXS
{ 0x00, 0x00 }, // INC
{ 0x00, 0x00 }, // DEC
{ 0x00, 0x00 }, // ADD
{ 0x00, 0x00 }, // SUB
{ 0x00, 0x00 }, // MUL
{ 0x00, 0x00 }, // UMUL
{ 0x00, 0x00 }, // DIV
{ 0x00, 0x00 }, // UDIV
{ 0x00, 0x00 }, // MOD
{ 0x00, 0x00 }, // UMOD
{ 0x00, 0x00 }, // DMOD
{ 0x00, 0x00 }, // UDMD
{ 0x00, 0x00 }, // FBT
{ 0x00, 0x00 }, // STB
{ 0x00, 0x00 }, // CRB
{ 0x00, 0x00 }, // TSB
{ 0x00, 0x00 }, // BOOL
{ 0x00, 0x00 }, // NOT
{ 0x00, 0x00 }, // AND
{ 0x00, 0x00 }, // OR
{ 0x00, 0x00 }, // XOR
{ 0x00, 0x00 }, // SHL
{ 0x00, 0x00 }, // SHR
{ 0x00, 0x00 }, // SSR
{ 0x00, 0x00 }, // ROL
{ 0x00, 0x00 }, // ROR
{ 0x00, 0x00 }, // CNT
{ 0x00, 0x00 }, // EQ
{ 0x00, 0x00 }, // NE
{ 0x00, 0x00 }, // GT
{ 0x00, 0x00 }, // GE
{ 0x00, 0x00 }, // LT
{ 0x00, 0x00 }, // LE
{ 0x00, 0x00 }, // JMP
{ 0x00, 0x00 }, // JEQ
{ 0x00, 0x00 }, // JNE
{ 0x00, 0x00 }, // JIF
{ 0x00, 0x00 }, // JMR
{ 0x00, 0x00 }, // JER
{ 0x00, 0x00 }, // JNR
{ 0x00, 0x00 }, // JIR
{ 0x00, 0x00 }, // SFB
{ 0x00, 0x00 }, // LFB
{ 0x00, 0x00 }, // JUF
{ 0x00, 0x00 }, // JUR
{ 0x00, 0x00 }, // PUSH
{ 0x00, 0x00 }, // POP
{ 0x00, 0x00 }, // ALLOC
{ 0x00, 0x00 }, // HFREE
{ 0x00, 0x00 }, // CALL
{ 0x00, 0x00 }, // RET
{ 0x00, 0x00 }, // EDI
{ 0x00, 0x00 }, // SHSS
{ 0x00, 0x00 }, // FLI
{ 0x00, 0x00 }, // FNEG
{ 0x00, 0x00 }, // FADD
{ 0x00, 0x00 }, // FSUB
{ 0x00, 0x00 }, // FMUL
{ 0x00, 0x00 }, // FDIV
{ 0x00, 0x00 }, // FMOD
{ 0x00, 0x00 }, // FDMOD
{ 0x00, 0x00 }, // FEPS
{ 0x00, 0x00 }, // FEEP
{ 0x00, 0x00 }, // FEQ
{ 0x00, 0x00 }, // FNE
{ 0x00, 0x00 }, // FGT
{ 0x00, 0x00 }, // FGE
{ 0x00, 0x00 }, // FLT
{ 0x00, 0x00 }, // FLE
{ 0x00, 0x00 }, // F2D
{ 0x00, 0x00 }, // D2F
{ 0x00, 0x00 }, // I2F
{ 0x00, 0x00 }, // I2D
{ 0x00, 0x00 }, // L2F
{ 0x00, 0x00 }, // L2D
{ 0x00, 0x00 }, // F2I
{ 0x00, 0x00 }, // F2L
{ 0x00, 0x00 }, // D2I
{ 0x00, 0x00 }, // D2L
{ 0x00, 0x00 }, // SIN
{ 0x00, 0x00 }, // COS
{ 0x00, 0x00 }, // TAN
{ 0x00, 0x00 }, // ASIN
{ 0x00, 0x00 }, // ACOS
{ 0x00, 0x00 }, // ATAN
{ 0x00, 0x00 }, // ATAN2
{ 0x00, 0x00 }, // EXP
{ 0x00, 0x00 }, // LOG
{ 0x00, 0x00 }, // LOGAB
{ 0x00, 0x00 }, // POW
{ 0x00, 0x00 }, // SQRT
{ 0x00, 0x00 }, // 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 }, // 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
0x0F, // INT
0x0C, // LRV
0x0F, // FSR
0x0F, // FIR
0x0F, // FZR
0x0F, // LSR
0x0F, // FVR
0x00, // MOV
0x00, // MOR
0x00, // AMOV
0x00, // SWP
0x0F, // 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
0x00, // FLI
0x00, // FNEG
0x00, // FADD
0x00, // FSUB
0x00, // FMUL
0x00, // FDIV
0x00, // FMOD
0x00, // FDMOD
0x00, // FEPS
0x00, // FEEP
0x00, // FEQ
0x00, // FNE
0x00, // FGT
0x00, // FGE
0x00, // FLT
0x00, // FLE
0x00, // F2D
0x00, // D2F
0x00, // I2F
0x00, // I2D
0x00, // L2F
0x00, // L2D
0x00, // F2I
0x00, // F2L
0x00, // D2I
0x00, // D2L
0x00, // SIN
0x00, // COS
0x00, // TAN
0x00, // ASIN
0x00, // ACOS
0x00, // ATAN
0x00, // ATAN2
0x00, // EXP
0x00, // LOG
0x00, // LOGAB
0x00, // POW
0x00, // SQRT
0x00, // ROOT
0x00, // ADC
0x00, // SWC
0x00, // MWO
0x00, // UMO
0x00, // MADD
0x00, // MSUB
0x00, // MMUL
0x00, // MINV
0x00, // MTRA
0x00, // MDET
0x00, // XADD
0x00, // XSUB
0x00, // XAMA
0x00, // XMUL
0x00, // XDIV
0x00, // UPY
};
} // namespace spider