123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263 |
- namespace Unity.Burst.Editor
- {
- internal partial class BurstDisassembler
- {
- internal class WasmInstructionInfo
- {
- internal static bool GetWasmInfo(string instructionName, out string instructionInfo)
- {
- var returnValue = true;
-
- switch (instructionName)
- {
- case "if":
- instructionInfo = "Executes a statement if the last item on the stack is true.";
- break;
- case "end":
- instructionInfo = "Can be used to end a block, loop, if or else.";
- break;
- case "end_function":
- instructionInfo = "Ends function.";
- break;
- case "block":
- instructionInfo = "Creates a label that can later be branched out of with a br.";
- break;
- case "end_block":
- instructionInfo = "Ends the previous opened block.";
- break;
- case "loop":
- instructionInfo = "Creates a label that can later be branched to with a br.";
- break;
- case "end_loop":
- instructionInfo = "Ends the previous opened loop label.";
- break;
- case "unreachable":
- instructionInfo = "Denotes a point in code that should not be reachable.";
- break;
- case "nop":
- instructionInfo = "Does nothing.";
- break;
- case "call":
- instructionInfo = "Calls a function.";
- break;
- case "call_indirect":
- instructionInfo = "Calls a function in a table.";
- break;
- case "drop":
- instructionInfo = "Pops a value from the stack, and discards it.";
- break;
- case "select":
- instructionInfo = "Selects one of its first two operands based on a boolean condition.";
- break;
- case "get":
- instructionInfo = "Load the value of a variable onto the stack.";
- break;
- case "set":
- instructionInfo = "Set the value of a variable.";
- break;
- case "tee":
- instructionInfo = "Set the value of a variable and keep the value on the stack.";
- break;
- case "load":
- instructionInfo = "Load a number from memory.";
- break;
- case "load8_s":
- instructionInfo = "Load a signed 8-bit value from memory.";
- break;
- case "load8_u":
- instructionInfo = "Load an unsigned 8-bit value from memory.";
- break;
- case "load16_s":
- instructionInfo = "Load a signed 16-bit value from memory.";
- break;
- case "load16_u":
- instructionInfo = "Load an unsigned 16-bit value from memory.";
- break;
- case "load32_s":
- instructionInfo = "Load a signed 32-bit value from memory.";
- break;
- case "load32_u":
- instructionInfo = "Load an unsigned 32-bit value from memory.";
- break;
- case "store":
- instructionInfo = "Store a number in memory.";
- break;
- case "store8":
- instructionInfo = "Store a 8-bit number in memory.";
- break;
- case "store16":
- instructionInfo = "Store a 16-bit number in memory.";
- break;
- case "store32":
- instructionInfo = "Store a 32-bit number in memory.";
- break;
- case "size":
- instructionInfo = "Get the size of the memory instance.";
- break;
- case "grow":
- instructionInfo = "Increase the size of the memory instance.";
- break;
- case "const":
- instructionInfo = "Declare a constant number.";
- break;
- case "clz":
- instructionInfo = "Count leading zeros in a numbers binary representation.";
- break;
- case "ctz":
- instructionInfo = "Count trailing zeros in a numbers binary representation.";
- break;
- case "popcnt":
- instructionInfo = "Count the number of '1' in a numbers binary representation.";
- break;
- case "add":
- instructionInfo = "Add up two numbers.";
- break;
- case "sub":
- instructionInfo = "Subtract one number from another number.";
- break;
- case "mul":
- instructionInfo = "Multiply one number by another number.";
- break;
- case "div_s":
- instructionInfo = "Divide two signed numbers.";
- break;
- case "div_u":
- instructionInfo = "Divide two unsigned numbers.";
- break;
- case "rem_s":
- instructionInfo = "Calculate the remainder left over when two signed integers are divided.";
- break;
- case "rem_u":
- instructionInfo = "Calculate the remainder left over when two unsigned integers are divided.";
- break;
- case "and":
- instructionInfo = "Bitwise and operation.";
- break;
- case "or":
- instructionInfo = "Bitwise or operation.";
- break;
- case "xor":
- instructionInfo = "Bitwise exclusive or operation.";
- break;
- case "shl":
- instructionInfo = "Bitwise shift left operation.";
- break;
- case "shr_s":
- instructionInfo = "Bitwise signed shift right operation.";
- break;
- case "shr_u":
- instructionInfo = "Bitwise unsigned shift right operation.";
- break;
- case "rotl":
- instructionInfo = "Bitwise rotate left operation.";
- break;
- case "rotr":
- instructionInfo = "Bitwise rotate right operation.";
- break;
- case "abs":
- instructionInfo = "Get the absolute value of a number.";
- break;
- case "neg":
- instructionInfo = "Negate a number.";
- break;
- case "ceil":
- instructionInfo = "Round up a number.";
- break;
- case "floor":
- instructionInfo = "Round down a number.";
- break;
- case "trunc":
- instructionInfo = "Discard the fractional part of a number.";
- break;
- case "sqrt":
- instructionInfo = "Get the square root of a number.";
- break;
- case "div":
- instructionInfo = "Divide two numbers.";
- break;
- case "min":
- instructionInfo = "Get the lower of two numbers.";
- break;
- case "max":
- instructionInfo = "Get the highest of two numbers.";
- break;
- case "copysign":
- instructionInfo = "Copy just the sign bit from one number to another.";
- break;
- case "wrap_i64":
- instructionInfo = "Convert (wrap) i64 number to i32 number.";
- break;
- case "trunc_f32_s":
- instructionInfo = "Truncate fractional part away from a signed 32-bit floating number, giving a " +
- "signed 32-bit integer.";
- break;
- case "trunc_f32_u":
- instructionInfo = "Truncate fractional part away from a unsigned 32-bit floating number, giving a " +
- "unsigned 32-bit integer.";
- break;
- case "trunc_f64_s":
- instructionInfo = "Truncate fractional part away from a signed 64-bit floating number, giving a " +
- "signed 64-bit integer.";
- break;
- case "trunc_f64_u":
- instructionInfo = "Truncate fractional part away from a unsigned 64-bit floating number, giving a " +
- "unsigned 64-bit integer.";
- break;
- case "extend_i32_s":
- instructionInfo = "Convert (extend) signed 32-bit integer to signed 64-bit integer number.";
- break;
- case "extend_i32_u":
- instructionInfo = "Convert (extend) unsigned 32-bit integer to unsigned 64-bit integer number.";
- break;
- case "convert_i32_s":
- instructionInfo = "Convert signed 32-bit integer to signed 32-bit floating number.";
- break;
- case "convert_i32_u":
- instructionInfo = "Convert unsigned 32-bit integer to unsigned 32-bit floating number.";
- break;
- case "convert_i64_s":
- instructionInfo = "Convert signed 64-bit integer to signed 64-bit floating number.";
- break;
- case "convert_i64_u":
- instructionInfo = "Convert unsigned 64-bit integer to unsigned 64-bit floating number.";
- break;
- case "demote_f64":
- instructionInfo = "Convert (demote) 64-bit floating number to 32-bit floating number.";
- break;
- case "promote_f32":
- instructionInfo = "Convert (promote) 32-bit floating number to 64-bit floating number.";
- break;
- case "reinterpret_f32":
- instructionInfo = "Reinterpret the bytes of 32-bit floating number as 32-bit integer number.";
- break;
- case "reinterpret_f64":
- instructionInfo = "Reinterpret the bytes of 64-bit floating number as 64-bit integer number.";
- break;
- case "reinterpret_i32":
- instructionInfo = "Reinterpret the bytes of 32-bit integer number as 32-bit floating number.";
- break;
- case "reinterpret_i64":
- instructionInfo = "Reinterpret the bytes of 64-bit integer number as 64-bit floating number.";
- break;
- case "br_if":
- instructionInfo = "Branch to a loop or block if condition is true.";
- break;
- case "br":
- instructionInfo = "Branch to a loop or block.";
- break;
- case "br_table":
- instructionInfo = "Branch to a loop or block if condition based on argument.";
- break;
- case "return":
- instructionInfo = "Returns from a function.";
- break;
- default:
- instructionInfo = string.Empty;
- break;
- }
-
- return returnValue;
- }
- }
- }
- }
|