WebAssembly: handle more than int32 argument/return
Summary: Also test 64-bit integers, except shifts for now which are broken because isel dislikes the 32-bit truncate that precedes them.
Reviewers: sunfish
Subscribers: llvm-commits, jfb
Differential Revision: http://reviews.llvm.org/D11699
llvm-svn: 243822
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp
index e0e9a3b..a3157f4 100644
--- a/llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp
+++ b/llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp
@@ -92,10 +92,23 @@
bool PrintOperands = true;
switch (MI->getOpcode()) {
- case WebAssembly::ARGUMENT:
+ case WebAssembly::ARGUMENT_Int32:
+ case WebAssembly::ARGUMENT_Int64:
+ case WebAssembly::ARGUMENT_Float32:
+ case WebAssembly::ARGUMENT_Float64:
OS << "argument " << MI->getOperand(1).getImm();
PrintOperands = false;
break;
+ case WebAssembly::RETURN_Int32:
+ case WebAssembly::RETURN_Int64:
+ case WebAssembly::RETURN_Float32:
+ case WebAssembly::RETURN_Float64:
+ case WebAssembly::RETURN_VOID:
+ // FIXME This is here only so "return" prints nicely, instead of printing
+ // the isel name. Other operations have the same problem, fix this in
+ // a generic way instead.
+ OS << "return";
+ break;
default:
OS << TII->getName(MI->getOpcode());
break;