aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Target/WebAssembly/Disassembler/WebAssemblyDisassembler.cpp
diff options
context:
space:
mode:
authorPaulo Matos <pmatos@igalia.com>2021-12-05 13:50:47 +0100
committerPaulo Matos <pmatos@igalia.com>2021-12-06 09:46:15 +0100
commita96d8285101546c92116246939c2d53c57b88cf0 (patch)
tree22f76c55af8cde9ec51c718536ca4569318208fb /llvm/lib/Target/WebAssembly/Disassembler/WebAssemblyDisassembler.cpp
parent3ec6b1bfacebd65450662c75215a96ae59769368 (diff)
downloadllvm-a96d8285101546c92116246939c2d53c57b88cf0.zip
llvm-a96d8285101546c92116246939c2d53c57b88cf0.tar.gz
llvm-a96d8285101546c92116246939c2d53c57b88cf0.tar.bz2
[WebAssembly] Implementation of intrinsic for ref.null and HeapType removal
This patch implements the intrinsic for ref.null. In the process of implementing int_wasm_ref_null_func() and int_wasm_ref_null_extern() intrinsics, it removes the redundant HeapType. This also causes the textual assembler syntax for ref.null to change. Instead of receiving an argument: `func` or `extern`, the instruction mnemonic is either ref.null_func or ref.null_extern, without the need for a further operand. Reviewed By: tlively Differential Revision: https://reviews.llvm.org/D114979
Diffstat (limited to 'llvm/lib/Target/WebAssembly/Disassembler/WebAssemblyDisassembler.cpp')
-rw-r--r--llvm/lib/Target/WebAssembly/Disassembler/WebAssemblyDisassembler.cpp22
1 files changed, 0 insertions, 22 deletions
diff --git a/llvm/lib/Target/WebAssembly/Disassembler/WebAssemblyDisassembler.cpp b/llvm/lib/Target/WebAssembly/Disassembler/WebAssemblyDisassembler.cpp
index 2e1e4f0..5d38145 100644
--- a/llvm/lib/Target/WebAssembly/Disassembler/WebAssemblyDisassembler.cpp
+++ b/llvm/lib/Target/WebAssembly/Disassembler/WebAssemblyDisassembler.cpp
@@ -241,28 +241,6 @@ MCDisassembler::DecodeStatus WebAssemblyDisassembler::getInstruction(
}
break;
}
- // heap_type operands, for e.g. ref.null:
- case WebAssembly::OPERAND_HEAPTYPE: {
- int64_t Val;
- uint64_t PrevSize = Size;
- if (!nextLEB(Val, Bytes, Size, true))
- return MCDisassembler::Fail;
- if (Val < 0 && Size == PrevSize + 1) {
- // The HeapType encoding is like BlockType, in that encodings that
- // decode as negative values indicate ValTypes. In practice we expect
- // either wasm::ValType::EXTERNREF or wasm::ValType::FUNCREF here.
- //
- // The positive SLEB values are reserved for future expansion and are
- // expected to be type indices in the typed function references
- // proposal, and should disassemble as MCSymbolRefExpr as in BlockType
- // above.
- MI.addOperand(MCOperand::createImm(Val & 0x7f));
- } else {
- MI.addOperand(
- MCOperand::createImm(int64_t(WebAssembly::HeapType::Invalid)));
- }
- break;
- }
// FP operands.
case WebAssembly::OPERAND_F32IMM: {
if (!parseImmediate<float>(MI, Size, Bytes))