WebAssembly: handle more than int32 argument/return
[oota-llvm.git] / lib / Target / WebAssembly / WebAssemblyAsmPrinter.cpp
index e0e9a3b14bc28d84ddae9ac5873ceb99a191988c..a3157f40a664a2366435249e832befadb602042d 100644 (file)
@@ -92,10 +92,23 @@ void WebAssemblyAsmPrinter::EmitInstruction(const MachineInstr *MI) {
 
   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;