blob: 86c0ed155c593f1399c4d3474c8dea491dfe0be0 [file] [log] [blame]
// 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