diff options
author | Heejin Ahn <aheejin@gmail.com> | 2020-11-30 01:39:13 -0800 |
---|---|---|
committer | Heejin Ahn <aheejin@gmail.com> | 2020-12-01 19:16:57 -0800 |
commit | 60653e24b6297f2830b9de649f575840ecb364b6 (patch) | |
tree | a5ebb77fd9a153e88063f81ed133e66c1b2c7772 /llvm/lib/Target/WebAssembly/WebAssemblyExplicitLocals.cpp | |
parent | ce5e21868c22479df62ebd8884adc1bd7c964433 (diff) | |
download | llvm-60653e24b6297f2830b9de649f575840ecb364b6.zip llvm-60653e24b6297f2830b9de649f575840ecb364b6.tar.gz llvm-60653e24b6297f2830b9de649f575840ecb364b6.tar.bz2 |
[WebAssembly] Support select and block for reference types
This adds missing `select` instruction support and block return type
support for reference types. Also refactors WebAssemblyInstrRef.td and
rearranges tests in reference-types.s. Tests don't include `exnref`
types, because we currently don't support `exnref` for `ref.null` and
the type will be removed soon anyway.
Reviewed By: tlively, sbc100, wingo
Differential Revision: https://reviews.llvm.org/D92359
Diffstat (limited to 'llvm/lib/Target/WebAssembly/WebAssemblyExplicitLocals.cpp')
-rw-r--r-- | llvm/lib/Target/WebAssembly/WebAssemblyExplicitLocals.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyExplicitLocals.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyExplicitLocals.cpp index e8367d1..2101676 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyExplicitLocals.cpp +++ b/llvm/lib/Target/WebAssembly/WebAssemblyExplicitLocals.cpp @@ -96,6 +96,10 @@ static unsigned getDropOpcode(const TargetRegisterClass *RC) { return WebAssembly::DROP_F64; if (RC == &WebAssembly::V128RegClass) return WebAssembly::DROP_V128; + if (RC == &WebAssembly::FUNCREFRegClass) + return WebAssembly::DROP_FUNCREF; + if (RC == &WebAssembly::EXTERNREFRegClass) + return WebAssembly::DROP_EXTERNREF; if (RC == &WebAssembly::EXNREFRegClass) return WebAssembly::DROP_EXNREF; llvm_unreachable("Unexpected register class"); |