Copy as Markdown

Other Tools

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef jit_ABIFunctionTypeGenerated_h
#define jit_ABIFunctionTypeGenerated_h
/* This file is generated by jit/GenerateABIFunctionType.py. Do not edit! */
#define ABI_FUNCTION_TYPE_ENUM \
Args_General0 = detail::MakeABIFunctionType(ABIType::General, {}),\
Args_General1 = detail::MakeABIFunctionType(ABIType::General, {ABIType::General}),\
Args_General2 = detail::MakeABIFunctionType(ABIType::General, {ABIType::General, ABIType::General}),\
Args_General3 = detail::MakeABIFunctionType(ABIType::General, {ABIType::General, ABIType::General, ABIType::General}),\
Args_General4 = detail::MakeABIFunctionType(ABIType::General, {ABIType::General, ABIType::General, ABIType::General, ABIType::General}),\
Args_General5 = detail::MakeABIFunctionType(ABIType::General, {ABIType::General, ABIType::General, ABIType::General, ABIType::General, ABIType::General}),\
Args_General6 = detail::MakeABIFunctionType(ABIType::General, {ABIType::General, ABIType::General, ABIType::General, ABIType::General, ABIType::General, ABIType::General}),\
Args_General7 = detail::MakeABIFunctionType(ABIType::General, {ABIType::General, ABIType::General, ABIType::General, ABIType::General, ABIType::General, ABIType::General, ABIType::General}),\
Args_General8 = detail::MakeABIFunctionType(ABIType::General, {ABIType::General, ABIType::General, ABIType::General, ABIType::General, ABIType::General, ABIType::General, ABIType::General, ABIType::General}),\
Args_Int64_Double = detail::MakeABIFunctionType(ABIType::Int64, {ABIType::Float64}),\
Args_Double_None = detail::MakeABIFunctionType(ABIType::Float64, {}),\
Args_Int_Double = detail::MakeABIFunctionType(ABIType::General, {ABIType::Float64}),\
Args_Int_Float32 = detail::MakeABIFunctionType(ABIType::General, {ABIType::Float32}),\
Args_Float32_Float32 = detail::MakeABIFunctionType(ABIType::Float32, {ABIType::Float32}),\
Args_Float32_IntInt = detail::MakeABIFunctionType(ABIType::Float32, {ABIType::General, ABIType::General}),\
Args_Double_Double = detail::MakeABIFunctionType(ABIType::Float64, {ABIType::Float64}),\
Args_Double_Int = detail::MakeABIFunctionType(ABIType::Float64, {ABIType::General}),\
Args_Double_IntInt = detail::MakeABIFunctionType(ABIType::Float64, {ABIType::General, ABIType::General}),\
Args_Double_DoubleInt = detail::MakeABIFunctionType(ABIType::Float64, {ABIType::Float64, ABIType::General}),\
Args_Double_DoubleDouble = detail::MakeABIFunctionType(ABIType::Float64, {ABIType::Float64, ABIType::Float64}),\
Args_Float32_Float32Float32 = detail::MakeABIFunctionType(ABIType::Float32, {ABIType::Float32, ABIType::Float32}),\
Args_Double_IntDouble = detail::MakeABIFunctionType(ABIType::Float64, {ABIType::General, ABIType::Float64}),\
Args_Int_IntDouble = detail::MakeABIFunctionType(ABIType::General, {ABIType::General, ABIType::Float64}),\
Args_Int_DoubleInt = detail::MakeABIFunctionType(ABIType::General, {ABIType::Float64, ABIType::General}),\
Args_Double_DoubleDoubleDouble = detail::MakeABIFunctionType(ABIType::Float64, {ABIType::Float64, ABIType::Float64, ABIType::Float64}),\
Args_Double_DoubleDoubleDoubleDouble = detail::MakeABIFunctionType(ABIType::Float64, {ABIType::Float64, ABIType::Float64, ABIType::Float64, ABIType::Float64}),\
Args_Int_DoubleIntInt = detail::MakeABIFunctionType(ABIType::General, {ABIType::Float64, ABIType::General, ABIType::General}),\
Args_Int_IntDoubleIntInt = detail::MakeABIFunctionType(ABIType::General, {ABIType::General, ABIType::Float64, ABIType::General, ABIType::General}),\
Args_Int_GeneralGeneralGeneralInt64 = detail::MakeABIFunctionType(ABIType::General, {ABIType::General, ABIType::General, ABIType::General, ABIType::Int64}),\
Args_Int_GeneralGeneralInt64Int64 = detail::MakeABIFunctionType(ABIType::General, {ABIType::General, ABIType::General, ABIType::Int64, ABIType::Int64}),\
Args_General_GeneralInt32 = detail::MakeABIFunctionType(ABIType::General, {ABIType::General, ABIType::Int32}),\
Args_General_GeneralInt32General = detail::MakeABIFunctionType(ABIType::General, {ABIType::General, ABIType::Int32, ABIType::General}),\
Args_General_GeneralInt32Int32 = detail::MakeABIFunctionType(ABIType::General, {ABIType::General, ABIType::Int32, ABIType::Int32}),\
Args_General_GeneralInt32Int32GeneralInt32 = detail::MakeABIFunctionType(ABIType::General, {ABIType::General, ABIType::Int32, ABIType::Int32, ABIType::General, ABIType::Int32}),\
Args_General_GeneralGeneralInt32Int32 = detail::MakeABIFunctionType(ABIType::General, {ABIType::General, ABIType::General, ABIType::Int32, ABIType::Int32}),\
Args_Int32_General = detail::MakeABIFunctionType(ABIType::Int32, {ABIType::General}),\
Args_Int32_GeneralGeneral = detail::MakeABIFunctionType(ABIType::Int32, {ABIType::General, ABIType::General}),\
Args_Int32_GeneralGeneralGeneral = detail::MakeABIFunctionType(ABIType::Int32, {ABIType::General, ABIType::General, ABIType::General}),\
Args_Int32_GeneralGeneralGeneralInt32 = detail::MakeABIFunctionType(ABIType::Int32, {ABIType::General, ABIType::General, ABIType::General, ABIType::Int32}),\
Args_Int32_GeneralGeneralInt32 = detail::MakeABIFunctionType(ABIType::Int32, {ABIType::General, ABIType::General, ABIType::Int32}),\
Args_Int32_GeneralGeneralInt32General = detail::MakeABIFunctionType(ABIType::Int32, {ABIType::General, ABIType::General, ABIType::Int32, ABIType::General}),\
Args_Int32_GeneralGeneralInt32GeneralInt32Int32Int32 = detail::MakeABIFunctionType(ABIType::Int32, {ABIType::General, ABIType::General, ABIType::Int32, ABIType::General, ABIType::Int32, ABIType::Int32, ABIType::Int32}),\
Args_Int32_GeneralGeneralInt32Int32 = detail::MakeABIFunctionType(ABIType::Int32, {ABIType::General, ABIType::General, ABIType::Int32, ABIType::Int32}),\
Args_Int32_GeneralGeneralInt32Int32Int32GeneralInt32 = detail::MakeABIFunctionType(ABIType::Int32, {ABIType::General, ABIType::General, ABIType::Int32, ABIType::Int32, ABIType::Int32, ABIType::General, ABIType::Int32}),\
Args_Int32_GeneralInt32 = detail::MakeABIFunctionType(ABIType::Int32, {ABIType::General, ABIType::Int32}),\
Args_Int32_GeneralInt32Float32Float32Float32Float32Int32Int32Int32Int32General = detail::MakeABIFunctionType(ABIType::Int32, {ABIType::General, ABIType::Int32, ABIType::Float32, ABIType::Float32, ABIType::Float32, ABIType::Float32, ABIType::Int32, ABIType::Int32, ABIType::Int32, ABIType::Int32, ABIType::General}),\
Args_Int32_GeneralInt32Float32Float32Int32Float32Float32Int32Float32Int32Int32Int32Int32General = detail::MakeABIFunctionType(ABIType::Int32, {ABIType::General, ABIType::Int32, ABIType::Float32, ABIType::Float32, ABIType::Int32, ABIType::Float32, ABIType::Float32, ABIType::Int32, ABIType::Float32, ABIType::Int32, ABIType::Int32, ABIType::Int32, ABIType::Int32, ABIType::General}),\
Args_Int32_GeneralInt32Float32Float32Int32Int32Int32General = detail::MakeABIFunctionType(ABIType::Int32, {ABIType::General, ABIType::Int32, ABIType::Float32, ABIType::Float32, ABIType::Int32, ABIType::Int32, ABIType::Int32, ABIType::General}),\
Args_Int32_GeneralInt32GeneralInt32 = detail::MakeABIFunctionType(ABIType::Int32, {ABIType::General, ABIType::Int32, ABIType::General, ABIType::Int32}),\
Args_Int32_GeneralInt32GeneralInt32Int32 = detail::MakeABIFunctionType(ABIType::Int32, {ABIType::General, ABIType::Int32, ABIType::General, ABIType::Int32, ABIType::Int32}),\
Args_Int32_GeneralInt32Int32 = detail::MakeABIFunctionType(ABIType::Int32, {ABIType::General, ABIType::Int32, ABIType::Int32}),\
Args_Int32_GeneralInt32Int32General = detail::MakeABIFunctionType(ABIType::Int32, {ABIType::General, ABIType::Int32, ABIType::Int32, ABIType::General}),\
Args_Int32_GeneralInt32Int32Int32 = detail::MakeABIFunctionType(ABIType::Int32, {ABIType::General, ABIType::Int32, ABIType::Int32, ABIType::Int32}),\
Args_Int32_GeneralInt32Int32Int32General = detail::MakeABIFunctionType(ABIType::Int32, {ABIType::General, ABIType::Int32, ABIType::Int32, ABIType::Int32, ABIType::General}),\
Args_Int32_GeneralInt32Int32Int32Int32 = detail::MakeABIFunctionType(ABIType::Int32, {ABIType::General, ABIType::Int32, ABIType::Int32, ABIType::Int32, ABIType::Int32}),\
Args_Int32_GeneralInt32Int32Int32Int32General = detail::MakeABIFunctionType(ABIType::Int32, {ABIType::General, ABIType::Int32, ABIType::Int32, ABIType::Int32, ABIType::Int32, ABIType::General}),\
Args_Int32_GeneralInt32Int32Int32Int32Int32 = detail::MakeABIFunctionType(ABIType::Int32, {ABIType::General, ABIType::Int32, ABIType::Int32, ABIType::Int32, ABIType::Int32, ABIType::Int32}),\
Args_Int32_GeneralInt32Int32Int32Int32Int32Int32General = detail::MakeABIFunctionType(ABIType::Int32, {ABIType::General, ABIType::Int32, ABIType::Int32, ABIType::Int32, ABIType::Int32, ABIType::Int32, ABIType::Int32, ABIType::General}),\
Args_Int32_GeneralInt32Int32Int64Int32 = detail::MakeABIFunctionType(ABIType::Int32, {ABIType::General, ABIType::Int32, ABIType::Int32, ABIType::Int64, ABIType::Int32}),\
Args_Int32_GeneralInt32Int64Int64Int32 = detail::MakeABIFunctionType(ABIType::Int32, {ABIType::General, ABIType::Int32, ABIType::Int64, ABIType::Int64, ABIType::Int32}),\
Args_Int32_GeneralInt64Int32Int32 = detail::MakeABIFunctionType(ABIType::Int32, {ABIType::General, ABIType::Int64, ABIType::Int32, ABIType::Int32}),\
Args_Int32_GeneralInt64Int32Int32Int32Int32 = detail::MakeABIFunctionType(ABIType::Int32, {ABIType::General, ABIType::Int64, ABIType::Int32, ABIType::Int32, ABIType::Int32, ABIType::Int32}),\
Args_Int32_GeneralInt64Int32Int64General = detail::MakeABIFunctionType(ABIType::Int32, {ABIType::General, ABIType::Int64, ABIType::Int32, ABIType::Int64, ABIType::General}),\
Args_Int32_GeneralInt64Int32Int64Int32 = detail::MakeABIFunctionType(ABIType::Int32, {ABIType::General, ABIType::Int64, ABIType::Int32, ABIType::Int64, ABIType::Int32}),\
Args_Int32_GeneralInt64Int64General = detail::MakeABIFunctionType(ABIType::Int32, {ABIType::General, ABIType::Int64, ABIType::Int64, ABIType::General}),\
Args_Int32_GeneralInt64Int64Int64 = detail::MakeABIFunctionType(ABIType::Int32, {ABIType::General, ABIType::Int64, ABIType::Int64, ABIType::Int64}),\
Args_Int32_GeneralInt64Int64Int64General = detail::MakeABIFunctionType(ABIType::Int32, {ABIType::General, ABIType::Int64, ABIType::Int64, ABIType::Int64, ABIType::General}),\
Args_Int32_GeneralInt64Int64Int64GeneralGeneral = detail::MakeABIFunctionType(ABIType::Int32, {ABIType::General, ABIType::Int64, ABIType::Int64, ABIType::Int64, ABIType::General, ABIType::General}),\
Args_Int32_GeneralInt64Int64Int64Int32 = detail::MakeABIFunctionType(ABIType::Int32, {ABIType::General, ABIType::Int64, ABIType::Int64, ABIType::Int64, ABIType::Int32}),\
Args_Int32_GeneralInt64Int64Int64Int32Int32 = detail::MakeABIFunctionType(ABIType::Int32, {ABIType::General, ABIType::Int64, ABIType::Int64, ABIType::Int64, ABIType::Int32, ABIType::Int32}),\
Args_Int64_General = detail::MakeABIFunctionType(ABIType::Int64, {ABIType::General}),\
Args_Int64_GeneralGeneral = detail::MakeABIFunctionType(ABIType::Int64, {ABIType::General, ABIType::General}),\
Args_Int64_Int32Int32Int32Int32 = detail::MakeABIFunctionType(ABIType::Int64, {ABIType::Int32, ABIType::Int32, ABIType::Int32, ABIType::Int32}),\
Args_Int64_GeneralInt32 = detail::MakeABIFunctionType(ABIType::Int64, {ABIType::General, ABIType::Int32}),\
Args_Int64_GeneralInt64 = detail::MakeABIFunctionType(ABIType::Int64, {ABIType::General, ABIType::Int64}),\
Args_Int64_GeneralInt64Int32 = detail::MakeABIFunctionType(ABIType::Int64, {ABIType::General, ABIType::Int64, ABIType::Int32}),\
#define ABI_FUNCTION_TYPE_SIM_PROTOTYPES \
typedef intptr_t (*Prototype_General0)();\
typedef intptr_t (*Prototype_General1)(intptr_t);\
typedef intptr_t (*Prototype_General2)(intptr_t, intptr_t);\
typedef intptr_t (*Prototype_General3)(intptr_t, intptr_t, intptr_t);\
typedef intptr_t (*Prototype_General4)(intptr_t, intptr_t, intptr_t, intptr_t);\
typedef intptr_t (*Prototype_General5)(intptr_t, intptr_t, intptr_t, intptr_t, intptr_t);\
typedef intptr_t (*Prototype_General6)(intptr_t, intptr_t, intptr_t, intptr_t, intptr_t, intptr_t);\
typedef intptr_t (*Prototype_General7)(intptr_t, intptr_t, intptr_t, intptr_t, intptr_t, intptr_t, intptr_t);\
typedef intptr_t (*Prototype_General8)(intptr_t, intptr_t, intptr_t, intptr_t, intptr_t, intptr_t, intptr_t, intptr_t);\
typedef int64_t (*Prototype_Int64_Double)(double);\
typedef double (*Prototype_Double_None)();\
typedef intptr_t (*Prototype_Int_Double)(double);\
typedef intptr_t (*Prototype_Int_Float32)(float);\
typedef float (*Prototype_Float32_Float32)(float);\
typedef float (*Prototype_Float32_IntInt)(intptr_t, intptr_t);\
typedef double (*Prototype_Double_Double)(double);\
typedef double (*Prototype_Double_Int)(intptr_t);\
typedef double (*Prototype_Double_IntInt)(intptr_t, intptr_t);\
typedef double (*Prototype_Double_DoubleInt)(double, intptr_t);\
typedef double (*Prototype_Double_DoubleDouble)(double, double);\
typedef float (*Prototype_Float32_Float32Float32)(float, float);\
typedef double (*Prototype_Double_IntDouble)(intptr_t, double);\
typedef intptr_t (*Prototype_Int_IntDouble)(intptr_t, double);\
typedef intptr_t (*Prototype_Int_DoubleInt)(double, intptr_t);\
typedef double (*Prototype_Double_DoubleDoubleDouble)(double, double, double);\
typedef double (*Prototype_Double_DoubleDoubleDoubleDouble)(double, double, double, double);\
typedef intptr_t (*Prototype_Int_DoubleIntInt)(double, intptr_t, intptr_t);\
typedef intptr_t (*Prototype_Int_IntDoubleIntInt)(intptr_t, double, intptr_t, intptr_t);\
typedef intptr_t (*Prototype_Int_GeneralGeneralGeneralInt64)(intptr_t, intptr_t, intptr_t, int64_t);\
typedef intptr_t (*Prototype_Int_GeneralGeneralInt64Int64)(intptr_t, intptr_t, int64_t, int64_t);\
typedef intptr_t (*Prototype_General_GeneralInt32)(intptr_t, int32_t);\
typedef intptr_t (*Prototype_General_GeneralInt32General)(intptr_t, int32_t, intptr_t);\
typedef intptr_t (*Prototype_General_GeneralInt32Int32)(intptr_t, int32_t, int32_t);\
typedef intptr_t (*Prototype_General_GeneralInt32Int32GeneralInt32)(intptr_t, int32_t, int32_t, intptr_t, int32_t);\
typedef intptr_t (*Prototype_General_GeneralGeneralInt32Int32)(intptr_t, intptr_t, int32_t, int32_t);\
typedef int32_t (*Prototype_Int32_General)(intptr_t);\
typedef int32_t (*Prototype_Int32_GeneralGeneral)(intptr_t, intptr_t);\
typedef int32_t (*Prototype_Int32_GeneralGeneralGeneral)(intptr_t, intptr_t, intptr_t);\
typedef int32_t (*Prototype_Int32_GeneralGeneralGeneralInt32)(intptr_t, intptr_t, intptr_t, int32_t);\
typedef int32_t (*Prototype_Int32_GeneralGeneralInt32)(intptr_t, intptr_t, int32_t);\
typedef int32_t (*Prototype_Int32_GeneralGeneralInt32General)(intptr_t, intptr_t, int32_t, intptr_t);\
typedef int32_t (*Prototype_Int32_GeneralGeneralInt32GeneralInt32Int32Int32)(intptr_t, intptr_t, int32_t, intptr_t, int32_t, int32_t, int32_t);\
typedef int32_t (*Prototype_Int32_GeneralGeneralInt32Int32)(intptr_t, intptr_t, int32_t, int32_t);\
typedef int32_t (*Prototype_Int32_GeneralGeneralInt32Int32Int32GeneralInt32)(intptr_t, intptr_t, int32_t, int32_t, int32_t, intptr_t, int32_t);\
typedef int32_t (*Prototype_Int32_GeneralInt32)(intptr_t, int32_t);\
typedef int32_t (*Prototype_Int32_GeneralInt32Float32Float32Float32Float32Int32Int32Int32Int32General)(intptr_t, int32_t, float, float, float, float, int32_t, int32_t, int32_t, int32_t, intptr_t);\
typedef int32_t (*Prototype_Int32_GeneralInt32Float32Float32Int32Float32Float32Int32Float32Int32Int32Int32Int32General)(intptr_t, int32_t, float, float, int32_t, float, float, int32_t, float, int32_t, int32_t, int32_t, int32_t, intptr_t);\
typedef int32_t (*Prototype_Int32_GeneralInt32Float32Float32Int32Int32Int32General)(intptr_t, int32_t, float, float, int32_t, int32_t, int32_t, intptr_t);\
typedef int32_t (*Prototype_Int32_GeneralInt32GeneralInt32)(intptr_t, int32_t, intptr_t, int32_t);\
typedef int32_t (*Prototype_Int32_GeneralInt32GeneralInt32Int32)(intptr_t, int32_t, intptr_t, int32_t, int32_t);\
typedef int32_t (*Prototype_Int32_GeneralInt32Int32)(intptr_t, int32_t, int32_t);\
typedef int32_t (*Prototype_Int32_GeneralInt32Int32General)(intptr_t, int32_t, int32_t, intptr_t);\
typedef int32_t (*Prototype_Int32_GeneralInt32Int32Int32)(intptr_t, int32_t, int32_t, int32_t);\
typedef int32_t (*Prototype_Int32_GeneralInt32Int32Int32General)(intptr_t, int32_t, int32_t, int32_t, intptr_t);\
typedef int32_t (*Prototype_Int32_GeneralInt32Int32Int32Int32)(intptr_t, int32_t, int32_t, int32_t, int32_t);\
typedef int32_t (*Prototype_Int32_GeneralInt32Int32Int32Int32General)(intptr_t, int32_t, int32_t, int32_t, int32_t, intptr_t);\
typedef int32_t (*Prototype_Int32_GeneralInt32Int32Int32Int32Int32)(intptr_t, int32_t, int32_t, int32_t, int32_t, int32_t);\
typedef int32_t (*Prototype_Int32_GeneralInt32Int32Int32Int32Int32Int32General)(intptr_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, intptr_t);\
typedef int32_t (*Prototype_Int32_GeneralInt32Int32Int64Int32)(intptr_t, int32_t, int32_t, int64_t, int32_t);\
typedef int32_t (*Prototype_Int32_GeneralInt32Int64Int64Int32)(intptr_t, int32_t, int64_t, int64_t, int32_t);\
typedef int32_t (*Prototype_Int32_GeneralInt64Int32Int32)(intptr_t, int64_t, int32_t, int32_t);\
typedef int32_t (*Prototype_Int32_GeneralInt64Int32Int32Int32Int32)(intptr_t, int64_t, int32_t, int32_t, int32_t, int32_t);\
typedef int32_t (*Prototype_Int32_GeneralInt64Int32Int64General)(intptr_t, int64_t, int32_t, int64_t, intptr_t);\
typedef int32_t (*Prototype_Int32_GeneralInt64Int32Int64Int32)(intptr_t, int64_t, int32_t, int64_t, int32_t);\
typedef int32_t (*Prototype_Int32_GeneralInt64Int64General)(intptr_t, int64_t, int64_t, intptr_t);\
typedef int32_t (*Prototype_Int32_GeneralInt64Int64Int64)(intptr_t, int64_t, int64_t, int64_t);\
typedef int32_t (*Prototype_Int32_GeneralInt64Int64Int64General)(intptr_t, int64_t, int64_t, int64_t, intptr_t);\
typedef int32_t (*Prototype_Int32_GeneralInt64Int64Int64GeneralGeneral)(intptr_t, int64_t, int64_t, int64_t, intptr_t, intptr_t);\
typedef int32_t (*Prototype_Int32_GeneralInt64Int64Int64Int32)(intptr_t, int64_t, int64_t, int64_t, int32_t);\
typedef int32_t (*Prototype_Int32_GeneralInt64Int64Int64Int32Int32)(intptr_t, int64_t, int64_t, int64_t, int32_t, int32_t);\
typedef int64_t (*Prototype_Int64_General)(intptr_t);\
typedef int64_t (*Prototype_Int64_GeneralGeneral)(intptr_t, intptr_t);\
typedef int64_t (*Prototype_Int64_Int32Int32Int32Int32)(int32_t, int32_t, int32_t, int32_t);\
typedef int64_t (*Prototype_Int64_GeneralInt32)(intptr_t, int32_t);\
typedef int64_t (*Prototype_Int64_GeneralInt64)(intptr_t, int64_t);\
typedef int64_t (*Prototype_Int64_GeneralInt64Int32)(intptr_t, int64_t, int32_t);\
#define ABI_FUNCTION_TYPE_ARM64_SIM_DISPATCH \
case js::jit::Args_General0: {\
auto target = reinterpret_cast<Prototype_General0>(nativeFn);\
auto ret = target();\
setGPR64Result(ret);\
break;\
}\
case js::jit::Args_General1: {\
auto target = reinterpret_cast<Prototype_General1>(nativeFn);\
auto ret = target(x0);\
setGPR64Result(ret);\
break;\
}\
case js::jit::Args_General2: {\
auto target = reinterpret_cast<Prototype_General2>(nativeFn);\
auto ret = target(x0, x1);\
setGPR64Result(ret);\
break;\
}\
case js::jit::Args_General3: {\
auto target = reinterpret_cast<Prototype_General3>(nativeFn);\
auto ret = target(x0, x1, x2);\
setGPR64Result(ret);\
break;\
}\
case js::jit::Args_General4: {\
auto target = reinterpret_cast<Prototype_General4>(nativeFn);\
auto ret = target(x0, x1, x2, x3);\
setGPR64Result(ret);\
break;\
}\
case js::jit::Args_General5: {\
auto target = reinterpret_cast<Prototype_General5>(nativeFn);\
auto ret = target(x0, x1, x2, x3, x4);\
setGPR64Result(ret);\
break;\
}\
case js::jit::Args_General6: {\
auto target = reinterpret_cast<Prototype_General6>(nativeFn);\
auto ret = target(x0, x1, x2, x3, x4, x5);\
setGPR64Result(ret);\
break;\
}\
case js::jit::Args_General7: {\
auto target = reinterpret_cast<Prototype_General7>(nativeFn);\
auto ret = target(x0, x1, x2, x3, x4, x5, x6);\
setGPR64Result(ret);\
break;\
}\
case js::jit::Args_General8: {\
auto target = reinterpret_cast<Prototype_General8>(nativeFn);\
auto ret = target(x0, x1, x2, x3, x4, x5, x6, x7);\
setGPR64Result(ret);\
break;\
}\
case js::jit::Args_Int64_Double: {\
auto target = reinterpret_cast<Prototype_Int64_Double>(nativeFn);\
auto ret = target(d0);\
setGPR64Result(ret);\
break;\
}\
case js::jit::Args_Double_None: {\
auto target = reinterpret_cast<Prototype_Double_None>(nativeFn);\
auto ret = target();\
setFP64Result(ret);\
break;\
}\
case js::jit::Args_Int_Double: {\
auto target = reinterpret_cast<Prototype_Int_Double>(nativeFn);\
auto ret = target(d0);\
setGPR64Result(ret);\
break;\
}\
case js::jit::Args_Int_Float32: {\
auto target = reinterpret_cast<Prototype_Int_Float32>(nativeFn);\
auto ret = target(s0);\
setGPR64Result(ret);\
break;\
}\
case js::jit::Args_Float32_Float32: {\
auto target = reinterpret_cast<Prototype_Float32_Float32>(nativeFn);\
auto ret = target(s0);\
setFP32Result(ret);\
break;\
}\
case js::jit::Args_Float32_IntInt: {\
auto target = reinterpret_cast<Prototype_Float32_IntInt>(nativeFn);\
auto ret = target(x0, x1);\
setFP32Result(ret);\
break;\
}\
case js::jit::Args_Double_Double: {\
auto target = reinterpret_cast<Prototype_Double_Double>(nativeFn);\
auto ret = target(d0);\
setFP64Result(ret);\
break;\
}\
case js::jit::Args_Double_Int: {\
auto target = reinterpret_cast<Prototype_Double_Int>(nativeFn);\
auto ret = target(x0);\
setFP64Result(ret);\
break;\
}\
case js::jit::Args_Double_IntInt: {\
auto target = reinterpret_cast<Prototype_Double_IntInt>(nativeFn);\
auto ret = target(x0, x1);\
setFP64Result(ret);\
break;\
}\
case js::jit::Args_Double_DoubleInt: {\
auto target = reinterpret_cast<Prototype_Double_DoubleInt>(nativeFn);\
auto ret = target(d0, x0);\
setFP64Result(ret);\
break;\
}\
case js::jit::Args_Double_DoubleDouble: {\
auto target = reinterpret_cast<Prototype_Double_DoubleDouble>(nativeFn);\
auto ret = target(d0, d1);\
setFP64Result(ret);\
break;\
}\
case js::jit::Args_Float32_Float32Float32: {\
auto target = reinterpret_cast<Prototype_Float32_Float32Float32>(nativeFn);\
auto ret = target(s0, s1);\
setFP32Result(ret);\
break;\
}\
case js::jit::Args_Double_IntDouble: {\
auto target = reinterpret_cast<Prototype_Double_IntDouble>(nativeFn);\
auto ret = target(x0, d0);\
setFP64Result(ret);\
break;\
}\
case js::jit::Args_Int_IntDouble: {\
auto target = reinterpret_cast<Prototype_Int_IntDouble>(nativeFn);\
auto ret = target(x0, d0);\
setGPR64Result(ret);\
break;\
}\
case js::jit::Args_Int_DoubleInt: {\
auto target = reinterpret_cast<Prototype_Int_DoubleInt>(nativeFn);\
auto ret = target(d0, x0);\
setGPR64Result(ret);\
break;\
}\
case js::jit::Args_Double_DoubleDoubleDouble: {\
auto target = reinterpret_cast<Prototype_Double_DoubleDoubleDouble>(nativeFn);\
auto ret = target(d0, d1, d2);\
setFP64Result(ret);\
break;\
}\
case js::jit::Args_Double_DoubleDoubleDoubleDouble: {\
auto target = reinterpret_cast<Prototype_Double_DoubleDoubleDoubleDouble>(nativeFn);\
auto ret = target(d0, d1, d2, d3);\
setFP64Result(ret);\
break;\
}\
case js::jit::Args_Int_DoubleIntInt: {\
auto target = reinterpret_cast<Prototype_Int_DoubleIntInt>(nativeFn);\
auto ret = target(d0, x0, x1);\
setGPR64Result(ret);\
break;\
}\
case js::jit::Args_Int_IntDoubleIntInt: {\
auto target = reinterpret_cast<Prototype_Int_IntDoubleIntInt>(nativeFn);\
auto ret = target(x0, d0, x1, x2);\
setGPR64Result(ret);\
break;\
}\
case js::jit::Args_Int_GeneralGeneralGeneralInt64: {\
auto target = reinterpret_cast<Prototype_Int_GeneralGeneralGeneralInt64>(nativeFn);\
auto ret = target(x0, x1, x2, x3);\
setGPR64Result(ret);\
break;\
}\
case js::jit::Args_Int_GeneralGeneralInt64Int64: {\
auto target = reinterpret_cast<Prototype_Int_GeneralGeneralInt64Int64>(nativeFn);\
auto ret = target(x0, x1, x2, x3);\
setGPR64Result(ret);\
break;\
}\
case js::jit::Args_General_GeneralInt32: {\
auto target = reinterpret_cast<Prototype_General_GeneralInt32>(nativeFn);\
auto ret = target(x0, x1);\
setGPR64Result(ret);\
break;\
}\
case js::jit::Args_General_GeneralInt32General: {\
auto target = reinterpret_cast<Prototype_General_GeneralInt32General>(nativeFn);\
auto ret = target(x0, x1, x2);\
setGPR64Result(ret);\
break;\
}\
case js::jit::Args_General_GeneralInt32Int32: {\
auto target = reinterpret_cast<Prototype_General_GeneralInt32Int32>(nativeFn);\
auto ret = target(x0, x1, x2);\
setGPR64Result(ret);\
break;\
}\
case js::jit::Args_General_GeneralInt32Int32GeneralInt32: {\
auto target = reinterpret_cast<Prototype_General_GeneralInt32Int32GeneralInt32>(nativeFn);\
auto ret = target(x0, x1, x2, x3, x4);\
setGPR64Result(ret);\
break;\
}\
case js::jit::Args_General_GeneralGeneralInt32Int32: {\
auto target = reinterpret_cast<Prototype_General_GeneralGeneralInt32Int32>(nativeFn);\
auto ret = target(x0, x1, x2, x3);\
setGPR64Result(ret);\
break;\
}\
case js::jit::Args_Int32_General: {\
auto target = reinterpret_cast<Prototype_Int32_General>(nativeFn);\
auto ret = target(x0);\
setGPR32Result(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralGeneral: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralGeneral>(nativeFn);\
auto ret = target(x0, x1);\
setGPR32Result(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralGeneralGeneral: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralGeneralGeneral>(nativeFn);\
auto ret = target(x0, x1, x2);\
setGPR32Result(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralGeneralGeneralInt32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralGeneralGeneralInt32>(nativeFn);\
auto ret = target(x0, x1, x2, x3);\
setGPR32Result(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralGeneralInt32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralGeneralInt32>(nativeFn);\
auto ret = target(x0, x1, x2);\
setGPR32Result(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralGeneralInt32General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralGeneralInt32General>(nativeFn);\
auto ret = target(x0, x1, x2, x3);\
setGPR32Result(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralGeneralInt32GeneralInt32Int32Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralGeneralInt32GeneralInt32Int32Int32>(nativeFn);\
auto ret = target(x0, x1, x2, x3, x4, x5, x6);\
setGPR32Result(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralGeneralInt32Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralGeneralInt32Int32>(nativeFn);\
auto ret = target(x0, x1, x2, x3);\
setGPR32Result(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralGeneralInt32Int32Int32GeneralInt32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralGeneralInt32Int32Int32GeneralInt32>(nativeFn);\
auto ret = target(x0, x1, x2, x3, x4, x5, x6);\
setGPR32Result(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32>(nativeFn);\
auto ret = target(x0, x1);\
setGPR32Result(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Float32Float32Float32Float32Int32Int32Int32Int32General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Float32Float32Float32Float32Int32Int32Int32Int32General>(nativeFn);\
auto ret = target(x0, x1, s0, s1, s2, s3, x2, x3, x4, x5, x6);\
setGPR32Result(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Float32Float32Int32Float32Float32Int32Float32Int32Int32Int32Int32General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Float32Float32Int32Float32Float32Int32Float32Int32Int32Int32Int32General>(nativeFn);\
auto ret = target(x0, x1, s0, s1, x2, s2, s3, x3, s4, x4, x5, x6, x7, sp[0]);\
setGPR32Result(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Float32Float32Int32Int32Int32General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Float32Float32Int32Int32Int32General>(nativeFn);\
auto ret = target(x0, x1, s0, s1, x2, x3, x4, x5);\
setGPR32Result(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt32GeneralInt32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32GeneralInt32>(nativeFn);\
auto ret = target(x0, x1, x2, x3);\
setGPR32Result(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt32GeneralInt32Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32GeneralInt32Int32>(nativeFn);\
auto ret = target(x0, x1, x2, x3, x4);\
setGPR32Result(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Int32>(nativeFn);\
auto ret = target(x0, x1, x2);\
setGPR32Result(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Int32General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Int32General>(nativeFn);\
auto ret = target(x0, x1, x2, x3);\
setGPR32Result(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Int32Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Int32Int32>(nativeFn);\
auto ret = target(x0, x1, x2, x3);\
setGPR32Result(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Int32Int32General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Int32Int32General>(nativeFn);\
auto ret = target(x0, x1, x2, x3, x4);\
setGPR32Result(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Int32Int32Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Int32Int32Int32>(nativeFn);\
auto ret = target(x0, x1, x2, x3, x4);\
setGPR32Result(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Int32Int32Int32General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Int32Int32Int32General>(nativeFn);\
auto ret = target(x0, x1, x2, x3, x4, x5);\
setGPR32Result(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Int32Int32Int32Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Int32Int32Int32Int32>(nativeFn);\
auto ret = target(x0, x1, x2, x3, x4, x5);\
setGPR32Result(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Int32Int32Int32Int32Int32General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Int32Int32Int32Int32Int32General>(nativeFn);\
auto ret = target(x0, x1, x2, x3, x4, x5, x6, x7);\
setGPR32Result(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Int32Int64Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Int32Int64Int32>(nativeFn);\
auto ret = target(x0, x1, x2, x3, x4);\
setGPR32Result(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Int64Int64Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Int64Int64Int32>(nativeFn);\
auto ret = target(x0, x1, x2, x3, x4);\
setGPR32Result(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt64Int32Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt64Int32Int32>(nativeFn);\
auto ret = target(x0, x1, x2, x3);\
setGPR32Result(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt64Int32Int32Int32Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt64Int32Int32Int32Int32>(nativeFn);\
auto ret = target(x0, x1, x2, x3, x4, x5);\
setGPR32Result(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt64Int32Int64General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt64Int32Int64General>(nativeFn);\
auto ret = target(x0, x1, x2, x3, x4);\
setGPR32Result(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt64Int32Int64Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt64Int32Int64Int32>(nativeFn);\
auto ret = target(x0, x1, x2, x3, x4);\
setGPR32Result(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt64Int64General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt64Int64General>(nativeFn);\
auto ret = target(x0, x1, x2, x3);\
setGPR32Result(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt64Int64Int64: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt64Int64Int64>(nativeFn);\
auto ret = target(x0, x1, x2, x3);\
setGPR32Result(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt64Int64Int64General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt64Int64Int64General>(nativeFn);\
auto ret = target(x0, x1, x2, x3, x4);\
setGPR32Result(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt64Int64Int64GeneralGeneral: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt64Int64Int64GeneralGeneral>(nativeFn);\
auto ret = target(x0, x1, x2, x3, x4, x5);\
setGPR32Result(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt64Int64Int64Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt64Int64Int64Int32>(nativeFn);\
auto ret = target(x0, x1, x2, x3, x4);\
setGPR32Result(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt64Int64Int64Int32Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt64Int64Int64Int32Int32>(nativeFn);\
auto ret = target(x0, x1, x2, x3, x4, x5);\
setGPR32Result(ret);\
break;\
}\
case js::jit::Args_Int64_General: {\
auto target = reinterpret_cast<Prototype_Int64_General>(nativeFn);\
auto ret = target(x0);\
setGPR64Result(ret);\
break;\
}\
case js::jit::Args_Int64_GeneralGeneral: {\
auto target = reinterpret_cast<Prototype_Int64_GeneralGeneral>(nativeFn);\
auto ret = target(x0, x1);\
setGPR64Result(ret);\
break;\
}\
case js::jit::Args_Int64_Int32Int32Int32Int32: {\
auto target = reinterpret_cast<Prototype_Int64_Int32Int32Int32Int32>(nativeFn);\
auto ret = target(x0, x1, x2, x3);\
setGPR64Result(ret);\
break;\
}\
case js::jit::Args_Int64_GeneralInt32: {\
auto target = reinterpret_cast<Prototype_Int64_GeneralInt32>(nativeFn);\
auto ret = target(x0, x1);\
setGPR64Result(ret);\
break;\
}\
case js::jit::Args_Int64_GeneralInt64: {\
auto target = reinterpret_cast<Prototype_Int64_GeneralInt64>(nativeFn);\
auto ret = target(x0, x1);\
setGPR64Result(ret);\
break;\
}\
case js::jit::Args_Int64_GeneralInt64Int32: {\
auto target = reinterpret_cast<Prototype_Int64_GeneralInt64Int32>(nativeFn);\
auto ret = target(x0, x1, x2);\
setGPR64Result(ret);\
break;\
}\
#define ABI_FUNCTION_TYPE_ARM32_SIM_DISPATCH \
case js::jit::Args_General0: {\
auto target = reinterpret_cast<Prototype_General0>(external);\
intptr_t ret;\
ret = target();\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_General1: {\
auto target = reinterpret_cast<Prototype_General1>(external);\
intptr_t ret;\
ret = target(a0);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_General2: {\
auto target = reinterpret_cast<Prototype_General2>(external);\
intptr_t ret;\
ret = target(a0, a1);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_General3: {\
auto target = reinterpret_cast<Prototype_General3>(external);\
intptr_t ret;\
ret = target(a0, a1, a2);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_General4: {\
auto target = reinterpret_cast<Prototype_General4>(external);\
intptr_t ret;\
ret = target(a0, a1, a2, a3);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_General5: {\
auto target = reinterpret_cast<Prototype_General5>(external);\
intptr_t ret;\
ret = target(a0, a1, a2, a3, stack_pointer[0]);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_General6: {\
auto target = reinterpret_cast<Prototype_General6>(external);\
intptr_t ret;\
ret = target(a0, a1, a2, a3, stack_pointer[0], stack_pointer[1]);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_General7: {\
auto target = reinterpret_cast<Prototype_General7>(external);\
intptr_t ret;\
ret = target(a0, a1, a2, a3, stack_pointer[0], stack_pointer[1], stack_pointer[2]);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_General8: {\
auto target = reinterpret_cast<Prototype_General8>(external);\
intptr_t ret;\
ret = target(a0, a1, a2, a3, stack_pointer[0], stack_pointer[1], stack_pointer[2], stack_pointer[3]);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int64_Double: {\
auto target = reinterpret_cast<Prototype_Int64_Double>(external);\
int64_t ret;\
if (UseHardFpABI()) {\
ret = target(d0);\
} else {\
ret = target(mozilla::BitwiseCast<double>(MakeInt64(a0, a1)));\
}\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Double_None: {\
auto target = reinterpret_cast<Prototype_Double_None>(external);\
double ret;\
ret = target();\
scratchVolatileRegisters((void*)target);\
setCallResultDouble(ret);\
break;\
}\
case js::jit::Args_Int_Double: {\
auto target = reinterpret_cast<Prototype_Int_Double>(external);\
intptr_t ret;\
if (UseHardFpABI()) {\
ret = target(d0);\
} else {\
ret = target(mozilla::BitwiseCast<double>(MakeInt64(a0, a1)));\
}\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int_Float32: {\
auto target = reinterpret_cast<Prototype_Int_Float32>(external);\
intptr_t ret;\
if (UseHardFpABI()) {\
ret = target(s0);\
} else {\
ret = target(mozilla::BitwiseCast<float>(a0));\
}\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Float32_Float32: {\
auto target = reinterpret_cast<Prototype_Float32_Float32>(external);\
float ret;\
if (UseHardFpABI()) {\
ret = target(s0);\
} else {\
ret = target(mozilla::BitwiseCast<float>(a0));\
}\
scratchVolatileRegisters((void*)target);\
setCallResultFloat(ret);\
break;\
}\
case js::jit::Args_Float32_IntInt: {\
auto target = reinterpret_cast<Prototype_Float32_IntInt>(external);\
float ret;\
ret = target(a0, a1);\
scratchVolatileRegisters((void*)target);\
setCallResultFloat(ret);\
break;\
}\
case js::jit::Args_Double_Double: {\
auto target = reinterpret_cast<Prototype_Double_Double>(external);\
double ret;\
if (UseHardFpABI()) {\
ret = target(d0);\
} else {\
ret = target(mozilla::BitwiseCast<double>(MakeInt64(a0, a1)));\
}\
scratchVolatileRegisters((void*)target);\
setCallResultDouble(ret);\
break;\
}\
case js::jit::Args_Double_Int: {\
auto target = reinterpret_cast<Prototype_Double_Int>(external);\
double ret;\
ret = target(a0);\
scratchVolatileRegisters((void*)target);\
setCallResultDouble(ret);\
break;\
}\
case js::jit::Args_Double_IntInt: {\
auto target = reinterpret_cast<Prototype_Double_IntInt>(external);\
double ret;\
ret = target(a0, a1);\
scratchVolatileRegisters((void*)target);\
setCallResultDouble(ret);\
break;\
}\
case js::jit::Args_Double_DoubleInt: {\
auto target = reinterpret_cast<Prototype_Double_DoubleInt>(external);\
double ret;\
if (UseHardFpABI()) {\
ret = target(d0, a0);\
} else {\
ret = target(mozilla::BitwiseCast<double>(MakeInt64(a0, a1)), a2);\
}\
scratchVolatileRegisters((void*)target);\
setCallResultDouble(ret);\
break;\
}\
case js::jit::Args_Double_DoubleDouble: {\
auto target = reinterpret_cast<Prototype_Double_DoubleDouble>(external);\
double ret;\
if (UseHardFpABI()) {\
ret = target(d0, d1);\
} else {\
ret = target(mozilla::BitwiseCast<double>(MakeInt64(a0, a1)), mozilla::BitwiseCast<double>(MakeInt64(a2, a3)));\
}\
scratchVolatileRegisters((void*)target);\
setCallResultDouble(ret);\
break;\
}\
case js::jit::Args_Float32_Float32Float32: {\
auto target = reinterpret_cast<Prototype_Float32_Float32Float32>(external);\
float ret;\
if (UseHardFpABI()) {\
ret = target(s0, s1);\
} else {\
ret = target(mozilla::BitwiseCast<float>(a0), mozilla::BitwiseCast<float>(a1));\
}\
scratchVolatileRegisters((void*)target);\
setCallResultFloat(ret);\
break;\
}\
case js::jit::Args_Double_IntDouble: {\
auto target = reinterpret_cast<Prototype_Double_IntDouble>(external);\
double ret;\
if (UseHardFpABI()) {\
ret = target(a0, d0);\
} else {\
ret = target(a0, mozilla::BitwiseCast<double>(MakeInt64(a2, a3)));\
}\
scratchVolatileRegisters((void*)target);\
setCallResultDouble(ret);\
break;\
}\
case js::jit::Args_Int_IntDouble: {\
auto target = reinterpret_cast<Prototype_Int_IntDouble>(external);\
intptr_t ret;\
if (UseHardFpABI()) {\
ret = target(a0, d0);\
} else {\
ret = target(a0, mozilla::BitwiseCast<double>(MakeInt64(a2, a3)));\
}\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int_DoubleInt: {\
auto target = reinterpret_cast<Prototype_Int_DoubleInt>(external);\
intptr_t ret;\
if (UseHardFpABI()) {\
ret = target(d0, a0);\
} else {\
ret = target(mozilla::BitwiseCast<double>(MakeInt64(a0, a1)), a2);\
}\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Double_DoubleDoubleDouble: {\
auto target = reinterpret_cast<Prototype_Double_DoubleDoubleDouble>(external);\
double ret;\
if (UseHardFpABI()) {\
ret = target(d0, d1, d2);\
} else {\
ret = target(mozilla::BitwiseCast<double>(MakeInt64(a0, a1)), mozilla::BitwiseCast<double>(MakeInt64(a2, a3)), mozilla::BitwiseCast<double>(MakeInt64(stack_pointer[0], stack_pointer[1])));\
}\
scratchVolatileRegisters((void*)target);\
setCallResultDouble(ret);\
break;\
}\
case js::jit::Args_Double_DoubleDoubleDoubleDouble: {\
auto target = reinterpret_cast<Prototype_Double_DoubleDoubleDoubleDouble>(external);\
double ret;\
if (UseHardFpABI()) {\
ret = target(d0, d1, d2, d3);\
} else {\
ret = target(mozilla::BitwiseCast<double>(MakeInt64(a0, a1)), mozilla::BitwiseCast<double>(MakeInt64(a2, a3)), mozilla::BitwiseCast<double>(MakeInt64(stack_pointer[0], stack_pointer[1])), mozilla::BitwiseCast<double>(MakeInt64(stack_pointer[2], stack_pointer[3])));\
}\
scratchVolatileRegisters((void*)target);\
setCallResultDouble(ret);\
break;\
}\
case js::jit::Args_Int_DoubleIntInt: {\
auto target = reinterpret_cast<Prototype_Int_DoubleIntInt>(external);\
intptr_t ret;\
if (UseHardFpABI()) {\
ret = target(d0, a0, a1);\
} else {\
ret = target(mozilla::BitwiseCast<double>(MakeInt64(a0, a1)), a2, a3);\
}\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int_IntDoubleIntInt: {\
auto target = reinterpret_cast<Prototype_Int_IntDoubleIntInt>(external);\
intptr_t ret;\
if (UseHardFpABI()) {\
ret = target(a0, d0, a1, a2);\
} else {\
ret = target(a0, mozilla::BitwiseCast<double>(MakeInt64(a2, a3)), stack_pointer[0], stack_pointer[1]);\
}\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int_GeneralGeneralGeneralInt64: {\
auto target = reinterpret_cast<Prototype_Int_GeneralGeneralGeneralInt64>(external);\
intptr_t ret;\
ret = target(a0, a1, a2, MakeInt64(stack_pointer[0], stack_pointer[1]));\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int_GeneralGeneralInt64Int64: {\
auto target = reinterpret_cast<Prototype_Int_GeneralGeneralInt64Int64>(external);\
intptr_t ret;\
ret = target(a0, a1, MakeInt64(a2, a3), MakeInt64(stack_pointer[0], stack_pointer[1]));\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_General_GeneralInt32: {\
auto target = reinterpret_cast<Prototype_General_GeneralInt32>(external);\
intptr_t ret;\
ret = target(a0, a1);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_General_GeneralInt32General: {\
auto target = reinterpret_cast<Prototype_General_GeneralInt32General>(external);\
intptr_t ret;\
ret = target(a0, a1, a2);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_General_GeneralInt32Int32: {\
auto target = reinterpret_cast<Prototype_General_GeneralInt32Int32>(external);\
intptr_t ret;\
ret = target(a0, a1, a2);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_General_GeneralInt32Int32GeneralInt32: {\
auto target = reinterpret_cast<Prototype_General_GeneralInt32Int32GeneralInt32>(external);\
intptr_t ret;\
ret = target(a0, a1, a2, a3, stack_pointer[0]);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_General_GeneralGeneralInt32Int32: {\
auto target = reinterpret_cast<Prototype_General_GeneralGeneralInt32Int32>(external);\
intptr_t ret;\
ret = target(a0, a1, a2, a3);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int32_General: {\
auto target = reinterpret_cast<Prototype_Int32_General>(external);\
int32_t ret;\
ret = target(a0);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralGeneral: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralGeneral>(external);\
int32_t ret;\
ret = target(a0, a1);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralGeneralGeneral: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralGeneralGeneral>(external);\
int32_t ret;\
ret = target(a0, a1, a2);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralGeneralGeneralInt32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralGeneralGeneralInt32>(external);\
int32_t ret;\
ret = target(a0, a1, a2, a3);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralGeneralInt32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralGeneralInt32>(external);\
int32_t ret;\
ret = target(a0, a1, a2);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralGeneralInt32General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralGeneralInt32General>(external);\
int32_t ret;\
ret = target(a0, a1, a2, a3);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralGeneralInt32GeneralInt32Int32Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralGeneralInt32GeneralInt32Int32Int32>(external);\
int32_t ret;\
ret = target(a0, a1, a2, a3, stack_pointer[0], stack_pointer[1], stack_pointer[2]);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralGeneralInt32Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralGeneralInt32Int32>(external);\
int32_t ret;\
ret = target(a0, a1, a2, a3);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralGeneralInt32Int32Int32GeneralInt32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralGeneralInt32Int32Int32GeneralInt32>(external);\
int32_t ret;\
ret = target(a0, a1, a2, a3, stack_pointer[0], stack_pointer[1], stack_pointer[2]);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32>(external);\
int32_t ret;\
ret = target(a0, a1);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Float32Float32Float32Float32Int32Int32Int32Int32General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Float32Float32Float32Float32Int32Int32Int32Int32General>(external);\
int32_t ret;\
if (UseHardFpABI()) {\
ret = target(a0, a1, s0, s1, s2, s3, a2, a3, stack_pointer[0], stack_pointer[1], stack_pointer[2]);\
} else {\
ret = target(a0, a1, mozilla::BitwiseCast<float>(a2), mozilla::BitwiseCast<float>(a3), mozilla::BitwiseCast<float>(stack_pointer[0]), mozilla::BitwiseCast<float>(stack_pointer[1]), stack_pointer[2], stack_pointer[3], stack_pointer[4], stack_pointer[5], stack_pointer[6]);\
}\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Float32Float32Int32Float32Float32Int32Float32Int32Int32Int32Int32General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Float32Float32Int32Float32Float32Int32Float32Int32Int32Int32Int32General>(external);\
int32_t ret;\
if (UseHardFpABI()) {\
ret = target(a0, a1, s0, s1, a2, s2, s3, a3, s4, stack_pointer[0], stack_pointer[1], stack_pointer[2], stack_pointer[3], stack_pointer[4]);\
} else {\
ret = target(a0, a1, mozilla::BitwiseCast<float>(a2), mozilla::BitwiseCast<float>(a3), stack_pointer[0], mozilla::BitwiseCast<float>(stack_pointer[1]), mozilla::BitwiseCast<float>(stack_pointer[2]), stack_pointer[3], mozilla::BitwiseCast<float>(stack_pointer[4]), stack_pointer[5], stack_pointer[6], stack_pointer[7], stack_pointer[8], stack_pointer[9]);\
}\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Float32Float32Int32Int32Int32General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Float32Float32Int32Int32Int32General>(external);\
int32_t ret;\
if (UseHardFpABI()) {\
ret = target(a0, a1, s0, s1, a2, a3, stack_pointer[0], stack_pointer[1]);\
} else {\
ret = target(a0, a1, mozilla::BitwiseCast<float>(a2), mozilla::BitwiseCast<float>(a3), stack_pointer[0], stack_pointer[1], stack_pointer[2], stack_pointer[3]);\
}\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt32GeneralInt32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32GeneralInt32>(external);\
int32_t ret;\
ret = target(a0, a1, a2, a3);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt32GeneralInt32Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32GeneralInt32Int32>(external);\
int32_t ret;\
ret = target(a0, a1, a2, a3, stack_pointer[0]);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Int32>(external);\
int32_t ret;\
ret = target(a0, a1, a2);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Int32General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Int32General>(external);\
int32_t ret;\
ret = target(a0, a1, a2, a3);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Int32Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Int32Int32>(external);\
int32_t ret;\
ret = target(a0, a1, a2, a3);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Int32Int32General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Int32Int32General>(external);\
int32_t ret;\
ret = target(a0, a1, a2, a3, stack_pointer[0]);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Int32Int32Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Int32Int32Int32>(external);\
int32_t ret;\
ret = target(a0, a1, a2, a3, stack_pointer[0]);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Int32Int32Int32General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Int32Int32Int32General>(external);\
int32_t ret;\
ret = target(a0, a1, a2, a3, stack_pointer[0], stack_pointer[1]);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Int32Int32Int32Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Int32Int32Int32Int32>(external);\
int32_t ret;\
ret = target(a0, a1, a2, a3, stack_pointer[0], stack_pointer[1]);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Int32Int32Int32Int32Int32General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Int32Int32Int32Int32Int32General>(external);\
int32_t ret;\
ret = target(a0, a1, a2, a3, stack_pointer[0], stack_pointer[1], stack_pointer[2], stack_pointer[3]);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Int32Int64Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Int32Int64Int32>(external);\
int32_t ret;\
ret = target(a0, a1, a2, MakeInt64(stack_pointer[0], stack_pointer[1]), stack_pointer[2]);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Int64Int64Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Int64Int64Int32>(external);\
int32_t ret;\
ret = target(a0, a1, MakeInt64(a2, a3), MakeInt64(stack_pointer[0], stack_pointer[1]), stack_pointer[2]);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt64Int32Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt64Int32Int32>(external);\
int32_t ret;\
ret = target(a0, MakeInt64(a2, a3), stack_pointer[0], stack_pointer[1]);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt64Int32Int32Int32Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt64Int32Int32Int32Int32>(external);\
int32_t ret;\
ret = target(a0, MakeInt64(a2, a3), stack_pointer[0], stack_pointer[1], stack_pointer[2], stack_pointer[3]);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt64Int32Int64General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt64Int32Int64General>(external);\
int32_t ret;\
ret = target(a0, MakeInt64(a2, a3), stack_pointer[0], MakeInt64(stack_pointer[2], stack_pointer[3]), stack_pointer[4]);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt64Int32Int64Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt64Int32Int64Int32>(external);\
int32_t ret;\
ret = target(a0, MakeInt64(a2, a3), stack_pointer[0], MakeInt64(stack_pointer[2], stack_pointer[3]), stack_pointer[4]);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt64Int64General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt64Int64General>(external);\
int32_t ret;\
ret = target(a0, MakeInt64(a2, a3), MakeInt64(stack_pointer[0], stack_pointer[1]), stack_pointer[2]);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt64Int64Int64: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt64Int64Int64>(external);\
int32_t ret;\
ret = target(a0, MakeInt64(a2, a3), MakeInt64(stack_pointer[0], stack_pointer[1]), MakeInt64(stack_pointer[2], stack_pointer[3]));\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt64Int64Int64General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt64Int64Int64General>(external);\
int32_t ret;\
ret = target(a0, MakeInt64(a2, a3), MakeInt64(stack_pointer[0], stack_pointer[1]), MakeInt64(stack_pointer[2], stack_pointer[3]), stack_pointer[4]);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt64Int64Int64GeneralGeneral: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt64Int64Int64GeneralGeneral>(external);\
int32_t ret;\
ret = target(a0, MakeInt64(a2, a3), MakeInt64(stack_pointer[0], stack_pointer[1]), MakeInt64(stack_pointer[2], stack_pointer[3]), stack_pointer[4], stack_pointer[5]);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt64Int64Int64Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt64Int64Int64Int32>(external);\
int32_t ret;\
ret = target(a0, MakeInt64(a2, a3), MakeInt64(stack_pointer[0], stack_pointer[1]), MakeInt64(stack_pointer[2], stack_pointer[3]), stack_pointer[4]);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int32_GeneralInt64Int64Int64Int32Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt64Int64Int64Int32Int32>(external);\
int32_t ret;\
ret = target(a0, MakeInt64(a2, a3), MakeInt64(stack_pointer[0], stack_pointer[1]), MakeInt64(stack_pointer[2], stack_pointer[3]), stack_pointer[4], stack_pointer[5]);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int64_General: {\
auto target = reinterpret_cast<Prototype_Int64_General>(external);\
int64_t ret;\
ret = target(a0);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int64_GeneralGeneral: {\
auto target = reinterpret_cast<Prototype_Int64_GeneralGeneral>(external);\
int64_t ret;\
ret = target(a0, a1);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int64_Int32Int32Int32Int32: {\
auto target = reinterpret_cast<Prototype_Int64_Int32Int32Int32Int32>(external);\
int64_t ret;\
ret = target(a0, a1, a2, a3);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int64_GeneralInt32: {\
auto target = reinterpret_cast<Prototype_Int64_GeneralInt32>(external);\
int64_t ret;\
ret = target(a0, a1);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int64_GeneralInt64: {\
auto target = reinterpret_cast<Prototype_Int64_GeneralInt64>(external);\
int64_t ret;\
ret = target(a0, MakeInt64(a2, a3));\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int64_GeneralInt64Int32: {\
auto target = reinterpret_cast<Prototype_Int64_GeneralInt64Int32>(external);\
int64_t ret;\
ret = target(a0, MakeInt64(a2, a3), stack_pointer[0]);\
scratchVolatileRegisters((void*)target);\
setCallResult(ret);\
break;\
}\
#define ABI_FUNCTION_TYPE_LOONGARCH64_SIM_DISPATCH \
case js::jit::Args_General0: {\
auto target = reinterpret_cast<Prototype_General0>(nativeFn);\
auto ret = target();\
setCallResult(ret);\
break;\
}\
case js::jit::Args_General1: {\
auto target = reinterpret_cast<Prototype_General1>(nativeFn);\
auto ret = target(a0_);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_General2: {\
auto target = reinterpret_cast<Prototype_General2>(nativeFn);\
auto ret = target(a0_, a1_);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_General3: {\
auto target = reinterpret_cast<Prototype_General3>(nativeFn);\
auto ret = target(a0_, a1_, a2_);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_General4: {\
auto target = reinterpret_cast<Prototype_General4>(nativeFn);\
auto ret = target(a0_, a1_, a2_, a3_);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_General5: {\
auto target = reinterpret_cast<Prototype_General5>(nativeFn);\
auto ret = target(a0_, a1_, a2_, a3_, a4_);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_General6: {\
auto target = reinterpret_cast<Prototype_General6>(nativeFn);\
auto ret = target(a0_, a1_, a2_, a3_, a4_, a5_);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_General7: {\
auto target = reinterpret_cast<Prototype_General7>(nativeFn);\
auto ret = target(a0_, a1_, a2_, a3_, a4_, a5_, a6_);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_General8: {\
auto target = reinterpret_cast<Prototype_General8>(nativeFn);\
auto ret = target(a0_, a1_, a2_, a3_, a4_, a5_, a6_, a7_);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int64_Double: {\
auto target = reinterpret_cast<Prototype_Int64_Double>(nativeFn);\
auto ret = target(f0_d);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Double_None: {\
auto target = reinterpret_cast<Prototype_Double_None>(nativeFn);\
auto ret = target();\
setCallResultDouble(ret);\
break;\
}\
case js::jit::Args_Int_Double: {\
auto target = reinterpret_cast<Prototype_Int_Double>(nativeFn);\
auto ret = target(f0_d);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int_Float32: {\
auto target = reinterpret_cast<Prototype_Int_Float32>(nativeFn);\
auto ret = target(f0_s);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Float32_Float32: {\
auto target = reinterpret_cast<Prototype_Float32_Float32>(nativeFn);\
auto ret = target(f0_s);\
setCallResultFloat(ret);\
break;\
}\
case js::jit::Args_Float32_IntInt: {\
auto target = reinterpret_cast<Prototype_Float32_IntInt>(nativeFn);\
auto ret = target(a0_, a1_);\
setCallResultFloat(ret);\
break;\
}\
case js::jit::Args_Double_Double: {\
auto target = reinterpret_cast<Prototype_Double_Double>(nativeFn);\
auto ret = target(f0_d);\
setCallResultDouble(ret);\
break;\
}\
case js::jit::Args_Double_Int: {\
auto target = reinterpret_cast<Prototype_Double_Int>(nativeFn);\
auto ret = target(a0_);\
setCallResultDouble(ret);\
break;\
}\
case js::jit::Args_Double_IntInt: {\
auto target = reinterpret_cast<Prototype_Double_IntInt>(nativeFn);\
auto ret = target(a0_, a1_);\
setCallResultDouble(ret);\
break;\
}\
case js::jit::Args_Double_DoubleInt: {\
auto target = reinterpret_cast<Prototype_Double_DoubleInt>(nativeFn);\
auto ret = target(f0_d, a0_);\
setCallResultDouble(ret);\
break;\
}\
case js::jit::Args_Double_DoubleDouble: {\
auto target = reinterpret_cast<Prototype_Double_DoubleDouble>(nativeFn);\
auto ret = target(f0_d, f1_d);\
setCallResultDouble(ret);\
break;\
}\
case js::jit::Args_Float32_Float32Float32: {\
auto target = reinterpret_cast<Prototype_Float32_Float32Float32>(nativeFn);\
auto ret = target(f0_s, f1_s);\
setCallResultFloat(ret);\
break;\
}\
case js::jit::Args_Double_IntDouble: {\
auto target = reinterpret_cast<Prototype_Double_IntDouble>(nativeFn);\
auto ret = target(a0_, f0_d);\
setCallResultDouble(ret);\
break;\
}\
case js::jit::Args_Int_IntDouble: {\
auto target = reinterpret_cast<Prototype_Int_IntDouble>(nativeFn);\
auto ret = target(a0_, f0_d);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int_DoubleInt: {\
auto target = reinterpret_cast<Prototype_Int_DoubleInt>(nativeFn);\
auto ret = target(f0_d, a0_);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Double_DoubleDoubleDouble: {\
auto target = reinterpret_cast<Prototype_Double_DoubleDoubleDouble>(nativeFn);\
auto ret = target(f0_d, f1_d, f2_d);\
setCallResultDouble(ret);\
break;\
}\
case js::jit::Args_Double_DoubleDoubleDoubleDouble: {\
auto target = reinterpret_cast<Prototype_Double_DoubleDoubleDoubleDouble>(nativeFn);\
auto ret = target(f0_d, f1_d, f2_d, f3_d);\
setCallResultDouble(ret);\
break;\
}\
case js::jit::Args_Int_DoubleIntInt: {\
auto target = reinterpret_cast<Prototype_Int_DoubleIntInt>(nativeFn);\
auto ret = target(f0_d, a0_, a1_);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int_IntDoubleIntInt: {\
auto target = reinterpret_cast<Prototype_Int_IntDoubleIntInt>(nativeFn);\
auto ret = target(a0_, f0_d, a1_, a2_);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int_GeneralGeneralGeneralInt64: {\
auto target = reinterpret_cast<Prototype_Int_GeneralGeneralGeneralInt64>(nativeFn);\
auto ret = target(a0_, a1_, a2_, a3_);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int_GeneralGeneralInt64Int64: {\
auto target = reinterpret_cast<Prototype_Int_GeneralGeneralInt64Int64>(nativeFn);\
auto ret = target(a0_, a1_, a2_, a3_);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_General_GeneralInt32: {\
auto target = reinterpret_cast<Prototype_General_GeneralInt32>(nativeFn);\
auto ret = target(a0_, I32(a1_));\
setCallResult(ret);\
break;\
}\
case js::jit::Args_General_GeneralInt32General: {\
auto target = reinterpret_cast<Prototype_General_GeneralInt32General>(nativeFn);\
auto ret = target(a0_, I32(a1_), a2_);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_General_GeneralInt32Int32: {\
auto target = reinterpret_cast<Prototype_General_GeneralInt32Int32>(nativeFn);\
auto ret = target(a0_, I32(a1_), I32(a2_));\
setCallResult(ret);\
break;\
}\
case js::jit::Args_General_GeneralInt32Int32GeneralInt32: {\
auto target = reinterpret_cast<Prototype_General_GeneralInt32Int32GeneralInt32>(nativeFn);\
auto ret = target(a0_, I32(a1_), I32(a2_), a3_, I32(a4_));\
setCallResult(ret);\
break;\
}\
case js::jit::Args_General_GeneralGeneralInt32Int32: {\
auto target = reinterpret_cast<Prototype_General_GeneralGeneralInt32Int32>(nativeFn);\
auto ret = target(a0_, a1_, I32(a2_), I32(a3_));\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int32_General: {\
auto target = reinterpret_cast<Prototype_Int32_General>(nativeFn);\
auto ret = target(a0_);\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralGeneral: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralGeneral>(nativeFn);\
auto ret = target(a0_, a1_);\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralGeneralGeneral: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralGeneralGeneral>(nativeFn);\
auto ret = target(a0_, a1_, a2_);\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralGeneralGeneralInt32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralGeneralGeneralInt32>(nativeFn);\
auto ret = target(a0_, a1_, a2_, I32(a3_));\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralGeneralInt32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralGeneralInt32>(nativeFn);\
auto ret = target(a0_, a1_, I32(a2_));\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralGeneralInt32General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralGeneralInt32General>(nativeFn);\
auto ret = target(a0_, a1_, I32(a2_), a3_);\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralGeneralInt32GeneralInt32Int32Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralGeneralInt32GeneralInt32Int32Int32>(nativeFn);\
auto ret = target(a0_, a1_, I32(a2_), a3_, I32(a4_), I32(a5_), I32(a6_));\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralGeneralInt32Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralGeneralInt32Int32>(nativeFn);\
auto ret = target(a0_, a1_, I32(a2_), I32(a3_));\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralGeneralInt32Int32Int32GeneralInt32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralGeneralInt32Int32Int32GeneralInt32>(nativeFn);\
auto ret = target(a0_, a1_, I32(a2_), I32(a3_), I32(a4_), a5_, I32(a6_));\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32>(nativeFn);\
auto ret = target(a0_, I32(a1_));\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Float32Float32Float32Float32Int32Int32Int32Int32General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Float32Float32Float32Float32Int32Int32Int32Int32General>(nativeFn);\
auto ret = target(a0_, I32(a1_), f0_s, f1_s, f2_s, f3_s, I32(a2_), I32(a3_), I32(a4_), I32(a5_), a6_);\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Float32Float32Int32Float32Float32Int32Float32Int32Int32Int32Int32General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Float32Float32Int32Float32Float32Int32Float32Int32Int32Int32Int32General>(nativeFn);\
auto ret = target(a0_, I32(a1_), f0_s, f1_s, I32(a2_), f2_s, f3_s, I32(a3_), f4_s, I32(a4_), I32(a5_), I32(a6_), I32(a7_), sp_[0]);\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Float32Float32Int32Int32Int32General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Float32Float32Int32Int32Int32General>(nativeFn);\
auto ret = target(a0_, I32(a1_), f0_s, f1_s, I32(a2_), I32(a3_), I32(a4_), a5_);\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt32GeneralInt32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32GeneralInt32>(nativeFn);\
auto ret = target(a0_, I32(a1_), a2_, I32(a3_));\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt32GeneralInt32Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32GeneralInt32Int32>(nativeFn);\
auto ret = target(a0_, I32(a1_), a2_, I32(a3_), I32(a4_));\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Int32>(nativeFn);\
auto ret = target(a0_, I32(a1_), I32(a2_));\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Int32General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Int32General>(nativeFn);\
auto ret = target(a0_, I32(a1_), I32(a2_), a3_);\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Int32Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Int32Int32>(nativeFn);\
auto ret = target(a0_, I32(a1_), I32(a2_), I32(a3_));\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Int32Int32General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Int32Int32General>(nativeFn);\
auto ret = target(a0_, I32(a1_), I32(a2_), I32(a3_), a4_);\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Int32Int32Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Int32Int32Int32>(nativeFn);\
auto ret = target(a0_, I32(a1_), I32(a2_), I32(a3_), I32(a4_));\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Int32Int32Int32General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Int32Int32Int32General>(nativeFn);\
auto ret = target(a0_, I32(a1_), I32(a2_), I32(a3_), I32(a4_), a5_);\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Int32Int32Int32Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Int32Int32Int32Int32>(nativeFn);\
auto ret = target(a0_, I32(a1_), I32(a2_), I32(a3_), I32(a4_), I32(a5_));\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Int32Int32Int32Int32Int32General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Int32Int32Int32Int32Int32General>(nativeFn);\
auto ret = target(a0_, I32(a1_), I32(a2_), I32(a3_), I32(a4_), I32(a5_), I32(a6_), a7_);\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Int32Int64Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Int32Int64Int32>(nativeFn);\
auto ret = target(a0_, I32(a1_), I32(a2_), a3_, I32(a4_));\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Int64Int64Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Int64Int64Int32>(nativeFn);\
auto ret = target(a0_, I32(a1_), a2_, a3_, I32(a4_));\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt64Int32Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt64Int32Int32>(nativeFn);\
auto ret = target(a0_, a1_, I32(a2_), I32(a3_));\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt64Int32Int32Int32Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt64Int32Int32Int32Int32>(nativeFn);\
auto ret = target(a0_, a1_, I32(a2_), I32(a3_), I32(a4_), I32(a5_));\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt64Int32Int64General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt64Int32Int64General>(nativeFn);\
auto ret = target(a0_, a1_, I32(a2_), a3_, a4_);\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt64Int32Int64Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt64Int32Int64Int32>(nativeFn);\
auto ret = target(a0_, a1_, I32(a2_), a3_, I32(a4_));\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt64Int64General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt64Int64General>(nativeFn);\
auto ret = target(a0_, a1_, a2_, a3_);\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt64Int64Int64: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt64Int64Int64>(nativeFn);\
auto ret = target(a0_, a1_, a2_, a3_);\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt64Int64Int64General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt64Int64Int64General>(nativeFn);\
auto ret = target(a0_, a1_, a2_, a3_, a4_);\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt64Int64Int64GeneralGeneral: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt64Int64Int64GeneralGeneral>(nativeFn);\
auto ret = target(a0_, a1_, a2_, a3_, a4_, a5_);\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt64Int64Int64Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt64Int64Int64Int32>(nativeFn);\
auto ret = target(a0_, a1_, a2_, a3_, I32(a4_));\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt64Int64Int64Int32Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt64Int64Int64Int32Int32>(nativeFn);\
auto ret = target(a0_, a1_, a2_, a3_, I32(a4_), I32(a5_));\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int64_General: {\
auto target = reinterpret_cast<Prototype_Int64_General>(nativeFn);\
auto ret = target(a0_);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int64_GeneralGeneral: {\
auto target = reinterpret_cast<Prototype_Int64_GeneralGeneral>(nativeFn);\
auto ret = target(a0_, a1_);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int64_Int32Int32Int32Int32: {\
auto target = reinterpret_cast<Prototype_Int64_Int32Int32Int32Int32>(nativeFn);\
auto ret = target(I32(a0_), I32(a1_), I32(a2_), I32(a3_));\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int64_GeneralInt32: {\
auto target = reinterpret_cast<Prototype_Int64_GeneralInt32>(nativeFn);\
auto ret = target(a0_, I32(a1_));\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int64_GeneralInt64: {\
auto target = reinterpret_cast<Prototype_Int64_GeneralInt64>(nativeFn);\
auto ret = target(a0_, a1_);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int64_GeneralInt64Int32: {\
auto target = reinterpret_cast<Prototype_Int64_GeneralInt64Int32>(nativeFn);\
auto ret = target(a0_, a1_, I32(a2_));\
setCallResult(ret);\
break;\
}\
#define ABI_FUNCTION_TYPE_MIPS64_SIM_DISPATCH \
case js::jit::Args_General0: {\
auto target = reinterpret_cast<Prototype_General0>(nativeFn);\
auto ret = target();\
setCallResult(ret);\
break;\
}\
case js::jit::Args_General1: {\
auto target = reinterpret_cast<Prototype_General1>(nativeFn);\
auto ret = target(a0_);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_General2: {\
auto target = reinterpret_cast<Prototype_General2>(nativeFn);\
auto ret = target(a0_, a1_);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_General3: {\
auto target = reinterpret_cast<Prototype_General3>(nativeFn);\
auto ret = target(a0_, a1_, a2_);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_General4: {\
auto target = reinterpret_cast<Prototype_General4>(nativeFn);\
auto ret = target(a0_, a1_, a2_, a3_);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_General5: {\
auto target = reinterpret_cast<Prototype_General5>(nativeFn);\
auto ret = target(a0_, a1_, a2_, a3_, a4_);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_General6: {\
auto target = reinterpret_cast<Prototype_General6>(nativeFn);\
auto ret = target(a0_, a1_, a2_, a3_, a4_, a5_);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_General7: {\
auto target = reinterpret_cast<Prototype_General7>(nativeFn);\
auto ret = target(a0_, a1_, a2_, a3_, a4_, a5_, a6_);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_General8: {\
auto target = reinterpret_cast<Prototype_General8>(nativeFn);\
auto ret = target(a0_, a1_, a2_, a3_, a4_, a5_, a6_, a7_);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int64_Double: {\
auto target = reinterpret_cast<Prototype_Int64_Double>(nativeFn);\
auto ret = target(f12_d);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Double_None: {\
auto target = reinterpret_cast<Prototype_Double_None>(nativeFn);\
auto ret = target();\
setCallResultDouble(ret);\
break;\
}\
case js::jit::Args_Int_Double: {\
auto target = reinterpret_cast<Prototype_Int_Double>(nativeFn);\
auto ret = target(f12_d);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int_Float32: {\
auto target = reinterpret_cast<Prototype_Int_Float32>(nativeFn);\
auto ret = target(f12_s);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Float32_Float32: {\
auto target = reinterpret_cast<Prototype_Float32_Float32>(nativeFn);\
auto ret = target(f12_s);\
setCallResultFloat(ret);\
break;\
}\
case js::jit::Args_Float32_IntInt: {\
auto target = reinterpret_cast<Prototype_Float32_IntInt>(nativeFn);\
auto ret = target(a0_, a1_);\
setCallResultFloat(ret);\
break;\
}\
case js::jit::Args_Double_Double: {\
auto target = reinterpret_cast<Prototype_Double_Double>(nativeFn);\
auto ret = target(f12_d);\
setCallResultDouble(ret);\
break;\
}\
case js::jit::Args_Double_Int: {\
auto target = reinterpret_cast<Prototype_Double_Int>(nativeFn);\
auto ret = target(a0_);\
setCallResultDouble(ret);\
break;\
}\
case js::jit::Args_Double_IntInt: {\
auto target = reinterpret_cast<Prototype_Double_IntInt>(nativeFn);\
auto ret = target(a0_, a1_);\
setCallResultDouble(ret);\
break;\
}\
case js::jit::Args_Double_DoubleInt: {\
auto target = reinterpret_cast<Prototype_Double_DoubleInt>(nativeFn);\
auto ret = target(f12_d, a1_);\
setCallResultDouble(ret);\
break;\
}\
case js::jit::Args_Double_DoubleDouble: {\
auto target = reinterpret_cast<Prototype_Double_DoubleDouble>(nativeFn);\
auto ret = target(f12_d, f13_d);\
setCallResultDouble(ret);\
break;\
}\
case js::jit::Args_Float32_Float32Float32: {\
auto target = reinterpret_cast<Prototype_Float32_Float32Float32>(nativeFn);\
auto ret = target(f12_s, f13_s);\
setCallResultFloat(ret);\
break;\
}\
case js::jit::Args_Double_IntDouble: {\
auto target = reinterpret_cast<Prototype_Double_IntDouble>(nativeFn);\
auto ret = target(a0_, f13_d);\
setCallResultDouble(ret);\
break;\
}\
case js::jit::Args_Int_IntDouble: {\
auto target = reinterpret_cast<Prototype_Int_IntDouble>(nativeFn);\
auto ret = target(a0_, f13_d);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int_DoubleInt: {\
auto target = reinterpret_cast<Prototype_Int_DoubleInt>(nativeFn);\
auto ret = target(f12_d, a1_);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Double_DoubleDoubleDouble: {\
auto target = reinterpret_cast<Prototype_Double_DoubleDoubleDouble>(nativeFn);\
auto ret = target(f12_d, f13_d, f14_d);\
setCallResultDouble(ret);\
break;\
}\
case js::jit::Args_Double_DoubleDoubleDoubleDouble: {\
auto target = reinterpret_cast<Prototype_Double_DoubleDoubleDoubleDouble>(nativeFn);\
auto ret = target(f12_d, f13_d, f14_d, f15_d);\
setCallResultDouble(ret);\
break;\
}\
case js::jit::Args_Int_DoubleIntInt: {\
auto target = reinterpret_cast<Prototype_Int_DoubleIntInt>(nativeFn);\
auto ret = target(f12_d, a1_, a2_);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int_IntDoubleIntInt: {\
auto target = reinterpret_cast<Prototype_Int_IntDoubleIntInt>(nativeFn);\
auto ret = target(a0_, f13_d, a2_, a3_);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int_GeneralGeneralGeneralInt64: {\
auto target = reinterpret_cast<Prototype_Int_GeneralGeneralGeneralInt64>(nativeFn);\
auto ret = target(a0_, a1_, a2_, a3_);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int_GeneralGeneralInt64Int64: {\
auto target = reinterpret_cast<Prototype_Int_GeneralGeneralInt64Int64>(nativeFn);\
auto ret = target(a0_, a1_, a2_, a3_);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_General_GeneralInt32: {\
auto target = reinterpret_cast<Prototype_General_GeneralInt32>(nativeFn);\
auto ret = target(a0_, I32(a1_));\
setCallResult(ret);\
break;\
}\
case js::jit::Args_General_GeneralInt32General: {\
auto target = reinterpret_cast<Prototype_General_GeneralInt32General>(nativeFn);\
auto ret = target(a0_, I32(a1_), a2_);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_General_GeneralInt32Int32: {\
auto target = reinterpret_cast<Prototype_General_GeneralInt32Int32>(nativeFn);\
auto ret = target(a0_, I32(a1_), I32(a2_));\
setCallResult(ret);\
break;\
}\
case js::jit::Args_General_GeneralInt32Int32GeneralInt32: {\
auto target = reinterpret_cast<Prototype_General_GeneralInt32Int32GeneralInt32>(nativeFn);\
auto ret = target(a0_, I32(a1_), I32(a2_), a3_, I32(a4_));\
setCallResult(ret);\
break;\
}\
case js::jit::Args_General_GeneralGeneralInt32Int32: {\
auto target = reinterpret_cast<Prototype_General_GeneralGeneralInt32Int32>(nativeFn);\
auto ret = target(a0_, a1_, I32(a2_), I32(a3_));\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int32_General: {\
auto target = reinterpret_cast<Prototype_Int32_General>(nativeFn);\
auto ret = target(a0_);\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralGeneral: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralGeneral>(nativeFn);\
auto ret = target(a0_, a1_);\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralGeneralGeneral: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralGeneralGeneral>(nativeFn);\
auto ret = target(a0_, a1_, a2_);\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralGeneralGeneralInt32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralGeneralGeneralInt32>(nativeFn);\
auto ret = target(a0_, a1_, a2_, I32(a3_));\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralGeneralInt32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralGeneralInt32>(nativeFn);\
auto ret = target(a0_, a1_, I32(a2_));\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralGeneralInt32General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralGeneralInt32General>(nativeFn);\
auto ret = target(a0_, a1_, I32(a2_), a3_);\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralGeneralInt32GeneralInt32Int32Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralGeneralInt32GeneralInt32Int32Int32>(nativeFn);\
auto ret = target(a0_, a1_, I32(a2_), a3_, I32(a4_), I32(a5_), I32(a6_));\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralGeneralInt32Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralGeneralInt32Int32>(nativeFn);\
auto ret = target(a0_, a1_, I32(a2_), I32(a3_));\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralGeneralInt32Int32Int32GeneralInt32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralGeneralInt32Int32Int32GeneralInt32>(nativeFn);\
auto ret = target(a0_, a1_, I32(a2_), I32(a3_), I32(a4_), a5_, I32(a6_));\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32>(nativeFn);\
auto ret = target(a0_, I32(a1_));\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Float32Float32Float32Float32Int32Int32Int32Int32General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Float32Float32Float32Float32Int32Int32Int32Int32General>(nativeFn);\
auto ret = target(a0_, I32(a1_), f14_s, f15_s, f16_s, f17_s, I32(a6_), I32(a7_), I32(sp_[0]), I32(sp_[1]), sp_[2]);\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Float32Float32Int32Float32Float32Int32Float32Int32Int32Int32Int32General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Float32Float32Int32Float32Float32Int32Float32Int32Int32Int32Int32General>(nativeFn);\
auto ret = target(a0_, I32(a1_), f14_s, f15_s, I32(a4_), f17_s, f18_s, I32(a7_), *mozilla::BitwiseCast<float*>(sp_[0]), I32(sp_[1]), I32(sp_[2]), I32(sp_[3]), I32(sp_[4]), sp_[5]);\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Float32Float32Int32Int32Int32General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Float32Float32Int32Int32Int32General>(nativeFn);\
auto ret = target(a0_, I32(a1_), f14_s, f15_s, I32(a4_), I32(a5_), I32(a6_), a7_);\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt32GeneralInt32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32GeneralInt32>(nativeFn);\
auto ret = target(a0_, I32(a1_), a2_, I32(a3_));\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt32GeneralInt32Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32GeneralInt32Int32>(nativeFn);\
auto ret = target(a0_, I32(a1_), a2_, I32(a3_), I32(a4_));\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Int32>(nativeFn);\
auto ret = target(a0_, I32(a1_), I32(a2_));\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Int32General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Int32General>(nativeFn);\
auto ret = target(a0_, I32(a1_), I32(a2_), a3_);\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Int32Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Int32Int32>(nativeFn);\
auto ret = target(a0_, I32(a1_), I32(a2_), I32(a3_));\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Int32Int32General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Int32Int32General>(nativeFn);\
auto ret = target(a0_, I32(a1_), I32(a2_), I32(a3_), a4_);\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Int32Int32Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Int32Int32Int32>(nativeFn);\
auto ret = target(a0_, I32(a1_), I32(a2_), I32(a3_), I32(a4_));\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Int32Int32Int32General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Int32Int32Int32General>(nativeFn);\
auto ret = target(a0_, I32(a1_), I32(a2_), I32(a3_), I32(a4_), a5_);\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Int32Int32Int32Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Int32Int32Int32Int32>(nativeFn);\
auto ret = target(a0_, I32(a1_), I32(a2_), I32(a3_), I32(a4_), I32(a5_));\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Int32Int32Int32Int32Int32General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Int32Int32Int32Int32Int32General>(nativeFn);\
auto ret = target(a0_, I32(a1_), I32(a2_), I32(a3_), I32(a4_), I32(a5_), I32(a6_), a7_);\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Int32Int64Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Int32Int64Int32>(nativeFn);\
auto ret = target(a0_, I32(a1_), I32(a2_), a3_, I32(a4_));\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt32Int64Int64Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt32Int64Int64Int32>(nativeFn);\
auto ret = target(a0_, I32(a1_), a2_, a3_, I32(a4_));\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt64Int32Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt64Int32Int32>(nativeFn);\
auto ret = target(a0_, a1_, I32(a2_), I32(a3_));\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt64Int32Int32Int32Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt64Int32Int32Int32Int32>(nativeFn);\
auto ret = target(a0_, a1_, I32(a2_), I32(a3_), I32(a4_), I32(a5_));\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt64Int32Int64General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt64Int32Int64General>(nativeFn);\
auto ret = target(a0_, a1_, I32(a2_), a3_, a4_);\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt64Int32Int64Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt64Int32Int64Int32>(nativeFn);\
auto ret = target(a0_, a1_, I32(a2_), a3_, I32(a4_));\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt64Int64General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt64Int64General>(nativeFn);\
auto ret = target(a0_, a1_, a2_, a3_);\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt64Int64Int64: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt64Int64Int64>(nativeFn);\
auto ret = target(a0_, a1_, a2_, a3_);\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt64Int64Int64General: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt64Int64Int64General>(nativeFn);\
auto ret = target(a0_, a1_, a2_, a3_, a4_);\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt64Int64Int64GeneralGeneral: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt64Int64Int64GeneralGeneral>(nativeFn);\
auto ret = target(a0_, a1_, a2_, a3_, a4_, a5_);\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt64Int64Int64Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt64Int64Int64Int32>(nativeFn);\
auto ret = target(a0_, a1_, a2_, a3_, I32(a4_));\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int32_GeneralInt64Int64Int64Int32Int32: {\
auto target = reinterpret_cast<Prototype_Int32_GeneralInt64Int64Int64Int32Int32>(nativeFn);\
auto ret = target(a0_, a1_, a2_, a3_, I32(a4_), I32(a5_));\
setCallResult(I64(ret));\
break;\
}\
case js::jit::Args_Int64_General: {\
auto target = reinterpret_cast<Prototype_Int64_General>(nativeFn);\
auto ret = target(a0_);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int64_GeneralGeneral: {\
auto target = reinterpret_cast<Prototype_Int64_GeneralGeneral>(nativeFn);\
auto ret = target(a0_, a1_);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int64_Int32Int32Int32Int32: {\
auto target = reinterpret_cast<Prototype_Int64_Int32Int32Int32Int32>(nativeFn);\
auto ret = target(I32(a0_), I32(a1_), I32(a2_), I32(a3_));\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int64_GeneralInt32: {\
auto target = reinterpret_cast<Prototype_Int64_GeneralInt32>(nativeFn);\
auto ret = target(a0_, I32(a1_));\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int64_GeneralInt64: {\
auto target = reinterpret_cast<Prototype_Int64_GeneralInt64>(nativeFn);\
auto ret = target(a0_, a1_);\
setCallResult(ret);\
break;\
}\
case js::jit::Args_Int64_GeneralInt64Int32: {\
auto target = reinterpret_cast<Prototype_Int64_GeneralInt64Int32>(nativeFn);\
auto ret = target(a0_, a1_, I32(a2_));\
setCallResult(ret);\
break;\
}\
#endif // jit_ABIFunctionTypeGenerated_h