Skip to content

Instantly share code, notes, and snippets.

@Subv
Created June 26, 2015 02:52
Show Gist options
  • Select an option

  • Save Subv/5bad26e2b106c1468511 to your computer and use it in GitHub Desktop.

Select an option

Save Subv/5bad26e2b106c1468511 to your computer and use it in GitHub Desktop.
const Info& GetInfo() const {
#define unknown_instruction { OpCode::Type::Unknown, 0, "UNK" }
#define dummy { OpCode::Type::Unknown, 0, "DMY" }
static const OpCode::Info info_table[] = {
{ OpCode::Type::Arithmetic, OpCode::Info::TwoArguments, "add" },
{ OpCode::Type::Arithmetic, OpCode::Info::TwoArguments, "dp3" },
{ OpCode::Type::Arithmetic, OpCode::Info::TwoArguments, "dp4" },
{ OpCode::Type::Arithmetic, OpCode::Info::TwoArguments, "dph" },
unknown_instruction,
{ OpCode::Type::Arithmetic, OpCode::Info::OneArgument, "exp" },
{ OpCode::Type::Arithmetic, OpCode::Info::OneArgument, "log" },
unknown_instruction,
{ OpCode::Type::Arithmetic, OpCode::Info::TwoArguments, "mul" },
{ OpCode::Type::Arithmetic, OpCode::Info::TwoArguments, "sge" },
{ OpCode::Type::Arithmetic, OpCode::Info::TwoArguments, "slt" },
{ OpCode::Type::Arithmetic, OpCode::Info::OneArgument, "flr" },
{ OpCode::Type::Arithmetic, OpCode::Info::TwoArguments, "max" },
{ OpCode::Type::Arithmetic, OpCode::Info::TwoArguments, "min" },
{ OpCode::Type::Arithmetic, OpCode::Info::OneArgument, "rcp" },
{ OpCode::Type::Arithmetic, OpCode::Info::OneArgument, "rsq" },
unknown_instruction,
unknown_instruction,
{ OpCode::Type::Arithmetic, OpCode::Info::MOVA, "mova" },
{ OpCode::Type::Arithmetic, OpCode::Info::OneArgument, "mov" },
unknown_instruction,
unknown_instruction,
unknown_instruction,
unknown_instruction,
{ OpCode::Type::Arithmetic, OpCode::Info::TwoArguments | OpCode::Info::SrcInversed, "dphi" },
unknown_instruction,
{ OpCode::Type::Arithmetic, OpCode::Info::TwoArguments | OpCode::Info::SrcInversed, "sgei" },
{ OpCode::Type::Arithmetic, OpCode::Info::TwoArguments | OpCode::Info::SrcInversed, "slti" },
unknown_instruction,
unknown_instruction,
unknown_instruction,
unknown_instruction,
unknown_instruction,
{ OpCode::Type::Trivial, 0, "nop" },
{ OpCode::Type::Trivial, 0, "end" },
{ OpCode::Type::Conditional, OpCode::Info::BREAKC, "breakc" },
{ OpCode::Type::Conditional, OpCode::Info::CALL, "call" },
{ OpCode::Type::Conditional, OpCode::Info::CALLC, "callc" },
{ OpCode::Type::UniformFlowControl, OpCode::Info::CALLU, "callu" },
{ OpCode::Type::UniformFlowControl, OpCode::Info::IFU, "ifu" },
{ OpCode::Type::Conditional, OpCode::Info::IFC, "ifc" },
{ OpCode::Type::UniformFlowControl, OpCode::Info::LOOP, "loop" },
{ OpCode::Type::Trivial, 0, "emit" },
{ OpCode::Type::SetEmit, 0, "setemit" },
{ OpCode::Type::Conditional, OpCode::Info::JMPC, "jmpc" },
{ OpCode::Type::Conditional, OpCode::Info::JMPU, "jmpu" },
{ OpCode::Type::Arithmetic, OpCode::Info::Compare, "cmp" },
{ OpCode::Type::Arithmetic, OpCode::Info::Compare, "cmp" },
{ OpCode::Type::MultiplyAdd, OpCode::Info::SrcInversed, "madi" },
{ OpCode::Type::MultiplyAdd, OpCode::Info::SrcInversed, "madi" },
{ OpCode::Type::MultiplyAdd, OpCode::Info::SrcInversed, "madi" },
{ OpCode::Type::MultiplyAdd, OpCode::Info::SrcInversed, "madi" },
{ OpCode::Type::MultiplyAdd, OpCode::Info::SrcInversed, "madi" },
{ OpCode::Type::MultiplyAdd, OpCode::Info::SrcInversed, "madi" },
{ OpCode::Type::MultiplyAdd, OpCode::Info::SrcInversed, "madi" },
{ OpCode::Type::MultiplyAdd, OpCode::Info::SrcInversed, "madi" },
{ OpCode::Type::MultiplyAdd, 0, "mad" },
{ OpCode::Type::MultiplyAdd, 0, "mad" },
{ OpCode::Type::MultiplyAdd, 0, "mad" },
{ OpCode::Type::MultiplyAdd, 0, "mad" },
{ OpCode::Type::MultiplyAdd, 0, "mad" },
{ OpCode::Type::MultiplyAdd, 0, "mad" },
{ OpCode::Type::MultiplyAdd, 0, "mad" },
{ OpCode::Type::MultiplyAdd, 0, "mad" }
};
#undef dummy
#undef unknown_instruction
return info_table[value];
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment