* switch: switch statement with fallthrough
*/
+multiclass RETURN<WebAssemblyRegClass vt> {
+ def RETURN_#vt : I<(outs), (ins vt:$val), [(WebAssemblyreturn vt:$val)]>;
+}
let hasSideEffects = 1, isReturn = 1, isTerminator = 1, hasCtrlDep = 1,
isBarrier = 1 in {
-//FIXME return more than just int32.
-def RETURN : I<(outs), (ins Int32:$val), [(WebAssemblyreturn Int32:$val)]>;
-def RETURN_VOID : I<(outs), (ins), [(WebAssemblyreturn)]>;
+ defm : RETURN<Int32>;
+ defm : RETURN<Int64>;
+ defm : RETURN<Float32>;
+ defm : RETURN<Float64>;
+ def RETURN_VOID : I<(outs), (ins), [(WebAssemblyreturn)]>;
} // hasSideEffects = 1, isReturn = 1, isTerminator = 1, hasCtrlDep = 1,
// isBarrier = 1