use super::functions::*;
use super::*;
use gpcas_base::instruction_type;
use gpcas_isa::instruction_flags;
pub const MULTI_FORMAT_INSTRUCTIONS: [SimpleIsaInstruction; 64] = [
NOP,
SimpleIsaInstruction {
function: move_instruction,
inputs: 1,
instr_type: instruction_type::MOVE,
instruction_flags: instruction_flags::MEM_IN | instruction_flags::MEM_OUT,
..SimpleIsaInstruction::DEFAULT
},
SimpleIsaInstruction {
function: move_instruction,
inputs: 1,
instr_type: instruction_type::MOVE,
..SimpleIsaInstruction::DEFAULT
},
NOP,
SimpleIsaInstruction {
function: sign_extend_instruction,
inputs: 1,
instr_type: instruction_type::SIMPLE,
..SimpleIsaInstruction::DEFAULT
},
SimpleIsaInstruction {
function: sign_extend_add,
inputs: 2,
instr_type: instruction_type::SIMPLE,
..SimpleIsaInstruction::DEFAULT
},
UNSPECIFIED_INSTRUCTION,
NOT_YET_IMPLEMENTED_INSTRUCTION,
SimpleIsaInstruction {
function: add,
inputs: 2,
instr_type: instruction_type::INT_ADD,
..SimpleIsaInstruction::DEFAULT
},
SimpleIsaInstruction {
function: sub,
inputs: 2,
instr_type: instruction_type::INT_ADD,
..SimpleIsaInstruction::DEFAULT
},
NOT_YET_IMPLEMENTED_INSTRUCTION,
SimpleIsaInstruction {
function: mul,
inputs: 2,
instr_type: instruction_type::INT_ADD,
..SimpleIsaInstruction::DEFAULT
},
NOT_YET_IMPLEMENTED_INSTRUCTION,
NOT_YET_IMPLEMENTED_INSTRUCTION,
SimpleIsaInstruction {
function: div,
inputs: 2,
instr_type: instruction_type::INT_ADD,
..SimpleIsaInstruction::DEFAULT
},
NOT_YET_IMPLEMENTED_INSTRUCTION,
NOT_YET_IMPLEMENTED_INSTRUCTION,
UNSPECIFIED_INSTRUCTION,
NOT_YET_IMPLEMENTED_INSTRUCTION,
NOT_YET_IMPLEMENTED_INSTRUCTION,
SimpleIsaInstruction {
function: min,
inputs: 2,
instr_type: instruction_type::SIMPLE,
..SimpleIsaInstruction::DEFAULT
},
SimpleIsaInstruction {
function: min_u,
inputs: 2,
instr_type: instruction_type::SIMPLE,
..SimpleIsaInstruction::DEFAULT
},
SimpleIsaInstruction {
function: max,
inputs: 2,
instr_type: instruction_type::SIMPLE,
..SimpleIsaInstruction::DEFAULT
},
SimpleIsaInstruction {
function: max_u,
inputs: 2,
instr_type: instruction_type::SIMPLE,
..SimpleIsaInstruction::DEFAULT
},
UNSPECIFIED_INSTRUCTION,
UNSPECIFIED_INSTRUCTION,
NOT_YET_IMPLEMENTED_INSTRUCTION,
NOT_YET_IMPLEMENTED_INSTRUCTION,
NOT_YET_IMPLEMENTED_INSTRUCTION,
UNSPECIFIED_INSTRUCTION,
UNSPECIFIED_INSTRUCTION,
UNSPECIFIED_INSTRUCTION,
SimpleIsaInstruction {
function: shift_left,
inputs: 2,
instr_type: instruction_type::INT_SHIFT,
..SimpleIsaInstruction::DEFAULT
},
NOT_YET_IMPLEMENTED_INSTRUCTION,
SimpleIsaInstruction {
function: shift_right_s,
inputs: 2,
instr_type: instruction_type::INT_SHIFT,
..SimpleIsaInstruction::DEFAULT
},
SimpleIsaInstruction {
function: shift_right_u,
inputs: 2,
instr_type: instruction_type::INT_SHIFT,
..SimpleIsaInstruction::DEFAULT
},
NOT_YET_IMPLEMENTED_INSTRUCTION,
NOT_YET_IMPLEMENTED_INSTRUCTION,
NOT_YET_IMPLEMENTED_INSTRUCTION,
NOT_YET_IMPLEMENTED_INSTRUCTION,
NOT_YET_IMPLEMENTED_INSTRUCTION,
NOT_YET_IMPLEMENTED_INSTRUCTION,
UNSPECIFIED_INSTRUCTION,
UNSPECIFIED_INSTRUCTION,
NOT_YET_IMPLEMENTED_INSTRUCTION,
NOT_YET_IMPLEMENTED_INSTRUCTION,
NOT_YET_IMPLEMENTED_INSTRUCTION,
UNSPECIFIED_INSTRUCTION,
SimpleIsaInstruction {
function: mul_add::<false>,
inputs: 3,
instr_type: instruction_type::INT_MUL_ADD,
has_option_bits: true,
operand_type_override: Some(OperandType::F16),
..SimpleIsaInstruction::DEFAULT
},
SimpleIsaInstruction {
function: mul_add::<false>,
inputs: 3,
instr_type: instruction_type::INT_MUL_ADD,
has_option_bits: true,
..SimpleIsaInstruction::DEFAULT
},
SimpleIsaInstruction {
function: mul_add::<true>,
inputs: 3,
instr_type: instruction_type::INT_MUL_ADD,
has_option_bits: true,
..SimpleIsaInstruction::DEFAULT
},
SimpleIsaInstruction {
function: add_add,
inputs: 3,
instr_type: instruction_type::INT_ADD,
has_option_bits: true,
..SimpleIsaInstruction::DEFAULT
},
NOT_YET_IMPLEMENTED_INSTRUCTION,
NOT_YET_IMPLEMENTED_INSTRUCTION,
UNSPECIFIED_INSTRUCTION,
UNSPECIFIED_INSTRUCTION,
UNSPECIFIED_INSTRUCTION,
UNSPECIFIED_INSTRUCTION,
UNSPECIFIED_INSTRUCTION,
UNSPECIFIED_INSTRUCTION,
UNSPECIFIED_INSTRUCTION,
UNSPECIFIED_INSTRUCTION,
UNSPECIFIED_INSTRUCTION,
UNSPECIFIED_INSTRUCTION,
];