Source code

Revision control

Copy as Markdown

Other Tools

"use strict";
// Generated by opcode_generator.rb from JavaScriptCore/b3/air/AirOpcode.opcodes -- do not edit!
const Nop = Symbol("Nop");
const Add32 = Symbol("Add32");
const Add8 = Symbol("Add8");
const Add16 = Symbol("Add16");
const Add64 = Symbol("Add64");
const AddDouble = Symbol("AddDouble");
const AddFloat = Symbol("AddFloat");
const Sub32 = Symbol("Sub32");
const Sub64 = Symbol("Sub64");
const SubDouble = Symbol("SubDouble");
const SubFloat = Symbol("SubFloat");
const Neg32 = Symbol("Neg32");
const Neg64 = Symbol("Neg64");
const NegateDouble = Symbol("NegateDouble");
const Mul32 = Symbol("Mul32");
const Mul64 = Symbol("Mul64");
const MultiplyAdd32 = Symbol("MultiplyAdd32");
const MultiplyAdd64 = Symbol("MultiplyAdd64");
const MultiplySub32 = Symbol("MultiplySub32");
const MultiplySub64 = Symbol("MultiplySub64");
const MultiplyNeg32 = Symbol("MultiplyNeg32");
const MultiplyNeg64 = Symbol("MultiplyNeg64");
const Div32 = Symbol("Div32");
const Div64 = Symbol("Div64");
const MulDouble = Symbol("MulDouble");
const MulFloat = Symbol("MulFloat");
const DivDouble = Symbol("DivDouble");
const DivFloat = Symbol("DivFloat");
const X86ConvertToDoubleWord32 = Symbol("X86ConvertToDoubleWord32");
const X86ConvertToQuadWord64 = Symbol("X86ConvertToQuadWord64");
const X86Div32 = Symbol("X86Div32");
const X86Div64 = Symbol("X86Div64");
const Lea = Symbol("Lea");
const And32 = Symbol("And32");
const And64 = Symbol("And64");
const AndDouble = Symbol("AndDouble");
const AndFloat = Symbol("AndFloat");
const XorDouble = Symbol("XorDouble");
const XorFloat = Symbol("XorFloat");
const Lshift32 = Symbol("Lshift32");
const Lshift64 = Symbol("Lshift64");
const Rshift32 = Symbol("Rshift32");
const Rshift64 = Symbol("Rshift64");
const Urshift32 = Symbol("Urshift32");
const Urshift64 = Symbol("Urshift64");
const Or32 = Symbol("Or32");
const Or64 = Symbol("Or64");
const Xor32 = Symbol("Xor32");
const Xor64 = Symbol("Xor64");
const Not32 = Symbol("Not32");
const Not64 = Symbol("Not64");
const AbsDouble = Symbol("AbsDouble");
const AbsFloat = Symbol("AbsFloat");
const CeilDouble = Symbol("CeilDouble");
const CeilFloat = Symbol("CeilFloat");
const FloorDouble = Symbol("FloorDouble");
const FloorFloat = Symbol("FloorFloat");
const SqrtDouble = Symbol("SqrtDouble");
const SqrtFloat = Symbol("SqrtFloat");
const ConvertInt32ToDouble = Symbol("ConvertInt32ToDouble");
const ConvertInt64ToDouble = Symbol("ConvertInt64ToDouble");
const ConvertInt32ToFloat = Symbol("ConvertInt32ToFloat");
const ConvertInt64ToFloat = Symbol("ConvertInt64ToFloat");
const CountLeadingZeros32 = Symbol("CountLeadingZeros32");
const CountLeadingZeros64 = Symbol("CountLeadingZeros64");
const ConvertDoubleToFloat = Symbol("ConvertDoubleToFloat");
const ConvertFloatToDouble = Symbol("ConvertFloatToDouble");
const Move = Symbol("Move");
const Swap32 = Symbol("Swap32");
const Swap64 = Symbol("Swap64");
const Move32 = Symbol("Move32");
const StoreZero32 = Symbol("StoreZero32");
const SignExtend32ToPtr = Symbol("SignExtend32ToPtr");
const ZeroExtend8To32 = Symbol("ZeroExtend8To32");
const SignExtend8To32 = Symbol("SignExtend8To32");
const ZeroExtend16To32 = Symbol("ZeroExtend16To32");
const SignExtend16To32 = Symbol("SignExtend16To32");
const MoveFloat = Symbol("MoveFloat");
const MoveDouble = Symbol("MoveDouble");
const MoveZeroToDouble = Symbol("MoveZeroToDouble");
const Move64ToDouble = Symbol("Move64ToDouble");
const Move32ToFloat = Symbol("Move32ToFloat");
const MoveDoubleTo64 = Symbol("MoveDoubleTo64");
const MoveFloatTo32 = Symbol("MoveFloatTo32");
const Load8 = Symbol("Load8");
const Store8 = Symbol("Store8");
const Load8SignedExtendTo32 = Symbol("Load8SignedExtendTo32");
const Load16 = Symbol("Load16");
const Load16SignedExtendTo32 = Symbol("Load16SignedExtendTo32");
const Store16 = Symbol("Store16");
const Compare32 = Symbol("Compare32");
const Compare64 = Symbol("Compare64");
const Test32 = Symbol("Test32");
const Test64 = Symbol("Test64");
const CompareDouble = Symbol("CompareDouble");
const CompareFloat = Symbol("CompareFloat");
const Branch8 = Symbol("Branch8");
const Branch32 = Symbol("Branch32");
const Branch64 = Symbol("Branch64");
const BranchTest8 = Symbol("BranchTest8");
const BranchTest32 = Symbol("BranchTest32");
const BranchTest64 = Symbol("BranchTest64");
const BranchDouble = Symbol("BranchDouble");
const BranchFloat = Symbol("BranchFloat");
const BranchAdd32 = Symbol("BranchAdd32");
const BranchAdd64 = Symbol("BranchAdd64");
const BranchMul32 = Symbol("BranchMul32");
const BranchMul64 = Symbol("BranchMul64");
const BranchSub32 = Symbol("BranchSub32");
const BranchSub64 = Symbol("BranchSub64");
const BranchNeg32 = Symbol("BranchNeg32");
const BranchNeg64 = Symbol("BranchNeg64");
const MoveConditionally32 = Symbol("MoveConditionally32");
const MoveConditionally64 = Symbol("MoveConditionally64");
const MoveConditionallyTest32 = Symbol("MoveConditionallyTest32");
const MoveConditionallyTest64 = Symbol("MoveConditionallyTest64");
const MoveConditionallyDouble = Symbol("MoveConditionallyDouble");
const MoveConditionallyFloat = Symbol("MoveConditionallyFloat");
const MoveDoubleConditionally32 = Symbol("MoveDoubleConditionally32");
const MoveDoubleConditionally64 = Symbol("MoveDoubleConditionally64");
const MoveDoubleConditionallyTest32 = Symbol("MoveDoubleConditionallyTest32");
const MoveDoubleConditionallyTest64 = Symbol("MoveDoubleConditionallyTest64");
const MoveDoubleConditionallyDouble = Symbol("MoveDoubleConditionallyDouble");
const MoveDoubleConditionallyFloat = Symbol("MoveDoubleConditionallyFloat");
const Jump = Symbol("Jump");
const Ret32 = Symbol("Ret32");
const Ret64 = Symbol("Ret64");
const RetFloat = Symbol("RetFloat");
const RetDouble = Symbol("RetDouble");
const Oops = Symbol("Oops");
const Shuffle = Symbol("Shuffle");
const Patch = Symbol("Patch");
const CCall = Symbol("CCall");
const ColdCCall = Symbol("ColdCCall");
function Inst_forEachArg(inst, func)
{
let replacement;
switch (inst.opcode) {
case Nop:
break;
break;
case Add32:
switch (inst.args.length) {
case 3:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 32);
inst.visitArg(2, func, Arg.ZDef, GP, 32);
break;
case 2:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.UseZDef, GP, 32);
break;
default:
throw new Error("Bad overload");
break;
}
break;
case Add8:
inst.visitArg(0, func, Arg.Use, GP, 8);
inst.visitArg(1, func, Arg.UseDef, GP, 8);
break;
break;
case Add16:
inst.visitArg(0, func, Arg.Use, GP, 16);
inst.visitArg(1, func, Arg.UseDef, GP, 16);
break;
break;
case Add64:
switch (inst.args.length) {
case 2:
inst.visitArg(0, func, Arg.Use, GP, 64);
inst.visitArg(1, func, Arg.UseDef, GP, 64);
break;
case 3:
inst.visitArg(0, func, Arg.Use, GP, 64);
inst.visitArg(1, func, Arg.Use, GP, 64);
inst.visitArg(2, func, Arg.Def, GP, 64);
break;
default:
throw new Error("Bad overload");
break;
}
break;
case AddDouble:
switch (inst.args.length) {
case 3:
inst.visitArg(0, func, Arg.Use, FP, 64);
inst.visitArg(1, func, Arg.Use, FP, 64);
inst.visitArg(2, func, Arg.Def, FP, 64);
break;
case 2:
inst.visitArg(0, func, Arg.Use, FP, 64);
inst.visitArg(1, func, Arg.UseDef, FP, 64);
break;
default:
throw new Error("Bad overload");
break;
}
break;
case AddFloat:
switch (inst.args.length) {
case 3:
inst.visitArg(0, func, Arg.Use, FP, 32);
inst.visitArg(1, func, Arg.Use, FP, 32);
inst.visitArg(2, func, Arg.Def, FP, 32);
break;
case 2:
inst.visitArg(0, func, Arg.Use, FP, 32);
inst.visitArg(1, func, Arg.UseDef, FP, 32);
break;
default:
throw new Error("Bad overload");
break;
}
break;
case Sub32:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.UseZDef, GP, 32);
break;
break;
case Sub64:
inst.visitArg(0, func, Arg.Use, GP, 64);
inst.visitArg(1, func, Arg.UseDef, GP, 64);
break;
break;
case SubDouble:
switch (inst.args.length) {
case 3:
inst.visitArg(0, func, Arg.Use, FP, 64);
inst.visitArg(1, func, Arg.Use, FP, 64);
inst.visitArg(2, func, Arg.Def, FP, 64);
break;
case 2:
inst.visitArg(0, func, Arg.Use, FP, 64);
inst.visitArg(1, func, Arg.UseDef, FP, 64);
break;
default:
throw new Error("Bad overload");
break;
}
break;
case SubFloat:
switch (inst.args.length) {
case 3:
inst.visitArg(0, func, Arg.Use, FP, 32);
inst.visitArg(1, func, Arg.Use, FP, 32);
inst.visitArg(2, func, Arg.Def, FP, 32);
break;
case 2:
inst.visitArg(0, func, Arg.Use, FP, 32);
inst.visitArg(1, func, Arg.UseDef, FP, 32);
break;
default:
throw new Error("Bad overload");
break;
}
break;
case Neg32:
inst.visitArg(0, func, Arg.UseZDef, GP, 32);
break;
break;
case Neg64:
inst.visitArg(0, func, Arg.UseDef, GP, 64);
break;
break;
case NegateDouble:
inst.visitArg(0, func, Arg.Use, FP, 64);
inst.visitArg(1, func, Arg.Def, FP, 64);
break;
break;
case Mul32:
switch (inst.args.length) {
case 2:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.UseZDef, GP, 32);
break;
case 3:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 32);
inst.visitArg(2, func, Arg.ZDef, GP, 32);
break;
default:
throw new Error("Bad overload");
break;
}
break;
case Mul64:
switch (inst.args.length) {
case 2:
inst.visitArg(0, func, Arg.Use, GP, 64);
inst.visitArg(1, func, Arg.UseDef, GP, 64);
break;
case 3:
inst.visitArg(0, func, Arg.Use, GP, 64);
inst.visitArg(1, func, Arg.Use, GP, 64);
inst.visitArg(2, func, Arg.Def, GP, 64);
break;
default:
throw new Error("Bad overload");
break;
}
break;
case MultiplyAdd32:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 32);
inst.visitArg(2, func, Arg.Use, GP, 32);
inst.visitArg(3, func, Arg.ZDef, GP, 32);
break;
break;
case MultiplyAdd64:
inst.visitArg(0, func, Arg.Use, GP, 64);
inst.visitArg(1, func, Arg.Use, GP, 64);
inst.visitArg(2, func, Arg.Use, GP, 64);
inst.visitArg(3, func, Arg.Def, GP, 64);
break;
break;
case MultiplySub32:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 32);
inst.visitArg(2, func, Arg.Use, GP, 32);
inst.visitArg(3, func, Arg.ZDef, GP, 32);
break;
break;
case MultiplySub64:
inst.visitArg(0, func, Arg.Use, GP, 64);
inst.visitArg(1, func, Arg.Use, GP, 64);
inst.visitArg(2, func, Arg.Use, GP, 64);
inst.visitArg(3, func, Arg.Def, GP, 64);
break;
break;
case MultiplyNeg32:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 32);
inst.visitArg(2, func, Arg.ZDef, GP, 32);
break;
break;
case MultiplyNeg64:
inst.visitArg(0, func, Arg.Use, GP, 64);
inst.visitArg(1, func, Arg.Use, GP, 64);
inst.visitArg(2, func, Arg.ZDef, GP, 64);
break;
break;
case Div32:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 32);
inst.visitArg(2, func, Arg.ZDef, GP, 32);
break;
break;
case Div64:
inst.visitArg(0, func, Arg.Use, GP, 64);
inst.visitArg(1, func, Arg.Use, GP, 64);
inst.visitArg(2, func, Arg.Def, GP, 64);
break;
break;
case MulDouble:
switch (inst.args.length) {
case 3:
inst.visitArg(0, func, Arg.Use, FP, 64);
inst.visitArg(1, func, Arg.Use, FP, 64);
inst.visitArg(2, func, Arg.Def, FP, 64);
break;
case 2:
inst.visitArg(0, func, Arg.Use, FP, 64);
inst.visitArg(1, func, Arg.UseDef, FP, 64);
break;
default:
throw new Error("Bad overload");
break;
}
break;
case MulFloat:
switch (inst.args.length) {
case 3:
inst.visitArg(0, func, Arg.Use, FP, 32);
inst.visitArg(1, func, Arg.Use, FP, 32);
inst.visitArg(2, func, Arg.Def, FP, 32);
break;
case 2:
inst.visitArg(0, func, Arg.Use, FP, 32);
inst.visitArg(1, func, Arg.UseDef, FP, 32);
break;
default:
throw new Error("Bad overload");
break;
}
break;
case DivDouble:
switch (inst.args.length) {
case 3:
inst.visitArg(0, func, Arg.Use, FP, 64);
inst.visitArg(1, func, Arg.Use, FP, 32);
inst.visitArg(2, func, Arg.Def, FP, 64);
break;
case 2:
inst.visitArg(0, func, Arg.Use, FP, 64);
inst.visitArg(1, func, Arg.UseDef, FP, 64);
break;
default:
throw new Error("Bad overload");
break;
}
break;
case DivFloat:
switch (inst.args.length) {
case 3:
inst.visitArg(0, func, Arg.Use, FP, 32);
inst.visitArg(1, func, Arg.Use, FP, 32);
inst.visitArg(2, func, Arg.Def, FP, 32);
break;
case 2:
inst.visitArg(0, func, Arg.Use, FP, 32);
inst.visitArg(1, func, Arg.UseDef, FP, 32);
break;
default:
throw new Error("Bad overload");
break;
}
break;
case X86ConvertToDoubleWord32:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.ZDef, GP, 32);
break;
break;
case X86ConvertToQuadWord64:
inst.visitArg(0, func, Arg.Use, GP, 64);
inst.visitArg(1, func, Arg.Def, GP, 64);
break;
break;
case X86Div32:
inst.visitArg(0, func, Arg.UseZDef, GP, 32);
inst.visitArg(1, func, Arg.UseZDef, GP, 32);
inst.visitArg(2, func, Arg.Use, GP, 32);
break;
break;
case X86Div64:
inst.visitArg(0, func, Arg.UseZDef, GP, 64);
inst.visitArg(1, func, Arg.UseZDef, GP, 64);
inst.visitArg(2, func, Arg.Use, GP, 64);
break;
break;
case Lea:
inst.visitArg(0, func, Arg.UseAddr, GP, Ptr);
inst.visitArg(1, func, Arg.Def, GP, Ptr);
break;
break;
case And32:
switch (inst.args.length) {
case 3:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 32);
inst.visitArg(2, func, Arg.ZDef, GP, 32);
break;
case 2:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.UseZDef, GP, 32);
break;
default:
throw new Error("Bad overload");
break;
}
break;
case And64:
switch (inst.args.length) {
case 3:
inst.visitArg(0, func, Arg.Use, GP, 64);
inst.visitArg(1, func, Arg.Use, GP, 64);
inst.visitArg(2, func, Arg.Def, GP, 64);
break;
case 2:
inst.visitArg(0, func, Arg.Use, GP, 64);
inst.visitArg(1, func, Arg.UseDef, GP, 64);
break;
default:
throw new Error("Bad overload");
break;
}
break;
case AndDouble:
switch (inst.args.length) {
case 3:
inst.visitArg(0, func, Arg.Use, FP, 64);
inst.visitArg(1, func, Arg.Use, FP, 64);
inst.visitArg(2, func, Arg.Def, FP, 64);
break;
case 2:
inst.visitArg(0, func, Arg.Use, FP, 64);
inst.visitArg(1, func, Arg.UseDef, FP, 64);
break;
default:
throw new Error("Bad overload");
break;
}
break;
case AndFloat:
switch (inst.args.length) {
case 3:
inst.visitArg(0, func, Arg.Use, FP, 32);
inst.visitArg(1, func, Arg.Use, FP, 32);
inst.visitArg(2, func, Arg.Def, FP, 32);
break;
case 2:
inst.visitArg(0, func, Arg.Use, FP, 32);
inst.visitArg(1, func, Arg.UseDef, FP, 32);
break;
default:
throw new Error("Bad overload");
break;
}
break;
case XorDouble:
switch (inst.args.length) {
case 3:
inst.visitArg(0, func, Arg.Use, FP, 64);
inst.visitArg(1, func, Arg.Use, FP, 64);
inst.visitArg(2, func, Arg.Def, FP, 64);
break;
case 2:
inst.visitArg(0, func, Arg.Use, FP, 64);
inst.visitArg(1, func, Arg.UseDef, FP, 64);
break;
default:
throw new Error("Bad overload");
break;
}
break;
case XorFloat:
switch (inst.args.length) {
case 3:
inst.visitArg(0, func, Arg.Use, FP, 32);
inst.visitArg(1, func, Arg.Use, FP, 32);
inst.visitArg(2, func, Arg.Def, FP, 32);
break;
case 2:
inst.visitArg(0, func, Arg.Use, FP, 32);
inst.visitArg(1, func, Arg.UseDef, FP, 32);
break;
default:
throw new Error("Bad overload");
break;
}
break;
case Lshift32:
switch (inst.args.length) {
case 3:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 32);
inst.visitArg(2, func, Arg.ZDef, GP, 32);
break;
case 2:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.UseZDef, GP, 32);
break;
default:
throw new Error("Bad overload");
break;
}
break;
case Lshift64:
switch (inst.args.length) {
case 3:
inst.visitArg(0, func, Arg.Use, GP, 64);
inst.visitArg(1, func, Arg.Use, GP, 64);
inst.visitArg(2, func, Arg.ZDef, GP, 64);
break;
case 2:
inst.visitArg(0, func, Arg.Use, GP, 64);
inst.visitArg(1, func, Arg.UseDef, GP, 64);
break;
default:
throw new Error("Bad overload");
break;
}
break;
case Rshift32:
switch (inst.args.length) {
case 3:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 32);
inst.visitArg(2, func, Arg.ZDef, GP, 32);
break;
case 2:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.UseZDef, GP, 32);
break;
default:
throw new Error("Bad overload");
break;
}
break;
case Rshift64:
switch (inst.args.length) {
case 3:
inst.visitArg(0, func, Arg.Use, GP, 64);
inst.visitArg(1, func, Arg.Use, GP, 64);
inst.visitArg(2, func, Arg.ZDef, GP, 64);
break;
case 2:
inst.visitArg(0, func, Arg.Use, GP, 64);
inst.visitArg(1, func, Arg.UseDef, GP, 64);
break;
default:
throw new Error("Bad overload");
break;
}
break;
case Urshift32:
switch (inst.args.length) {
case 3:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 32);
inst.visitArg(2, func, Arg.ZDef, GP, 32);
break;
case 2:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.UseZDef, GP, 32);
break;
default:
throw new Error("Bad overload");
break;
}
break;
case Urshift64:
switch (inst.args.length) {
case 3:
inst.visitArg(0, func, Arg.Use, GP, 64);
inst.visitArg(1, func, Arg.Use, GP, 64);
inst.visitArg(2, func, Arg.ZDef, GP, 64);
break;
case 2:
inst.visitArg(0, func, Arg.Use, GP, 64);
inst.visitArg(1, func, Arg.UseDef, GP, 64);
break;
default:
throw new Error("Bad overload");
break;
}
break;
case Or32:
switch (inst.args.length) {
case 3:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 32);
inst.visitArg(2, func, Arg.ZDef, GP, 32);
break;
case 2:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.UseZDef, GP, 32);
break;
default:
throw new Error("Bad overload");
break;
}
break;
case Or64:
switch (inst.args.length) {
case 3:
inst.visitArg(0, func, Arg.Use, GP, 64);
inst.visitArg(1, func, Arg.Use, GP, 64);
inst.visitArg(2, func, Arg.Def, GP, 64);
break;
case 2:
inst.visitArg(0, func, Arg.Use, GP, 64);
inst.visitArg(1, func, Arg.UseDef, GP, 64);
break;
default:
throw new Error("Bad overload");
break;
}
break;
case Xor32:
switch (inst.args.length) {
case 3:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 32);
inst.visitArg(2, func, Arg.ZDef, GP, 32);
break;
case 2:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.UseZDef, GP, 32);
break;
default:
throw new Error("Bad overload");
break;
}
break;
case Xor64:
switch (inst.args.length) {
case 3:
inst.visitArg(0, func, Arg.Use, GP, 64);
inst.visitArg(1, func, Arg.Use, GP, 64);
inst.visitArg(2, func, Arg.Def, GP, 64);
break;
case 2:
inst.visitArg(0, func, Arg.Use, GP, 64);
inst.visitArg(1, func, Arg.UseDef, GP, 64);
break;
default:
throw new Error("Bad overload");
break;
}
break;
case Not32:
switch (inst.args.length) {
case 2:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.ZDef, GP, 32);
break;
case 1:
inst.visitArg(0, func, Arg.UseZDef, GP, 32);
break;
default:
throw new Error("Bad overload");
break;
}
break;
case Not64:
switch (inst.args.length) {
case 2:
inst.visitArg(0, func, Arg.Use, GP, 64);
inst.visitArg(1, func, Arg.Def, GP, 64);
break;
case 1:
inst.visitArg(0, func, Arg.UseDef, GP, 64);
break;
default:
throw new Error("Bad overload");
break;
}
break;
case AbsDouble:
inst.visitArg(0, func, Arg.Use, FP, 64);
inst.visitArg(1, func, Arg.Def, FP, 64);
break;
break;
case AbsFloat:
inst.visitArg(0, func, Arg.Use, FP, 32);
inst.visitArg(1, func, Arg.Def, FP, 32);
break;
break;
case CeilDouble:
inst.visitArg(0, func, Arg.Use, FP, 64);
inst.visitArg(1, func, Arg.Def, FP, 64);
break;
break;
case CeilFloat:
inst.visitArg(0, func, Arg.Use, FP, 32);
inst.visitArg(1, func, Arg.Def, FP, 32);
break;
break;
case FloorDouble:
inst.visitArg(0, func, Arg.Use, FP, 64);
inst.visitArg(1, func, Arg.Def, FP, 64);
break;
break;
case FloorFloat:
inst.visitArg(0, func, Arg.Use, FP, 32);
inst.visitArg(1, func, Arg.Def, FP, 32);
break;
break;
case SqrtDouble:
inst.visitArg(0, func, Arg.Use, FP, 64);
inst.visitArg(1, func, Arg.Def, FP, 64);
break;
break;
case SqrtFloat:
inst.visitArg(0, func, Arg.Use, FP, 32);
inst.visitArg(1, func, Arg.Def, FP, 32);
break;
break;
case ConvertInt32ToDouble:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Def, FP, 64);
break;
break;
case ConvertInt64ToDouble:
inst.visitArg(0, func, Arg.Use, GP, 64);
inst.visitArg(1, func, Arg.Def, FP, 64);
break;
break;
case ConvertInt32ToFloat:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Def, FP, 32);
break;
break;
case ConvertInt64ToFloat:
inst.visitArg(0, func, Arg.Use, GP, 64);
inst.visitArg(1, func, Arg.Def, FP, 32);
break;
break;
case CountLeadingZeros32:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.ZDef, GP, 32);
break;
break;
case CountLeadingZeros64:
inst.visitArg(0, func, Arg.Use, GP, 64);
inst.visitArg(1, func, Arg.Def, GP, 64);
break;
break;
case ConvertDoubleToFloat:
inst.visitArg(0, func, Arg.Use, FP, 64);
inst.visitArg(1, func, Arg.Def, FP, 32);
break;
break;
case ConvertFloatToDouble:
inst.visitArg(0, func, Arg.Use, FP, 32);
inst.visitArg(1, func, Arg.Def, FP, 64);
break;
break;
case Move:
inst.visitArg(0, func, Arg.Use, GP, Ptr);
inst.visitArg(1, func, Arg.Def, GP, Ptr);
break;
break;
case Swap32:
inst.visitArg(0, func, Arg.UseDef, GP, 32);
inst.visitArg(1, func, Arg.UseDef, GP, 32);
break;
break;
case Swap64:
inst.visitArg(0, func, Arg.UseDef, GP, 64);
inst.visitArg(1, func, Arg.UseDef, GP, 64);
break;
break;
case Move32:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.ZDef, GP, 32);
break;
break;
case StoreZero32:
inst.visitArg(0, func, Arg.Use, GP, 32);
break;
break;
case SignExtend32ToPtr:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Def, GP, Ptr);
break;
break;
case ZeroExtend8To32:
inst.visitArg(0, func, Arg.Use, GP, 8);
inst.visitArg(1, func, Arg.ZDef, GP, 32);
break;
break;
case SignExtend8To32:
inst.visitArg(0, func, Arg.Use, GP, 8);
inst.visitArg(1, func, Arg.ZDef, GP, 32);
break;
break;
case ZeroExtend16To32:
inst.visitArg(0, func, Arg.Use, GP, 16);
inst.visitArg(1, func, Arg.ZDef, GP, 32);
break;
break;
case SignExtend16To32:
inst.visitArg(0, func, Arg.Use, GP, 16);
inst.visitArg(1, func, Arg.ZDef, GP, 32);
break;
break;
case MoveFloat:
inst.visitArg(0, func, Arg.Use, FP, 32);
inst.visitArg(1, func, Arg.Def, FP, 32);
break;
break;
case MoveDouble:
inst.visitArg(0, func, Arg.Use, FP, 64);
inst.visitArg(1, func, Arg.Def, FP, 64);
break;
break;
case MoveZeroToDouble:
inst.visitArg(0, func, Arg.Def, FP, 64);
break;
break;
case Move64ToDouble:
inst.visitArg(0, func, Arg.Use, GP, 64);
inst.visitArg(1, func, Arg.Def, FP, 64);
break;
break;
case Move32ToFloat:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Def, FP, 32);
break;
break;
case MoveDoubleTo64:
inst.visitArg(0, func, Arg.Use, FP, 64);
inst.visitArg(1, func, Arg.Def, GP, 64);
break;
break;
case MoveFloatTo32:
inst.visitArg(0, func, Arg.Use, FP, 32);
inst.visitArg(1, func, Arg.Def, GP, 32);
break;
break;
case Load8:
inst.visitArg(0, func, Arg.Use, GP, 8);
inst.visitArg(1, func, Arg.ZDef, GP, 32);
break;
break;
case Store8:
inst.visitArg(0, func, Arg.Use, GP, 8);
inst.visitArg(1, func, Arg.Def, GP, 8);
break;
break;
case Load8SignedExtendTo32:
inst.visitArg(0, func, Arg.Use, GP, 8);
inst.visitArg(1, func, Arg.ZDef, GP, 32);
break;
break;
case Load16:
inst.visitArg(0, func, Arg.Use, GP, 16);
inst.visitArg(1, func, Arg.ZDef, GP, 32);
break;
break;
case Load16SignedExtendTo32:
inst.visitArg(0, func, Arg.Use, GP, 16);
inst.visitArg(1, func, Arg.ZDef, GP, 32);
break;
break;
case Store16:
inst.visitArg(0, func, Arg.Use, GP, 16);
inst.visitArg(1, func, Arg.Def, GP, 16);
break;
break;
case Compare32:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 32);
inst.visitArg(2, func, Arg.Use, GP, 32);
inst.visitArg(3, func, Arg.ZDef, GP, 32);
break;
break;
case Compare64:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 64);
inst.visitArg(2, func, Arg.Use, GP, 64);
inst.visitArg(3, func, Arg.ZDef, GP, 32);
break;
break;
case Test32:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 32);
inst.visitArg(2, func, Arg.Use, GP, 32);
inst.visitArg(3, func, Arg.ZDef, GP, 32);
break;
break;
case Test64:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 64);
inst.visitArg(2, func, Arg.Use, GP, 64);
inst.visitArg(3, func, Arg.ZDef, GP, 32);
break;
break;
case CompareDouble:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, FP, 64);
inst.visitArg(2, func, Arg.Use, FP, 64);
inst.visitArg(3, func, Arg.ZDef, GP, 32);
break;
break;
case CompareFloat:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, FP, 32);
inst.visitArg(2, func, Arg.Use, FP, 32);
inst.visitArg(3, func, Arg.ZDef, GP, 32);
break;
break;
case Branch8:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 8);
inst.visitArg(2, func, Arg.Use, GP, 8);
break;
break;
case Branch32:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 32);
inst.visitArg(2, func, Arg.Use, GP, 32);
break;
break;
case Branch64:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 64);
inst.visitArg(2, func, Arg.Use, GP, 64);
break;
break;
case BranchTest8:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 8);
inst.visitArg(2, func, Arg.Use, GP, 8);
break;
break;
case BranchTest32:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 32);
inst.visitArg(2, func, Arg.Use, GP, 32);
break;
break;
case BranchTest64:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 64);
inst.visitArg(2, func, Arg.Use, GP, 64);
break;
break;
case BranchDouble:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, FP, 64);
inst.visitArg(2, func, Arg.Use, FP, 64);
break;
break;
case BranchFloat:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, FP, 32);
inst.visitArg(2, func, Arg.Use, FP, 32);
break;
break;
case BranchAdd32:
switch (inst.args.length) {
case 4:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 32);
inst.visitArg(2, func, Arg.Use, GP, 32);
inst.visitArg(3, func, Arg.ZDef, GP, 32);
break;
case 3:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 32);
inst.visitArg(2, func, Arg.UseZDef, GP, 32);
break;
default:
throw new Error("Bad overload");
break;
}
break;
case BranchAdd64:
switch (inst.args.length) {
case 4:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 64);
inst.visitArg(2, func, Arg.Use, GP, 64);
inst.visitArg(3, func, Arg.ZDef, GP, 64);
break;
case 3:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 64);
inst.visitArg(2, func, Arg.UseDef, GP, 64);
break;
default:
throw new Error("Bad overload");
break;
}
break;
case BranchMul32:
switch (inst.args.length) {
case 3:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 32);
inst.visitArg(2, func, Arg.UseZDef, GP, 32);
break;
case 4:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 32);
inst.visitArg(2, func, Arg.Use, GP, 32);
inst.visitArg(3, func, Arg.ZDef, GP, 32);
break;
case 6:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 32);
inst.visitArg(2, func, Arg.Use, GP, 32);
inst.visitArg(3, func, Arg.Scratch, GP, 32);
inst.visitArg(4, func, Arg.Scratch, GP, 32);
inst.visitArg(5, func, Arg.ZDef, GP, 32);
break;
default:
throw new Error("Bad overload");
break;
}
break;
case BranchMul64:
switch (inst.args.length) {
case 3:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 64);
inst.visitArg(2, func, Arg.UseZDef, GP, 64);
break;
case 6:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 64);
inst.visitArg(2, func, Arg.Use, GP, 64);
inst.visitArg(3, func, Arg.Scratch, GP, 64);
inst.visitArg(4, func, Arg.Scratch, GP, 64);
inst.visitArg(5, func, Arg.ZDef, GP, 64);
break;
default:
throw new Error("Bad overload");
break;
}
break;
case BranchSub32:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 32);
inst.visitArg(2, func, Arg.UseZDef, GP, 32);
break;
break;
case BranchSub64:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 64);
inst.visitArg(2, func, Arg.UseDef, GP, 64);
break;
break;
case BranchNeg32:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.UseZDef, GP, 32);
break;
break;
case BranchNeg64:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.UseZDef, GP, 64);
break;
break;
case MoveConditionally32:
switch (inst.args.length) {
case 5:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 32);
inst.visitArg(2, func, Arg.Use, GP, 32);
inst.visitArg(3, func, Arg.Use, GP, Ptr);
inst.visitArg(4, func, Arg.UseDef, GP, Ptr);
break;
case 6:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 32);
inst.visitArg(2, func, Arg.Use, GP, 32);
inst.visitArg(3, func, Arg.Use, GP, Ptr);
inst.visitArg(4, func, Arg.Use, GP, Ptr);
inst.visitArg(5, func, Arg.Def, GP, Ptr);
break;
default:
throw new Error("Bad overload");
break;
}
break;
case MoveConditionally64:
switch (inst.args.length) {
case 5:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 64);
inst.visitArg(2, func, Arg.Use, GP, 64);
inst.visitArg(3, func, Arg.Use, GP, Ptr);
inst.visitArg(4, func, Arg.UseDef, GP, Ptr);
break;
case 6:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 64);
inst.visitArg(2, func, Arg.Use, GP, 64);
inst.visitArg(3, func, Arg.Use, GP, Ptr);
inst.visitArg(4, func, Arg.Use, GP, Ptr);
inst.visitArg(5, func, Arg.Def, GP, Ptr);
break;
default:
throw new Error("Bad overload");
break;
}
break;
case MoveConditionallyTest32:
switch (inst.args.length) {
case 5:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 32);
inst.visitArg(2, func, Arg.Use, GP, 32);
inst.visitArg(3, func, Arg.Use, GP, Ptr);
inst.visitArg(4, func, Arg.UseDef, GP, Ptr);
break;
case 6:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 32);
inst.visitArg(2, func, Arg.Use, GP, 32);
inst.visitArg(3, func, Arg.Use, GP, Ptr);
inst.visitArg(4, func, Arg.Use, GP, Ptr);
inst.visitArg(5, func, Arg.Def, GP, Ptr);
break;
default:
throw new Error("Bad overload");
break;
}
break;
case MoveConditionallyTest64:
switch (inst.args.length) {
case 5:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 64);
inst.visitArg(2, func, Arg.Use, GP, 64);
inst.visitArg(3, func, Arg.Use, GP, Ptr);
inst.visitArg(4, func, Arg.UseDef, GP, Ptr);
break;
case 6:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 32);
inst.visitArg(2, func, Arg.Use, GP, 32);
inst.visitArg(3, func, Arg.Use, GP, Ptr);
inst.visitArg(4, func, Arg.Use, GP, Ptr);
inst.visitArg(5, func, Arg.Def, GP, Ptr);
break;
default:
throw new Error("Bad overload");
break;
}
break;
case MoveConditionallyDouble:
switch (inst.args.length) {
case 6:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, FP, 64);
inst.visitArg(2, func, Arg.Use, FP, 64);
inst.visitArg(3, func, Arg.Use, GP, Ptr);
inst.visitArg(4, func, Arg.Use, GP, Ptr);
inst.visitArg(5, func, Arg.Def, GP, Ptr);
break;
case 5:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, FP, 64);
inst.visitArg(2, func, Arg.Use, FP, 64);
inst.visitArg(3, func, Arg.Use, GP, Ptr);
inst.visitArg(4, func, Arg.UseDef, GP, Ptr);
break;
default:
throw new Error("Bad overload");
break;
}
break;
case MoveConditionallyFloat:
switch (inst.args.length) {
case 6:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, FP, 32);
inst.visitArg(2, func, Arg.Use, FP, 32);
inst.visitArg(3, func, Arg.Use, GP, Ptr);
inst.visitArg(4, func, Arg.Use, GP, Ptr);
inst.visitArg(5, func, Arg.Def, GP, Ptr);
break;
case 5:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, FP, 32);
inst.visitArg(2, func, Arg.Use, FP, 32);
inst.visitArg(3, func, Arg.Use, GP, Ptr);
inst.visitArg(4, func, Arg.UseDef, GP, Ptr);
break;
default:
throw new Error("Bad overload");
break;
}
break;
case MoveDoubleConditionally32:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 32);
inst.visitArg(2, func, Arg.Use, GP, 32);
inst.visitArg(3, func, Arg.Use, FP, 64);
inst.visitArg(4, func, Arg.Use, FP, 64);
inst.visitArg(5, func, Arg.Def, FP, 64);
break;
break;
case MoveDoubleConditionally64:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 64);
inst.visitArg(2, func, Arg.Use, GP, 64);
inst.visitArg(3, func, Arg.Use, FP, 64);
inst.visitArg(4, func, Arg.Use, FP, 64);
inst.visitArg(5, func, Arg.Def, FP, 64);
break;
break;
case MoveDoubleConditionallyTest32:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 32);
inst.visitArg(2, func, Arg.Use, GP, 32);
inst.visitArg(3, func, Arg.Use, FP, 64);
inst.visitArg(4, func, Arg.Use, FP, 64);
inst.visitArg(5, func, Arg.Def, FP, 64);
break;
break;
case MoveDoubleConditionallyTest64:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, GP, 64);
inst.visitArg(2, func, Arg.Use, GP, 64);
inst.visitArg(3, func, Arg.Use, FP, 64);
inst.visitArg(4, func, Arg.Use, FP, 64);
inst.visitArg(5, func, Arg.Def, FP, 64);
break;
break;
case MoveDoubleConditionallyDouble:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, FP, 64);
inst.visitArg(2, func, Arg.Use, FP, 64);
inst.visitArg(3, func, Arg.Use, FP, 64);
inst.visitArg(4, func, Arg.Use, FP, 64);
inst.visitArg(5, func, Arg.Def, FP, 64);
break;
break;
case MoveDoubleConditionallyFloat:
inst.visitArg(0, func, Arg.Use, GP, 32);
inst.visitArg(1, func, Arg.Use, FP, 32);
inst.visitArg(2, func, Arg.Use, FP, 32);
inst.visitArg(3, func, Arg.Use, FP, 64);
inst.visitArg(4, func, Arg.Use, FP, 64);
inst.visitArg(5, func, Arg.Def, FP, 64);
break;
break;
case Jump:
break;
break;
case Ret32:
inst.visitArg(0, func, Arg.Use, GP, 32);
break;
break;
case Ret64:
inst.visitArg(0, func, Arg.Use, GP, 64);
break;
break;
case RetFloat:
inst.visitArg(0, func, Arg.Use, FP, 32);
break;
break;
case RetDouble:
inst.visitArg(0, func, Arg.Use, FP, 64);
break;
break;
case Oops:
break;
break;
case Shuffle:
ShuffleCustom.forEachArg(inst, func);
break;
case Patch:
PatchCustom.forEachArg(inst, func);
break;
case CCall:
CCallCustom.forEachArg(inst, func);
break;
case ColdCCall:
ColdCCallCustom.forEachArg(inst, func);
break;
default:
throw "Bad opcode";
}
}
function Inst_hasNonArgEffects(inst)
{
switch (inst.opcode) {
case Branch8:
case Branch32:
case Branch64:
case BranchTest8:
case BranchTest32:
case BranchTest64:
case BranchDouble:
case BranchFloat:
case BranchAdd32:
case BranchAdd64:
case BranchMul32:
case BranchMul64:
case BranchSub32:
case BranchSub64:
case BranchNeg32:
case BranchNeg64:
case Jump:
case Ret32:
case Ret64:
case RetFloat:
case RetDouble:
case Oops:
return true;
case Shuffle:
return ShuffleCustom.hasNonArgNonControlEffects(inst);
case Patch:
return PatchCustom.hasNonArgNonControlEffects(inst);
case CCall:
return CCallCustom.hasNonArgNonControlEffects(inst);
case ColdCCall:
return ColdCCallCustom.hasNonArgNonControlEffects(inst);
default:
return false;
}
}
function opcodeCode(opcode)
{
switch (opcode) {
case AbsDouble:
return 0
case AbsFloat:
return 1
case Add16:
return 2
case Add32:
return 3
case Add64:
return 4
case Add8:
return 5
case AddDouble:
return 6
case AddFloat:
return 7
case And32:
return 8
case And64:
return 9
case AndDouble:
return 10
case AndFloat:
return 11
case Branch32:
return 12
case Branch64:
return 13
case Branch8:
return 14
case BranchAdd32:
return 15
case BranchAdd64:
return 16
case BranchDouble:
return 17
case BranchFloat:
return 18
case BranchMul32:
return 19
case BranchMul64:
return 20
case BranchNeg32:
return 21
case BranchNeg64:
return 22
case BranchSub32:
return 23
case BranchSub64:
return 24
case BranchTest32:
return 25
case BranchTest64:
return 26
case BranchTest8:
return 27
case CCall:
return 28
case CeilDouble:
return 29
case CeilFloat:
return 30
case ColdCCall:
return 31
case Compare32:
return 32
case Compare64:
return 33
case CompareDouble:
return 34
case CompareFloat:
return 35
case ConvertDoubleToFloat:
return 36
case ConvertFloatToDouble:
return 37
case ConvertInt32ToDouble:
return 38
case ConvertInt32ToFloat:
return 39
case ConvertInt64ToDouble:
return 40
case ConvertInt64ToFloat:
return 41
case CountLeadingZeros32:
return 42
case CountLeadingZeros64:
return 43
case Div32:
return 44
case Div64:
return 45
case DivDouble:
return 46
case DivFloat:
return 47
case FloorDouble:
return 48
case FloorFloat:
return 49
case Jump:
return 50
case Lea:
return 51
case Load16:
return 52
case Load16SignedExtendTo32:
return 53
case Load8:
return 54
case Load8SignedExtendTo32:
return 55
case Lshift32:
return 56
case Lshift64:
return 57
case Move:
return 58
case Move32:
return 59
case Move32ToFloat:
return 60
case Move64ToDouble:
return 61
case MoveConditionally32:
return 62
case MoveConditionally64:
return 63
case MoveConditionallyDouble:
return 64
case MoveConditionallyFloat:
return 65
case MoveConditionallyTest32:
return 66
case MoveConditionallyTest64:
return 67
case MoveDouble:
return 68
case MoveDoubleConditionally32:
return 69
case MoveDoubleConditionally64:
return 70
case MoveDoubleConditionallyDouble:
return 71
case MoveDoubleConditionallyFloat:
return 72
case MoveDoubleConditionallyTest32:
return 73
case MoveDoubleConditionallyTest64:
return 74
case MoveDoubleTo64:
return 75
case MoveFloat:
return 76
case MoveFloatTo32:
return 77
case MoveZeroToDouble:
return 78
case Mul32:
return 79
case Mul64:
return 80
case MulDouble:
return 81
case MulFloat:
return 82
case MultiplyAdd32:
return 83
case MultiplyAdd64:
return 84
case MultiplyNeg32:
return 85
case MultiplyNeg64:
return 86
case MultiplySub32:
return 87
case MultiplySub64:
return 88
case Neg32:
return 89
case Neg64:
return 90
case NegateDouble:
return 91
case Nop:
return 92
case Not32:
return 93
case Not64:
return 94
case Oops:
return 95
case Or32:
return 96
case Or64:
return 97
case Patch:
return 98
case Ret32:
return 99
case Ret64:
return 100
case RetDouble:
return 101
case RetFloat:
return 102
case Rshift32:
return 103
case Rshift64:
return 104
case Shuffle:
return 105
case SignExtend16To32:
return 106
case SignExtend32ToPtr:
return 107
case SignExtend8To32:
return 108
case SqrtDouble:
return 109
case SqrtFloat:
return 110
case Store16:
return 111
case Store8:
return 112
case StoreZero32:
return 113
case Sub32:
return 114
case Sub64:
return 115
case SubDouble:
return 116
case SubFloat:
return 117
case Swap32:
return 118
case Swap64:
return 119
case Test32:
return 120
case Test64:
return 121
case Urshift32:
return 122
case Urshift64:
return 123
case X86ConvertToDoubleWord32:
return 124
case X86ConvertToQuadWord64:
return 125
case X86Div32:
return 126
case X86Div64:
return 127
case Xor32:
return 128
case Xor64:
return 129
case XorDouble:
return 130
case XorFloat:
return 131
case ZeroExtend16To32:
return 132
case ZeroExtend8To32:
return 133
default:
throw new Error("bad opcode");
}
}