//===-- FormatterBytecode.def -----------------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef DEFINE_OPCODE #define DEFINE_OPCODE(OP, MNEMONIC, NAME) #endif #ifndef DEFINE_SELECTOR #define DEFINE_SELECTOR(ID, NAME) #endif #ifndef DEFINE_SIGNATURE #define DEFINE_SIGNATURE(ID, NAME) #endif // Opcodes. DEFINE_OPCODE(0x01, "dup", dup) DEFINE_OPCODE(0x02, "drop", drop) DEFINE_OPCODE(0x03, "pick", pick) DEFINE_OPCODE(0x04, "over", over) DEFINE_OPCODE(0x05, "swap", swap) DEFINE_OPCODE(0x06, "rot", rot) DEFINE_OPCODE(0x10, "{", begin) DEFINE_OPCODE(0x11, "if", if) DEFINE_OPCODE(0x12, "ifelse", ifelse) DEFINE_OPCODE(0x13, "return", return) DEFINE_OPCODE(0x20, nullptr, lit_uint) DEFINE_OPCODE(0x21, nullptr, lit_int) DEFINE_OPCODE(0x22, nullptr, lit_string) DEFINE_OPCODE(0x23, nullptr, lit_selector) DEFINE_OPCODE(0x2a, "as_int", as_int) DEFINE_OPCODE(0x2b, "as_uint", as_uint) DEFINE_OPCODE(0x2c, "is_null", is_null) DEFINE_OPCODE(0x30, "+", plus) DEFINE_OPCODE(0x31, "-", minus) DEFINE_OPCODE(0x32, "*", mul) DEFINE_OPCODE(0x33, "/", div) DEFINE_OPCODE(0x34, "%", mod) DEFINE_OPCODE(0x35, "<<", shl) DEFINE_OPCODE(0x36, ">>", shr) DEFINE_OPCODE(0x40, "&", and) DEFINE_OPCODE(0x41, "|", or) DEFINE_OPCODE(0x42, "^", xor) DEFINE_OPCODE(0x43, "~", not) DEFINE_OPCODE(0x50, "=", eq) DEFINE_OPCODE(0x51, "!=", neq) DEFINE_OPCODE(0x52, "<", lt) DEFINE_OPCODE(0x53, ">", gt) DEFINE_OPCODE(0x54, "=<", le) DEFINE_OPCODE(0x55, ">=", ge) DEFINE_OPCODE(0x60, "call", call) // Selectors. DEFINE_SELECTOR(0x00, summary) DEFINE_SELECTOR(0x01, type_summary) DEFINE_SELECTOR(0x10, get_num_children) DEFINE_SELECTOR(0x11, get_child_at_index) DEFINE_SELECTOR(0x12, get_child_with_name) DEFINE_SELECTOR(0x13, get_child_index) DEFINE_SELECTOR(0x15, get_type) DEFINE_SELECTOR(0x16, get_template_argument_type) DEFINE_SELECTOR(0x17, cast) DEFINE_SELECTOR(0x20, get_value) DEFINE_SELECTOR(0x21, get_value_as_unsigned) DEFINE_SELECTOR(0x22, get_value_as_signed) DEFINE_SELECTOR(0x23, get_value_as_address) DEFINE_SELECTOR(0x40, read_memory_byte) DEFINE_SELECTOR(0x41, read_memory_uint32) DEFINE_SELECTOR(0x42, read_memory_int32) DEFINE_SELECTOR(0x43, read_memory_unsigned) DEFINE_SELECTOR(0x44, read_memory_signed) DEFINE_SELECTOR(0x45, read_memory_address) DEFINE_SELECTOR(0x46, read_memory) DEFINE_SELECTOR(0x50, fmt) DEFINE_SELECTOR(0x51, sprintf) DEFINE_SELECTOR(0x52, strlen) // Formatter signatures. DEFINE_SIGNATURE(0, summary) DEFINE_SIGNATURE(1, init) DEFINE_SIGNATURE(2, get_num_children) DEFINE_SIGNATURE(3, get_child_index) DEFINE_SIGNATURE(4, get_child_at_index) DEFINE_SIGNATURE(5, get_value) #undef DEFINE_OPCODE #undef DEFINE_SELECTOR #undef DEFINE_SIGNATURE