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;