WebAssembly: handle more than int32 argument/return
[oota-llvm.git] / lib / Target / WebAssembly / WebAssemblyInstrInfo.td
index 912f84c6b9afe36513de9855845155ca599bb870..e88a93a63ae0cc7db064c7bf137e93a3dc0babdb 100644 (file)
@@ -55,8 +55,14 @@ def WebAssemblyreturn   : SDNode<"WebAssemblyISD::RETURN",
 
 include "WebAssemblyInstrFormats.td"
 
-def ARGUMENT : I<(outs Int32:$res), (ins i32imm:$argno),
-                 [(set Int32:$res, (WebAssemblyargument timm:$argno))]>;
+multiclass ARGUMENT<WebAssemblyRegClass vt> {
+  def ARGUMENT_#vt : I<(outs vt:$res), (ins i32imm:$argno),
+                       [(set vt:$res, (WebAssemblyargument timm:$argno))]>;
+}
+defm : ARGUMENT<Int32>;
+defm : ARGUMENT<Int64>;
+defm : ARGUMENT<Float32>;
+defm : ARGUMENT<Float64>;
 
 //===----------------------------------------------------------------------===//
 // Additional sets of instructions.