// Generated by opcode_generator.rb from Source/JavaScriptCore/b3/air/AirOpcode.opcodes -- do not edit!
#ifndef AirOpcodeUtils_h
#define AirOpcodeUtils_h
#include "AirCustom.h"
#include "AirInst.h"
namespace JSC { namespace B3 { namespace Air {
inline bool opgenHiddenTruth() { return true; }
template<typename T>
inline T* opgenHiddenPtrIdentity(T* pointer) { return pointer; }
#define OPGEN_RETURN(value) do {\
    if (opgenHiddenTruth())\
        return value;\
} while (false)
template<typename Functor>
void Inst::forEachArg(const Functor& functor)
{
switch (this->opcode) {
case Nop:
break;
case Add32:
switch (this->args.size()) {
case 3:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width32);
functor(args[2], Arg::ZDef, Arg::GP, Arg::Width32);
break;
case 2:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::UseZDef, Arg::GP, Arg::Width32);
break;
default:
break;
}
break;
case Add8:
functor(args[0], Arg::Use, Arg::GP, Arg::Width8);
functor(args[1], Arg::UseDef, Arg::GP, Arg::Width8);
break;
case Add16:
functor(args[0], Arg::Use, Arg::GP, Arg::Width16);
functor(args[1], Arg::UseDef, Arg::GP, Arg::Width16);
break;
case Add64:
switch (this->args.size()) {
case 2:
functor(args[0], Arg::Use, Arg::GP, Arg::Width64);
functor(args[1], Arg::UseDef, Arg::GP, Arg::Width64);
break;
case 3:
functor(args[0], Arg::Use, Arg::GP, Arg::Width64);
functor(args[1], Arg::Use, Arg::GP, Arg::Width64);
functor(args[2], Arg::Def, Arg::GP, Arg::Width64);
break;
default:
break;
}
break;
case AddDouble:
switch (this->args.size()) {
case 3:
functor(args[0], Arg::Use, Arg::FP, Arg::Width64);
functor(args[1], Arg::Use, Arg::FP, Arg::Width64);
functor(args[2], Arg::Def, Arg::FP, Arg::Width64);
break;
case 2:
functor(args[0], Arg::Use, Arg::FP, Arg::Width64);
functor(args[1], Arg::UseDef, Arg::FP, Arg::Width64);
break;
default:
break;
}
break;
case AddFloat:
switch (this->args.size()) {
case 3:
functor(args[0], Arg::Use, Arg::FP, Arg::Width32);
functor(args[1], Arg::Use, Arg::FP, Arg::Width32);
functor(args[2], Arg::Def, Arg::FP, Arg::Width32);
break;
case 2:
functor(args[0], Arg::Use, Arg::FP, Arg::Width32);
functor(args[1], Arg::UseDef, Arg::FP, Arg::Width32);
break;
default:
break;
}
break;
case Sub32:
switch (this->args.size()) {
case 2:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::UseZDef, Arg::GP, Arg::Width32);
break;
case 3:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width32);
functor(args[2], Arg::Def, Arg::GP, Arg::Width32);
break;
default:
break;
}
break;
case Sub64:
switch (this->args.size()) {
case 2:
functor(args[0], Arg::Use, Arg::GP, Arg::Width64);
functor(args[1], Arg::UseDef, Arg::GP, Arg::Width64);
break;
case 3:
functor(args[0], Arg::Use, Arg::GP, Arg::Width64);
functor(args[1], Arg::Use, Arg::GP, Arg::Width64);
functor(args[2], Arg::Def, Arg::GP, Arg::Width64);
break;
default:
break;
}
break;
case SubDouble:
switch (this->args.size()) {
case 3:
functor(args[0], Arg::Use, Arg::FP, Arg::Width64);
functor(args[1], Arg::Use, Arg::FP, Arg::Width64);
functor(args[2], Arg::Def, Arg::FP, Arg::Width64);
break;
case 2:
functor(args[0], Arg::Use, Arg::FP, Arg::Width64);
functor(args[1], Arg::UseDef, Arg::FP, Arg::Width64);
break;
default:
break;
}
break;
case SubFloat:
switch (this->args.size()) {
case 3:
functor(args[0], Arg::Use, Arg::FP, Arg::Width32);
functor(args[1], Arg::Use, Arg::FP, Arg::Width32);
functor(args[2], Arg::Def, Arg::FP, Arg::Width32);
break;
case 2:
functor(args[0], Arg::Use, Arg::FP, Arg::Width32);
functor(args[1], Arg::UseDef, Arg::FP, Arg::Width32);
break;
default:
break;
}
break;
case Neg32:
functor(args[0], Arg::UseZDef, Arg::GP, Arg::Width32);
break;
case Neg64:
functor(args[0], Arg::UseDef, Arg::GP, Arg::Width64);
break;
case NegateDouble:
functor(args[0], Arg::Use, Arg::FP, Arg::Width64);
functor(args[1], Arg::Def, Arg::FP, Arg::Width64);
break;
case NegateFloat:
functor(args[0], Arg::Use, Arg::FP, Arg::Width32);
functor(args[1], Arg::Def, Arg::FP, Arg::Width32);
break;
case Mul32:
switch (this->args.size()) {
case 2:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::UseZDef, Arg::GP, Arg::Width32);
break;
case 3:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width32);
functor(args[2], Arg::ZDef, Arg::GP, Arg::Width32);
break;
default:
break;
}
break;
case Mul64:
switch (this->args.size()) {
case 2:
functor(args[0], Arg::Use, Arg::GP, Arg::Width64);
functor(args[1], Arg::UseDef, Arg::GP, Arg::Width64);
break;
case 3:
functor(args[0], Arg::Use, Arg::GP, Arg::Width64);
functor(args[1], Arg::Use, Arg::GP, Arg::Width64);
functor(args[2], Arg::Def, Arg::GP, Arg::Width64);
break;
default:
break;
}
break;
case MultiplyAdd32:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width32);
functor(args[2], Arg::Use, Arg::GP, Arg::Width32);
functor(args[3], Arg::ZDef, Arg::GP, Arg::Width32);
break;
case MultiplyAdd64:
functor(args[0], Arg::Use, Arg::GP, Arg::Width64);
functor(args[1], Arg::Use, Arg::GP, Arg::Width64);
functor(args[2], Arg::Use, Arg::GP, Arg::Width64);
functor(args[3], Arg::Def, Arg::GP, Arg::Width64);
break;
case MultiplySub32:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width32);
functor(args[2], Arg::Use, Arg::GP, Arg::Width32);
functor(args[3], Arg::ZDef, Arg::GP, Arg::Width32);
break;
case MultiplySub64:
functor(args[0], Arg::Use, Arg::GP, Arg::Width64);
functor(args[1], Arg::Use, Arg::GP, Arg::Width64);
functor(args[2], Arg::Use, Arg::GP, Arg::Width64);
functor(args[3], Arg::Def, Arg::GP, Arg::Width64);
break;
case MultiplyNeg32:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width32);
functor(args[2], Arg::ZDef, Arg::GP, Arg::Width32);
break;
case MultiplyNeg64:
functor(args[0], Arg::Use, Arg::GP, Arg::Width64);
functor(args[1], Arg::Use, Arg::GP, Arg::Width64);
functor(args[2], Arg::ZDef, Arg::GP, Arg::Width64);
break;
case Div32:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width32);
functor(args[2], Arg::ZDef, Arg::GP, Arg::Width32);
break;
case Div64:
functor(args[0], Arg::Use, Arg::GP, Arg::Width64);
functor(args[1], Arg::Use, Arg::GP, Arg::Width64);
functor(args[2], Arg::Def, Arg::GP, Arg::Width64);
break;
case MulDouble:
switch (this->args.size()) {
case 3:
functor(args[0], Arg::Use, Arg::FP, Arg::Width64);
functor(args[1], Arg::Use, Arg::FP, Arg::Width64);
functor(args[2], Arg::Def, Arg::FP, Arg::Width64);
break;
case 2:
functor(args[0], Arg::Use, Arg::FP, Arg::Width64);
functor(args[1], Arg::UseDef, Arg::FP, Arg::Width64);
break;
default:
break;
}
break;
case MulFloat:
switch (this->args.size()) {
case 3:
functor(args[0], Arg::Use, Arg::FP, Arg::Width32);
functor(args[1], Arg::Use, Arg::FP, Arg::Width32);
functor(args[2], Arg::Def, Arg::FP, Arg::Width32);
break;
case 2:
functor(args[0], Arg::Use, Arg::FP, Arg::Width32);
functor(args[1], Arg::UseDef, Arg::FP, Arg::Width32);
break;
default:
break;
}
break;
case DivDouble:
switch (this->args.size()) {
case 3:
functor(args[0], Arg::Use, Arg::FP, Arg::Width64);
functor(args[1], Arg::Use, Arg::FP, Arg::Width32);
functor(args[2], Arg::Def, Arg::FP, Arg::Width64);
break;
case 2:
functor(args[0], Arg::Use, Arg::FP, Arg::Width64);
functor(args[1], Arg::UseDef, Arg::FP, Arg::Width64);
break;
default:
break;
}
break;
case DivFloat:
switch (this->args.size()) {
case 3:
functor(args[0], Arg::Use, Arg::FP, Arg::Width32);
functor(args[1], Arg::Use, Arg::FP, Arg::Width32);
functor(args[2], Arg::Def, Arg::FP, Arg::Width32);
break;
case 2:
functor(args[0], Arg::Use, Arg::FP, Arg::Width32);
functor(args[1], Arg::UseDef, Arg::FP, Arg::Width32);
break;
default:
break;
}
break;
case X86ConvertToDoubleWord32:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::ZDef, Arg::GP, Arg::Width32);
break;
case X86ConvertToQuadWord64:
functor(args[0], Arg::Use, Arg::GP, Arg::Width64);
functor(args[1], Arg::Def, Arg::GP, Arg::Width64);
break;
case X86Div32:
functor(args[0], Arg::UseZDef, Arg::GP, Arg::Width32);
functor(args[1], Arg::UseZDef, Arg::GP, Arg::Width32);
functor(args[2], Arg::Use, Arg::GP, Arg::Width32);
break;
case X86Div64:
functor(args[0], Arg::UseZDef, Arg::GP, Arg::Width64);
functor(args[1], Arg::UseZDef, Arg::GP, Arg::Width64);
functor(args[2], Arg::Use, Arg::GP, Arg::Width64);
break;
case Lea:
functor(args[0], Arg::UseAddr, Arg::GP, Arg::pointerWidth());
functor(args[1], Arg::Def, Arg::GP, Arg::pointerWidth());
break;
case And32:
switch (this->args.size()) {
case 3:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width32);
functor(args[2], Arg::ZDef, Arg::GP, Arg::Width32);
break;
case 2:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::UseZDef, Arg::GP, Arg::Width32);
break;
default:
break;
}
break;
case And64:
switch (this->args.size()) {
case 3:
functor(args[0], Arg::Use, Arg::GP, Arg::Width64);
functor(args[1], Arg::Use, Arg::GP, Arg::Width64);
functor(args[2], Arg::Def, Arg::GP, Arg::Width64);
break;
case 2:
functor(args[0], Arg::Use, Arg::GP, Arg::Width64);
functor(args[1], Arg::UseDef, Arg::GP, Arg::Width64);
break;
default:
break;
}
break;
case AndDouble:
switch (this->args.size()) {
case 3:
functor(args[0], Arg::Use, Arg::FP, Arg::Width64);
functor(args[1], Arg::Use, Arg::FP, Arg::Width64);
functor(args[2], Arg::Def, Arg::FP, Arg::Width64);
break;
case 2:
functor(args[0], Arg::Use, Arg::FP, Arg::Width64);
functor(args[1], Arg::UseDef, Arg::FP, Arg::Width64);
break;
default:
break;
}
break;
case AndFloat:
switch (this->args.size()) {
case 3:
functor(args[0], Arg::Use, Arg::FP, Arg::Width32);
functor(args[1], Arg::Use, Arg::FP, Arg::Width32);
functor(args[2], Arg::Def, Arg::FP, Arg::Width32);
break;
case 2:
functor(args[0], Arg::Use, Arg::FP, Arg::Width32);
functor(args[1], Arg::UseDef, Arg::FP, Arg::Width32);
break;
default:
break;
}
break;
case XorDouble:
switch (this->args.size()) {
case 3:
functor(args[0], Arg::Use, Arg::FP, Arg::Width64);
functor(args[1], Arg::Use, Arg::FP, Arg::Width64);
functor(args[2], Arg::Def, Arg::FP, Arg::Width64);
break;
case 2:
functor(args[0], Arg::Use, Arg::FP, Arg::Width64);
functor(args[1], Arg::UseDef, Arg::FP, Arg::Width64);
break;
default:
break;
}
break;
case XorFloat:
switch (this->args.size()) {
case 3:
functor(args[0], Arg::Use, Arg::FP, Arg::Width32);
functor(args[1], Arg::Use, Arg::FP, Arg::Width32);
functor(args[2], Arg::Def, Arg::FP, Arg::Width32);
break;
case 2:
functor(args[0], Arg::Use, Arg::FP, Arg::Width32);
functor(args[1], Arg::UseDef, Arg::FP, Arg::Width32);
break;
default:
break;
}
break;
case Lshift32:
switch (this->args.size()) {
case 3:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width32);
functor(args[2], Arg::ZDef, Arg::GP, Arg::Width32);
break;
case 2:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::UseZDef, Arg::GP, Arg::Width32);
break;
default:
break;
}
break;
case Lshift64:
switch (this->args.size()) {
case 3:
functor(args[0], Arg::Use, Arg::GP, Arg::Width64);
functor(args[1], Arg::Use, Arg::GP, Arg::Width64);
functor(args[2], Arg::ZDef, Arg::GP, Arg::Width64);
break;
case 2:
functor(args[0], Arg::Use, Arg::GP, Arg::Width64);
functor(args[1], Arg::UseDef, Arg::GP, Arg::Width64);
break;
default:
break;
}
break;
case Rshift32:
switch (this->args.size()) {
case 3:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width32);
functor(args[2], Arg::ZDef, Arg::GP, Arg::Width32);
break;
case 2:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::UseZDef, Arg::GP, Arg::Width32);
break;
default:
break;
}
break;
case Rshift64:
switch (this->args.size()) {
case 3:
functor(args[0], Arg::Use, Arg::GP, Arg::Width64);
functor(args[1], Arg::Use, Arg::GP, Arg::Width64);
functor(args[2], Arg::ZDef, Arg::GP, Arg::Width64);
break;
case 2:
functor(args[0], Arg::Use, Arg::GP, Arg::Width64);
functor(args[1], Arg::UseDef, Arg::GP, Arg::Width64);
break;
default:
break;
}
break;
case Urshift32:
switch (this->args.size()) {
case 3:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width32);
functor(args[2], Arg::ZDef, Arg::GP, Arg::Width32);
break;
case 2:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::UseZDef, Arg::GP, Arg::Width32);
break;
default:
break;
}
break;
case Urshift64:
switch (this->args.size()) {
case 3:
functor(args[0], Arg::Use, Arg::GP, Arg::Width64);
functor(args[1], Arg::Use, Arg::GP, Arg::Width64);
functor(args[2], Arg::ZDef, Arg::GP, Arg::Width64);
break;
case 2:
functor(args[0], Arg::Use, Arg::GP, Arg::Width64);
functor(args[1], Arg::UseDef, Arg::GP, Arg::Width64);
break;
default:
break;
}
break;
case Or32:
switch (this->args.size()) {
case 3:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width32);
functor(args[2], Arg::ZDef, Arg::GP, Arg::Width32);
break;
case 2:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::UseZDef, Arg::GP, Arg::Width32);
break;
default:
break;
}
break;
case Or64:
switch (this->args.size()) {
case 3:
functor(args[0], Arg::Use, Arg::GP, Arg::Width64);
functor(args[1], Arg::Use, Arg::GP, Arg::Width64);
functor(args[2], Arg::Def, Arg::GP, Arg::Width64);
break;
case 2:
functor(args[0], Arg::Use, Arg::GP, Arg::Width64);
functor(args[1], Arg::UseDef, Arg::GP, Arg::Width64);
break;
default:
break;
}
break;
case Xor32:
switch (this->args.size()) {
case 3:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width32);
functor(args[2], Arg::ZDef, Arg::GP, Arg::Width32);
break;
case 2:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::UseZDef, Arg::GP, Arg::Width32);
break;
default:
break;
}
break;
case Xor64:
switch (this->args.size()) {
case 3:
functor(args[0], Arg::Use, Arg::GP, Arg::Width64);
functor(args[1], Arg::Use, Arg::GP, Arg::Width64);
functor(args[2], Arg::Def, Arg::GP, Arg::Width64);
break;
case 2:
functor(args[0], Arg::Use, Arg::GP, Arg::Width64);
functor(args[1], Arg::UseDef, Arg::GP, Arg::Width64);
break;
default:
break;
}
break;
case Not32:
switch (this->args.size()) {
case 2:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::ZDef, Arg::GP, Arg::Width32);
break;
case 1:
functor(args[0], Arg::UseZDef, Arg::GP, Arg::Width32);
break;
default:
break;
}
break;
case Not64:
switch (this->args.size()) {
case 2:
functor(args[0], Arg::Use, Arg::GP, Arg::Width64);
functor(args[1], Arg::Def, Arg::GP, Arg::Width64);
break;
case 1:
functor(args[0], Arg::UseDef, Arg::GP, Arg::Width64);
break;
default:
break;
}
break;
case AbsDouble:
functor(args[0], Arg::Use, Arg::FP, Arg::Width64);
functor(args[1], Arg::Def, Arg::FP, Arg::Width64);
break;
case AbsFloat:
functor(args[0], Arg::Use, Arg::FP, Arg::Width32);
functor(args[1], Arg::Def, Arg::FP, Arg::Width32);
break;
case CeilDouble:
functor(args[0], Arg::Use, Arg::FP, Arg::Width64);
functor(args[1], Arg::Def, Arg::FP, Arg::Width64);
break;
case CeilFloat:
functor(args[0], Arg::Use, Arg::FP, Arg::Width32);
functor(args[1], Arg::Def, Arg::FP, Arg::Width32);
break;
case FloorDouble:
functor(args[0], Arg::Use, Arg::FP, Arg::Width64);
functor(args[1], Arg::Def, Arg::FP, Arg::Width64);
break;
case FloorFloat:
functor(args[0], Arg::Use, Arg::FP, Arg::Width32);
functor(args[1], Arg::Def, Arg::FP, Arg::Width32);
break;
case SqrtDouble:
functor(args[0], Arg::Use, Arg::FP, Arg::Width64);
functor(args[1], Arg::Def, Arg::FP, Arg::Width64);
break;
case SqrtFloat:
functor(args[0], Arg::Use, Arg::FP, Arg::Width32);
functor(args[1], Arg::Def, Arg::FP, Arg::Width32);
break;
case ConvertInt32ToDouble:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Def, Arg::FP, Arg::Width64);
break;
case ConvertInt64ToDouble:
functor(args[0], Arg::Use, Arg::GP, Arg::Width64);
functor(args[1], Arg::Def, Arg::FP, Arg::Width64);
break;
case ConvertInt32ToFloat:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Def, Arg::FP, Arg::Width32);
break;
case ConvertInt64ToFloat:
functor(args[0], Arg::Use, Arg::GP, Arg::Width64);
functor(args[1], Arg::Def, Arg::FP, Arg::Width32);
break;
case CountLeadingZeros32:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::ZDef, Arg::GP, Arg::Width32);
break;
case CountLeadingZeros64:
functor(args[0], Arg::Use, Arg::GP, Arg::Width64);
functor(args[1], Arg::Def, Arg::GP, Arg::Width64);
break;
case ConvertDoubleToFloat:
functor(args[0], Arg::Use, Arg::FP, Arg::Width64);
functor(args[1], Arg::Def, Arg::FP, Arg::Width32);
break;
case ConvertFloatToDouble:
functor(args[0], Arg::Use, Arg::FP, Arg::Width32);
functor(args[1], Arg::Def, Arg::FP, Arg::Width64);
break;
case Move:
functor(args[0], Arg::Use, Arg::GP, Arg::pointerWidth());
functor(args[1], Arg::Def, Arg::GP, Arg::pointerWidth());
break;
case Swap32:
functor(args[0], Arg::UseDef, Arg::GP, Arg::Width32);
functor(args[1], Arg::UseDef, Arg::GP, Arg::Width32);
break;
case Swap64:
functor(args[0], Arg::UseDef, Arg::GP, Arg::Width64);
functor(args[1], Arg::UseDef, Arg::GP, Arg::Width64);
break;
case Move32:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::ZDef, Arg::GP, Arg::Width32);
break;
case StoreZero32:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
break;
case SignExtend32ToPtr:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Def, Arg::GP, Arg::pointerWidth());
break;
case ZeroExtend8To32:
functor(args[0], Arg::Use, Arg::GP, Arg::Width8);
functor(args[1], Arg::ZDef, Arg::GP, Arg::Width32);
break;
case SignExtend8To32:
functor(args[0], Arg::Use, Arg::GP, Arg::Width8);
functor(args[1], Arg::ZDef, Arg::GP, Arg::Width32);
break;
case ZeroExtend16To32:
functor(args[0], Arg::Use, Arg::GP, Arg::Width16);
functor(args[1], Arg::ZDef, Arg::GP, Arg::Width32);
break;
case SignExtend16To32:
functor(args[0], Arg::Use, Arg::GP, Arg::Width16);
functor(args[1], Arg::ZDef, Arg::GP, Arg::Width32);
break;
case MoveFloat:
functor(args[0], Arg::Use, Arg::FP, Arg::Width32);
functor(args[1], Arg::Def, Arg::FP, Arg::Width32);
break;
case MoveDouble:
functor(args[0], Arg::Use, Arg::FP, Arg::Width64);
functor(args[1], Arg::Def, Arg::FP, Arg::Width64);
break;
case MoveZeroToDouble:
functor(args[0], Arg::Def, Arg::FP, Arg::Width64);
break;
case Move64ToDouble:
functor(args[0], Arg::Use, Arg::GP, Arg::Width64);
functor(args[1], Arg::Def, Arg::FP, Arg::Width64);
break;
case Move32ToFloat:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Def, Arg::FP, Arg::Width32);
break;
case MoveDoubleTo64:
functor(args[0], Arg::Use, Arg::FP, Arg::Width64);
functor(args[1], Arg::Def, Arg::GP, Arg::Width64);
break;
case MoveFloatTo32:
functor(args[0], Arg::Use, Arg::FP, Arg::Width32);
functor(args[1], Arg::Def, Arg::GP, Arg::Width32);
break;
case Load8:
functor(args[0], Arg::Use, Arg::GP, Arg::Width8);
functor(args[1], Arg::ZDef, Arg::GP, Arg::Width32);
break;
case Store8:
functor(args[0], Arg::Use, Arg::GP, Arg::Width8);
functor(args[1], Arg::Def, Arg::GP, Arg::Width8);
break;
case Load8SignedExtendTo32:
functor(args[0], Arg::Use, Arg::GP, Arg::Width8);
functor(args[1], Arg::ZDef, Arg::GP, Arg::Width32);
break;
case Load16:
functor(args[0], Arg::Use, Arg::GP, Arg::Width16);
functor(args[1], Arg::ZDef, Arg::GP, Arg::Width32);
break;
case Load16SignedExtendTo32:
functor(args[0], Arg::Use, Arg::GP, Arg::Width16);
functor(args[1], Arg::ZDef, Arg::GP, Arg::Width32);
break;
case Store16:
functor(args[0], Arg::Use, Arg::GP, Arg::Width16);
functor(args[1], Arg::Def, Arg::GP, Arg::Width16);
break;
case Compare32:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width32);
functor(args[2], Arg::Use, Arg::GP, Arg::Width32);
functor(args[3], Arg::ZDef, Arg::GP, Arg::Width32);
break;
case Compare64:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width64);
functor(args[2], Arg::Use, Arg::GP, Arg::Width64);
functor(args[3], Arg::ZDef, Arg::GP, Arg::Width32);
break;
case Test32:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width32);
functor(args[2], Arg::Use, Arg::GP, Arg::Width32);
functor(args[3], Arg::ZDef, Arg::GP, Arg::Width32);
break;
case Test64:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width64);
functor(args[2], Arg::Use, Arg::GP, Arg::Width64);
functor(args[3], Arg::ZDef, Arg::GP, Arg::Width32);
break;
case CompareDouble:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::FP, Arg::Width64);
functor(args[2], Arg::Use, Arg::FP, Arg::Width64);
functor(args[3], Arg::ZDef, Arg::GP, Arg::Width32);
break;
case CompareFloat:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::FP, Arg::Width32);
functor(args[2], Arg::Use, Arg::FP, Arg::Width32);
functor(args[3], Arg::ZDef, Arg::GP, Arg::Width32);
break;
case Branch8:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width8);
functor(args[2], Arg::Use, Arg::GP, Arg::Width8);
break;
case Branch32:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width32);
functor(args[2], Arg::Use, Arg::GP, Arg::Width32);
break;
case Branch64:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width64);
functor(args[2], Arg::Use, Arg::GP, Arg::Width64);
break;
case BranchTest8:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width8);
functor(args[2], Arg::Use, Arg::GP, Arg::Width8);
break;
case BranchTest32:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width32);
functor(args[2], Arg::Use, Arg::GP, Arg::Width32);
break;
case BranchTest64:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width64);
functor(args[2], Arg::Use, Arg::GP, Arg::Width64);
break;
case BranchDouble:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::FP, Arg::Width64);
functor(args[2], Arg::Use, Arg::FP, Arg::Width64);
break;
case BranchFloat:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::FP, Arg::Width32);
functor(args[2], Arg::Use, Arg::FP, Arg::Width32);
break;
case BranchAdd32:
switch (this->args.size()) {
case 4:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width32);
functor(args[2], Arg::Use, Arg::GP, Arg::Width32);
functor(args[3], Arg::ZDef, Arg::GP, Arg::Width32);
break;
case 3:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width32);
functor(args[2], Arg::UseZDef, Arg::GP, Arg::Width32);
break;
default:
break;
}
break;
case BranchAdd64:
switch (this->args.size()) {
case 4:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width64);
functor(args[2], Arg::Use, Arg::GP, Arg::Width64);
functor(args[3], Arg::ZDef, Arg::GP, Arg::Width64);
break;
case 3:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width64);
functor(args[2], Arg::UseDef, Arg::GP, Arg::Width64);
break;
default:
break;
}
break;
case BranchMul32:
switch (this->args.size()) {
case 3:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width32);
functor(args[2], Arg::UseZDef, Arg::GP, Arg::Width32);
break;
case 4:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width32);
functor(args[2], Arg::Use, Arg::GP, Arg::Width32);
functor(args[3], Arg::ZDef, Arg::GP, Arg::Width32);
break;
case 6:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width32);
functor(args[2], Arg::Use, Arg::GP, Arg::Width32);
functor(args[3], Arg::Scratch, Arg::GP, Arg::Width32);
functor(args[4], Arg::Scratch, Arg::GP, Arg::Width32);
functor(args[5], Arg::ZDef, Arg::GP, Arg::Width32);
break;
default:
break;
}
break;
case BranchMul64:
switch (this->args.size()) {
case 3:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width64);
functor(args[2], Arg::UseZDef, Arg::GP, Arg::Width64);
break;
case 6:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width64);
functor(args[2], Arg::Use, Arg::GP, Arg::Width64);
functor(args[3], Arg::Scratch, Arg::GP, Arg::Width64);
functor(args[4], Arg::Scratch, Arg::GP, Arg::Width64);
functor(args[5], Arg::ZDef, Arg::GP, Arg::Width64);
break;
default:
break;
}
break;
case BranchSub32:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width32);
functor(args[2], Arg::UseZDef, Arg::GP, Arg::Width32);
break;
case BranchSub64:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width64);
functor(args[2], Arg::UseDef, Arg::GP, Arg::Width64);
break;
case BranchNeg32:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::UseZDef, Arg::GP, Arg::Width32);
break;
case BranchNeg64:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::UseZDef, Arg::GP, Arg::Width64);
break;
case MoveConditionally32:
switch (this->args.size()) {
case 5:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width32);
functor(args[2], Arg::Use, Arg::GP, Arg::Width32);
functor(args[3], Arg::Use, Arg::GP, Arg::pointerWidth());
functor(args[4], Arg::UseDef, Arg::GP, Arg::pointerWidth());
break;
case 6:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width32);
functor(args[2], Arg::Use, Arg::GP, Arg::Width32);
functor(args[3], Arg::Use, Arg::GP, Arg::pointerWidth());
functor(args[4], Arg::Use, Arg::GP, Arg::pointerWidth());
functor(args[5], Arg::Def, Arg::GP, Arg::pointerWidth());
break;
default:
break;
}
break;
case MoveConditionally64:
switch (this->args.size()) {
case 5:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width64);
functor(args[2], Arg::Use, Arg::GP, Arg::Width64);
functor(args[3], Arg::Use, Arg::GP, Arg::pointerWidth());
functor(args[4], Arg::UseDef, Arg::GP, Arg::pointerWidth());
break;
case 6:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width64);
functor(args[2], Arg::Use, Arg::GP, Arg::Width64);
functor(args[3], Arg::Use, Arg::GP, Arg::pointerWidth());
functor(args[4], Arg::Use, Arg::GP, Arg::pointerWidth());
functor(args[5], Arg::Def, Arg::GP, Arg::pointerWidth());
break;
default:
break;
}
break;
case MoveConditionallyTest32:
switch (this->args.size()) {
case 5:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width32);
functor(args[2], Arg::Use, Arg::GP, Arg::Width32);
functor(args[3], Arg::Use, Arg::GP, Arg::pointerWidth());
functor(args[4], Arg::UseDef, Arg::GP, Arg::pointerWidth());
break;
case 6:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width32);
functor(args[2], Arg::Use, Arg::GP, Arg::Width32);
functor(args[3], Arg::Use, Arg::GP, Arg::pointerWidth());
functor(args[4], Arg::Use, Arg::GP, Arg::pointerWidth());
functor(args[5], Arg::Def, Arg::GP, Arg::pointerWidth());
break;
default:
break;
}
break;
case MoveConditionallyTest64:
switch (this->args.size()) {
case 5:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width64);
functor(args[2], Arg::Use, Arg::GP, Arg::Width64);
functor(args[3], Arg::Use, Arg::GP, Arg::pointerWidth());
functor(args[4], Arg::UseDef, Arg::GP, Arg::pointerWidth());
break;
case 6:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width32);
functor(args[2], Arg::Use, Arg::GP, Arg::Width32);
functor(args[3], Arg::Use, Arg::GP, Arg::pointerWidth());
functor(args[4], Arg::Use, Arg::GP, Arg::pointerWidth());
functor(args[5], Arg::Def, Arg::GP, Arg::pointerWidth());
break;
default:
break;
}
break;
case MoveConditionallyDouble:
switch (this->args.size()) {
case 6:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::FP, Arg::Width64);
functor(args[2], Arg::Use, Arg::FP, Arg::Width64);
functor(args[3], Arg::Use, Arg::GP, Arg::pointerWidth());
functor(args[4], Arg::Use, Arg::GP, Arg::pointerWidth());
functor(args[5], Arg::Def, Arg::GP, Arg::pointerWidth());
break;
case 5:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::FP, Arg::Width64);
functor(args[2], Arg::Use, Arg::FP, Arg::Width64);
functor(args[3], Arg::Use, Arg::GP, Arg::pointerWidth());
functor(args[4], Arg::UseDef, Arg::GP, Arg::pointerWidth());
break;
default:
break;
}
break;
case MoveConditionallyFloat:
switch (this->args.size()) {
case 6:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::FP, Arg::Width32);
functor(args[2], Arg::Use, Arg::FP, Arg::Width32);
functor(args[3], Arg::Use, Arg::GP, Arg::pointerWidth());
functor(args[4], Arg::Use, Arg::GP, Arg::pointerWidth());
functor(args[5], Arg::Def, Arg::GP, Arg::pointerWidth());
break;
case 5:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::FP, Arg::Width32);
functor(args[2], Arg::Use, Arg::FP, Arg::Width32);
functor(args[3], Arg::Use, Arg::GP, Arg::pointerWidth());
functor(args[4], Arg::UseDef, Arg::GP, Arg::pointerWidth());
break;
default:
break;
}
break;
case MoveDoubleConditionally32:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width32);
functor(args[2], Arg::Use, Arg::GP, Arg::Width32);
functor(args[3], Arg::Use, Arg::FP, Arg::Width64);
functor(args[4], Arg::Use, Arg::FP, Arg::Width64);
functor(args[5], Arg::Def, Arg::FP, Arg::Width64);
break;
case MoveDoubleConditionally64:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width64);
functor(args[2], Arg::Use, Arg::GP, Arg::Width64);
functor(args[3], Arg::Use, Arg::FP, Arg::Width64);
functor(args[4], Arg::Use, Arg::FP, Arg::Width64);
functor(args[5], Arg::Def, Arg::FP, Arg::Width64);
break;
case MoveDoubleConditionallyTest32:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width32);
functor(args[2], Arg::Use, Arg::GP, Arg::Width32);
functor(args[3], Arg::Use, Arg::FP, Arg::Width64);
functor(args[4], Arg::Use, Arg::FP, Arg::Width64);
functor(args[5], Arg::Def, Arg::FP, Arg::Width64);
break;
case MoveDoubleConditionallyTest64:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::GP, Arg::Width64);
functor(args[2], Arg::Use, Arg::GP, Arg::Width64);
functor(args[3], Arg::Use, Arg::FP, Arg::Width64);
functor(args[4], Arg::Use, Arg::FP, Arg::Width64);
functor(args[5], Arg::Def, Arg::FP, Arg::Width64);
break;
case MoveDoubleConditionallyDouble:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::FP, Arg::Width64);
functor(args[2], Arg::Use, Arg::FP, Arg::Width64);
functor(args[3], Arg::Use, Arg::FP, Arg::Width64);
functor(args[4], Arg::Use, Arg::FP, Arg::Width64);
functor(args[5], Arg::Def, Arg::FP, Arg::Width64);
break;
case MoveDoubleConditionallyFloat:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
functor(args[1], Arg::Use, Arg::FP, Arg::Width32);
functor(args[2], Arg::Use, Arg::FP, Arg::Width32);
functor(args[3], Arg::Use, Arg::FP, Arg::Width64);
functor(args[4], Arg::Use, Arg::FP, Arg::Width64);
functor(args[5], Arg::Def, Arg::FP, Arg::Width64);
break;
case MemoryFence:
break;
case Jump:
break;
case RetVoid:
break;
case Ret32:
functor(args[0], Arg::Use, Arg::GP, Arg::Width32);
break;
case Ret64:
functor(args[0], Arg::Use, Arg::GP, Arg::Width64);
break;
case RetFloat:
functor(args[0], Arg::Use, Arg::FP, Arg::Width32);
break;
case RetDouble:
functor(args[0], Arg::Use, Arg::FP, Arg::Width64);
break;
case Oops:
break;
case EntrySwitch:
EntrySwitchCustom::forEachArg(*this, functor);
break;
case Shuffle:
ShuffleCustom::forEachArg(*this, functor);
break;
case Patch:
PatchCustom::forEachArg(*this, functor);
break;
case CCall:
CCallCustom::forEachArg(*this, functor);
break;
case ColdCCall:
ColdCCallCustom::forEachArg(*this, functor);
break;
default:
break;
}
}
template<typename... Arguments>
ALWAYS_INLINE bool isValidForm(Opcode opcode, Arguments... arguments)
{
Arg::Kind kinds[sizeof...(Arguments)] = { arguments... };
switch (opcode) {
case Nop:
switch (sizeof...(Arguments)) {
case 0:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Add32:
switch (sizeof...(Arguments)) {
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
case Arg::Index:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
case Arg::Index:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Add8:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
case Arg::Index:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
case Arg::Index:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Add16:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
case Arg::Index:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
case Arg::Index:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Add64:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86_64) || CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
#if CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
#if CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
case Arg::Tmp:
#if CPU(X86_64) || CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86_64) || CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86_64) || CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case AddDouble:
switch (sizeof...(Arguments)) {
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::Index:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case AddFloat:
switch (sizeof...(Arguments)) {
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::Index:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Sub32:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Sub64:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86_64) || CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
#if CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
#if CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
case Arg::Tmp:
#if CPU(X86_64) || CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case SubDouble:
switch (sizeof...(Arguments)) {
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Index:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case SubFloat:
switch (sizeof...(Arguments)) {
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Index:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Neg32:
switch (sizeof...(Arguments)) {
case 1:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
case Neg64:
switch (sizeof...(Arguments)) {
case 1:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
#if CPU(X86_64) || CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
case NegateDouble:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case NegateFloat:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Mul32:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Mul64:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86_64) || CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case MultiplyAdd32:
switch (sizeof...(Arguments)) {
case 4:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
#if CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case MultiplyAdd64:
switch (sizeof...(Arguments)) {
case 4:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
#if CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case MultiplySub32:
switch (sizeof...(Arguments)) {
case 4:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
#if CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case MultiplySub64:
switch (sizeof...(Arguments)) {
case 4:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
#if CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case MultiplyNeg32:
switch (sizeof...(Arguments)) {
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case MultiplyNeg64:
switch (sizeof...(Arguments)) {
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Div32:
switch (sizeof...(Arguments)) {
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Div64:
switch (sizeof...(Arguments)) {
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case MulDouble:
switch (sizeof...(Arguments)) {
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::Index:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case MulFloat:
switch (sizeof...(Arguments)) {
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::Index:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case DivDouble:
switch (sizeof...(Arguments)) {
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case DivFloat:
switch (sizeof...(Arguments)) {
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case X86ConvertToDoubleWord32:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case X86ConvertToQuadWord64:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case X86Div32:
switch (sizeof...(Arguments)) {
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case X86Div64:
switch (sizeof...(Arguments)) {
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Lea:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
if (opgenHiddenPtrIdentity(kinds)[0] == Arg::Stack)
    return false;
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case And32:
switch (sizeof...(Arguments)) {
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::BitImm:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case And64:
switch (sizeof...(Arguments)) {
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86_64) || CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
#if USE(JSVALUE64)
case Arg::BitImm64:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
#endif // USE(JSVALUE64)
default:
break;
}
break;
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case AndDouble:
switch (sizeof...(Arguments)) {
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case AndFloat:
switch (sizeof...(Arguments)) {
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case XorDouble:
switch (sizeof...(Arguments)) {
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case XorFloat:
switch (sizeof...(Arguments)) {
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Lshift32:
switch (sizeof...(Arguments)) {
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
break;
break;
default:
break;
}
break;
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Lshift64:
switch (sizeof...(Arguments)) {
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
break;
break;
default:
break;
}
break;
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Rshift32:
switch (sizeof...(Arguments)) {
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
break;
break;
default:
break;
}
break;
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Rshift64:
switch (sizeof...(Arguments)) {
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
break;
break;
default:
break;
}
break;
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Urshift32:
switch (sizeof...(Arguments)) {
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
break;
break;
default:
break;
}
break;
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Urshift64:
switch (sizeof...(Arguments)) {
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
break;
break;
default:
break;
}
break;
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Or32:
switch (sizeof...(Arguments)) {
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::BitImm:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Or64:
switch (sizeof...(Arguments)) {
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86_64) || CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
#if USE(JSVALUE64)
case Arg::BitImm64:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
#endif // USE(JSVALUE64)
default:
break;
}
break;
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86_64) || CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Xor32:
switch (sizeof...(Arguments)) {
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::BitImm:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Xor64:
switch (sizeof...(Arguments)) {
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86_64) || CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
#if USE(JSVALUE64)
case Arg::BitImm64:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
#endif // USE(JSVALUE64)
default:
break;
}
break;
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86_64) || CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
#if CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Not32:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
case 1:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
case Not64:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
case 1:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
case AbsDouble:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case AbsFloat:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case CeilDouble:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case CeilFloat:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case FloorDouble:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case FloorFloat:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case SqrtDouble:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case SqrtFloat:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case ConvertInt32ToDouble:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case ConvertInt64ToDouble:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86_64) || CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case ConvertInt32ToFloat:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case ConvertInt64ToFloat:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86_64) || CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case CountLeadingZeros32:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case CountLeadingZeros64:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86_64) || CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case ConvertDoubleToFloat:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case ConvertFloatToDouble:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Move:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
OPGEN_RETURN(true);
break;
break;
case Arg::Index:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
#if USE(JSVALUE64)
case Arg::BigImm:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
#endif // USE(JSVALUE64)
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Index:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Swap32:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Swap64:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
#if CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Move32:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
OPGEN_RETURN(true);
break;
break;
case Arg::Index:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Index:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
case Arg::Index:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case StoreZero32:
switch (sizeof...(Arguments)) {
case 1:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
OPGEN_RETURN(true);
break;
break;
case Arg::Index:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
case SignExtend32ToPtr:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case ZeroExtend8To32:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Index:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case SignExtend8To32:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Index:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case ZeroExtend16To32:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Index:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case SignExtend16To32:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Index:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case MoveFloat:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
OPGEN_RETURN(true);
break;
break;
case Arg::Index:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Index:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case MoveDouble:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
OPGEN_RETURN(true);
break;
break;
case Arg::Index:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Index:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case MoveZeroToDouble:
switch (sizeof...(Arguments)) {
case 1:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
case Move64ToDouble:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86_64) || CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Index:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86_64) || CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Move32ToFloat:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Index:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case MoveDoubleTo64:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86_64) || CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86_64) || CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Index:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86_64) || CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case MoveFloatTo32:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Index:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Load8:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Index:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Store8:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Index:
OPGEN_RETURN(true);
break;
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Index:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Load8SignedExtendTo32:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Index:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Load16:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Index:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Load16SignedExtendTo32:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Index:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Store16:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Index:
OPGEN_RETURN(true);
break;
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Compare32:
switch (sizeof...(Arguments)) {
case 4:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::RelCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Compare64:
switch (sizeof...(Arguments)) {
case 4:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::RelCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
#if CPU(X86_64) || CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
#if CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Test32:
switch (sizeof...(Arguments)) {
case 4:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::ResCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::BitImm:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Test64:
switch (sizeof...(Arguments)) {
case 4:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::ResCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
#if CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
#if CPU(X86_64) || CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case CompareDouble:
switch (sizeof...(Arguments)) {
case 4:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::DoubleCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case CompareFloat:
switch (sizeof...(Arguments)) {
case 4:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::DoubleCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Branch8:
switch (sizeof...(Arguments)) {
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::RelCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Imm:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Index:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Imm:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Branch32:
switch (sizeof...(Arguments)) {
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::RelCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Imm:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
case Arg::Imm:
OPGEN_RETURN(true);
break;
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Index:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Imm:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Branch64:
switch (sizeof...(Arguments)) {
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::RelCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86_64) || CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
case Arg::Imm:
#if CPU(X86_64) || CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
#if CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
case Arg::Imm:
#if CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Index:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case BranchTest8:
switch (sizeof...(Arguments)) {
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::ResCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::BitImm:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Index:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::BitImm:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case BranchTest32:
switch (sizeof...(Arguments)) {
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::ResCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
case Arg::BitImm:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::BitImm:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Index:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::BitImm:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case BranchTest64:
switch (sizeof...(Arguments)) {
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::ResCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86_64) || CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
#if USE(JSVALUE64)
case Arg::BitImm64:
#if CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
#endif // USE(JSVALUE64)
case Arg::BitImm:
#if CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::BitImm:
#if CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
case Arg::Tmp:
#if CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Index:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::BitImm:
#if CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case BranchDouble:
switch (sizeof...(Arguments)) {
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::DoubleCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case BranchFloat:
switch (sizeof...(Arguments)) {
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::DoubleCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case BranchAdd32:
switch (sizeof...(Arguments)) {
case 4:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::ResCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::ResCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case BranchAdd64:
switch (sizeof...(Arguments)) {
case 4:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::ResCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::ResCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86_64) || CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86_64) || CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case BranchMul32:
switch (sizeof...(Arguments)) {
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::ResCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case 4:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::ResCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case 6:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::ResCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[4]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[5]) {
case Arg::Tmp:
#if CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case BranchMul64:
switch (sizeof...(Arguments)) {
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::ResCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case 6:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::ResCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[4]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[5]) {
case Arg::Tmp:
#if CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case BranchSub32:
switch (sizeof...(Arguments)) {
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::ResCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case BranchSub64:
switch (sizeof...(Arguments)) {
case 3:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::ResCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86_64) || CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
#if CPU(X86_64) || CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case BranchNeg32:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::ResCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case BranchNeg64:
switch (sizeof...(Arguments)) {
case 2:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::ResCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
#if CPU(X86_64) || CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case MoveConditionally32:
switch (sizeof...(Arguments)) {
case 5:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::RelCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[4]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case 6:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::RelCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[4]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[5]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[4]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[5]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case MoveConditionally64:
switch (sizeof...(Arguments)) {
case 5:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::RelCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[4]) {
case Arg::Tmp:
#if CPU(X86_64) || CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case 6:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::RelCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[4]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[5]) {
case Arg::Tmp:
#if CPU(X86_64) || CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[4]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[5]) {
case Arg::Tmp:
#if CPU(X86_64) || CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case MoveConditionallyTest32:
switch (sizeof...(Arguments)) {
case 5:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::ResCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[4]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[4]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case 6:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::ResCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[4]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[5]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::BitImm:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[4]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[5]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case MoveConditionallyTest64:
switch (sizeof...(Arguments)) {
case 5:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::ResCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[4]) {
case Arg::Tmp:
#if CPU(X86_64) || CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[4]) {
case Arg::Tmp:
#if CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case 6:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::ResCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[4]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[5]) {
case Arg::Tmp:
#if CPU(X86_64) || CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[4]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[5]) {
case Arg::Tmp:
#if CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case MoveConditionallyDouble:
switch (sizeof...(Arguments)) {
case 6:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::DoubleCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[4]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[5]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case 5:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::DoubleCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[4]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case MoveConditionallyFloat:
switch (sizeof...(Arguments)) {
case 6:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::DoubleCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[4]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[5]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case 5:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::DoubleCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[4]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case MoveDoubleConditionally32:
switch (sizeof...(Arguments)) {
case 6:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::RelCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[4]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[5]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[4]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[5]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[4]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[5]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[4]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[5]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[4]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[5]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::Index:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[4]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[5]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case MoveDoubleConditionally64:
switch (sizeof...(Arguments)) {
case 6:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::RelCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[4]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[5]) {
case Arg::Tmp:
#if CPU(X86_64) || CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[4]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[5]) {
case Arg::Tmp:
#if CPU(X86_64) || CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[4]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[5]) {
case Arg::Tmp:
#if CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[4]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[5]) {
case Arg::Tmp:
#if CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[4]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[5]) {
case Arg::Tmp:
#if CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::Index:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[4]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[5]) {
case Arg::Tmp:
#if CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case MoveDoubleConditionallyTest32:
switch (sizeof...(Arguments)) {
case 6:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::ResCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[4]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[5]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::BitImm:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[4]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[5]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[4]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[5]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::Index:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[4]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[5]) {
case Arg::Tmp:
#if CPU(X86) || CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case MoveDoubleConditionallyTest64:
switch (sizeof...(Arguments)) {
case 6:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::ResCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[4]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[5]) {
case Arg::Tmp:
#if CPU(X86_64) || CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[4]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[5]) {
case Arg::Tmp:
#if CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::Addr:
case Arg::Stack:
case Arg::CallArg:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[4]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[5]) {
case Arg::Tmp:
#if CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[4]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[5]) {
case Arg::Tmp:
#if CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case Arg::Index:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Imm:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[4]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[5]) {
case Arg::Tmp:
#if CPU(X86_64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case MoveDoubleConditionallyDouble:
switch (sizeof...(Arguments)) {
case 6:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::DoubleCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[4]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[5]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case MoveDoubleConditionallyFloat:
switch (sizeof...(Arguments)) {
case 6:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::DoubleCond:
switch (opgenHiddenPtrIdentity(kinds)[1]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[2]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[3]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[4]) {
case Arg::Tmp:
switch (opgenHiddenPtrIdentity(kinds)[5]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
default:
break;
}
break;
case MemoryFence:
switch (sizeof...(Arguments)) {
case 0:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Jump:
switch (sizeof...(Arguments)) {
case 0:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case RetVoid:
switch (sizeof...(Arguments)) {
case 0:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case Ret32:
switch (sizeof...(Arguments)) {
case 1:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
case Ret64:
switch (sizeof...(Arguments)) {
case 1:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
#if CPU(X86_64) || CPU(ARM64)
OPGEN_RETURN(true);
#endif
break;
break;
default:
break;
}
break;
default:
break;
}
break;
case RetFloat:
switch (sizeof...(Arguments)) {
case 1:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
case RetDouble:
switch (sizeof...(Arguments)) {
case 1:
switch (opgenHiddenPtrIdentity(kinds)[0]) {
case Arg::Tmp:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
default:
break;
}
break;
case Oops:
switch (sizeof...(Arguments)) {
case 0:
OPGEN_RETURN(true);
break;
break;
default:
break;
}
break;
case EntrySwitch:
OPGEN_RETURN(EntrySwitchCustom::isValidFormStatic(arguments...));
break;
case Shuffle:
OPGEN_RETURN(ShuffleCustom::isValidFormStatic(arguments...));
break;
case Patch:
OPGEN_RETURN(PatchCustom::isValidFormStatic(arguments...));
break;
case CCall:
OPGEN_RETURN(CCallCustom::isValidFormStatic(arguments...));
break;
case ColdCCall:
OPGEN_RETURN(ColdCCallCustom::isValidFormStatic(arguments...));
break;
default:
break;
}
return false; 
}
inline bool isDefinitelyTerminal(Opcode opcode)
{
switch (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 RetVoid:
case Ret32:
case Ret64:
case RetFloat:
case RetDouble:
case Oops:
return true;
default:
return false;
}
}
inline bool isReturn(Opcode opcode)
{
switch (opcode) {
case RetVoid:
case Ret32:
case Ret64:
case RetFloat:
case RetDouble:
return true;
default:
return false;
}
}
} } } // namespace JSC::B3::Air
#endif // AirOpcodeUtils_h
