1//===-- FormatterBytecode.def -----------------------------------*- C++ -*-===// 2// 3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4// See https://llvm.org/LICENSE.txt for license information. 5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6// 7//===----------------------------------------------------------------------===// 8 9#ifndef DEFINE_OPCODE 10#define DEFINE_OPCODE(OP, MNEMONIC, NAME) 11#endif 12#ifndef DEFINE_SELECTOR 13#define DEFINE_SELECTOR(ID, NAME) 14#endif 15#ifndef DEFINE_SIGNATURE 16#define DEFINE_SIGNATURE(ID, NAME) 17#endif 18 19// Opcodes. 20DEFINE_OPCODE(0x01, "dup", dup) 21DEFINE_OPCODE(0x02, "drop", drop) 22DEFINE_OPCODE(0x03, "pick", pick) 23DEFINE_OPCODE(0x04, "over", over) 24DEFINE_OPCODE(0x05, "swap", swap) 25DEFINE_OPCODE(0x06, "rot", rot) 26 27DEFINE_OPCODE(0x10, "{", begin) 28DEFINE_OPCODE(0x11, "if", if) 29DEFINE_OPCODE(0x12, "ifelse", ifelse) 30DEFINE_OPCODE(0x13, "return", return) 31 32DEFINE_OPCODE(0x20, nullptr, lit_uint) 33DEFINE_OPCODE(0x21, nullptr, lit_int) 34DEFINE_OPCODE(0x22, nullptr, lit_string) 35DEFINE_OPCODE(0x23, nullptr, lit_selector) 36 37DEFINE_OPCODE(0x2a, "as_int", as_int) 38DEFINE_OPCODE(0x2b, "as_uint", as_uint) 39DEFINE_OPCODE(0x2c, "is_null", is_null) 40 41DEFINE_OPCODE(0x30, "+", plus) 42DEFINE_OPCODE(0x31, "-", minus) 43DEFINE_OPCODE(0x32, "*", mul) 44DEFINE_OPCODE(0x33, "/", div) 45DEFINE_OPCODE(0x34, "%", mod) 46DEFINE_OPCODE(0x35, "<<", shl) 47DEFINE_OPCODE(0x36, ">>", shr) 48 49DEFINE_OPCODE(0x40, "&", and) 50DEFINE_OPCODE(0x41, "|", or) 51DEFINE_OPCODE(0x42, "^", xor) 52DEFINE_OPCODE(0x43, "~", not) 53 54DEFINE_OPCODE(0x50, "=", eq) 55DEFINE_OPCODE(0x51, "!=", neq) 56DEFINE_OPCODE(0x52, "<", lt) 57DEFINE_OPCODE(0x53, ">", gt) 58DEFINE_OPCODE(0x54, "=<", le) 59DEFINE_OPCODE(0x55, ">=", ge) 60 61DEFINE_OPCODE(0x60, "call", call) 62 63// Selectors. 64DEFINE_SELECTOR(0x00, summary) 65DEFINE_SELECTOR(0x01, type_summary) 66 67DEFINE_SELECTOR(0x10, get_num_children) 68DEFINE_SELECTOR(0x11, get_child_at_index) 69DEFINE_SELECTOR(0x12, get_child_with_name) 70DEFINE_SELECTOR(0x13, get_child_index) 71DEFINE_SELECTOR(0x15, get_type) 72DEFINE_SELECTOR(0x16, get_template_argument_type) 73DEFINE_SELECTOR(0x17, cast) 74 75DEFINE_SELECTOR(0x20, get_value) 76DEFINE_SELECTOR(0x21, get_value_as_unsigned) 77DEFINE_SELECTOR(0x22, get_value_as_signed) 78DEFINE_SELECTOR(0x23, get_value_as_address) 79 80DEFINE_SELECTOR(0x40, read_memory_byte) 81DEFINE_SELECTOR(0x41, read_memory_uint32) 82DEFINE_SELECTOR(0x42, read_memory_int32) 83DEFINE_SELECTOR(0x43, read_memory_unsigned) 84DEFINE_SELECTOR(0x44, read_memory_signed) 85DEFINE_SELECTOR(0x45, read_memory_address) 86DEFINE_SELECTOR(0x46, read_memory) 87 88DEFINE_SELECTOR(0x50, fmt) 89DEFINE_SELECTOR(0x51, sprintf) 90DEFINE_SELECTOR(0x52, strlen) 91 92// Formatter signatures. 93DEFINE_SIGNATURE(0, summary) 94DEFINE_SIGNATURE(1, init) 95DEFINE_SIGNATURE(2, get_num_children) 96DEFINE_SIGNATURE(3, get_child_index) 97DEFINE_SIGNATURE(4, get_child_at_index) 98DEFINE_SIGNATURE(5, get_value) 99 100#undef DEFINE_OPCODE 101#undef DEFINE_SELECTOR 102#undef DEFINE_SIGNATURE 103