103 lines · plain
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-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef DEFINE_OPCODE10#define DEFINE_OPCODE(OP, MNEMONIC, NAME)11#endif12#ifndef DEFINE_SELECTOR13#define DEFINE_SELECTOR(ID, NAME)14#endif15#ifndef DEFINE_SIGNATURE16#define DEFINE_SIGNATURE(ID, NAME)17#endif18 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_OPCODE101#undef DEFINE_SELECTOR102#undef DEFINE_SIGNATURE103