mirror of
https://github.com/darlinghq/darling-JavaScriptCore.git
synced 2024-11-26 21:50:53 +00:00
12160 lines
165 KiB
C++
12160 lines
165 KiB
C++
// Generated by opcode_generator.rb from JavaScriptCore/b3/air/AirOpcode.opcodes -- do not edit!
|
|
#ifndef AirOpcodeUtils_h
|
|
#define AirOpcodeUtils_h
|
|
#include "AirCustom.h"
|
|
#include "AirInst.h"
|
|
#include "AirFormTable.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>
|
|
ALWAYS_INLINE void Inst::forEachArg(const Functor& functor)
|
|
{
|
|
switch (kind.opcode) {
|
|
case Opcode::EntrySwitch:
|
|
case Opcode::Shuffle:
|
|
case Opcode::Patch:
|
|
case Opcode::CCall:
|
|
case Opcode::ColdCCall:
|
|
case Opcode::WasmBoundsCheck:
|
|
forEachArgCustom(scopedLambdaRef<EachArgCallback>(functor));
|
|
return;
|
|
default:
|
|
forEachArgSimple(functor);
|
|
return;
|
|
}
|
|
}
|
|
template<typename Func>
|
|
ALWAYS_INLINE void Inst::forEachArgSimple(const Func& func)
|
|
{
|
|
size_t numOperands = args.size();
|
|
size_t formOffset = (numOperands - 1) * numOperands / 2;
|
|
const uint8_t* formBase = g_formTable + kind.opcode * 21 + formOffset;
|
|
for (size_t i = 0; i < numOperands; ++i) {
|
|
uint8_t form = formBase[i];
|
|
ASSERT(!(form & (1 << formInvalidShift)));
|
|
func(args[i], decodeFormRole(form), decodeFormBank(form), decodeFormWidth(form));
|
|
}
|
|
}
|
|
template<typename... Arguments>
|
|
ALWAYS_INLINE bool isValidForm(Opcode opcode, Arguments... arguments)
|
|
{
|
|
Arg::Kind kinds[sizeof...(Arguments)] = { arguments... };
|
|
switch (opcode) {
|
|
case Opcode::Nop:
|
|
switch (sizeof...(Arguments)) {
|
|
case 0:
|
|
OPGEN_RETURN(true);
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::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;
|
|
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 Opcode::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 Opcode::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 Opcode::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;
|
|
case Arg::Index:
|
|
#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::Index:
|
|
#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;
|
|
case Arg::Index:
|
|
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 Opcode::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 Opcode::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 Opcode::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;
|
|
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;
|
|
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;
|
|
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 Opcode::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;
|
|
case Arg::Index:
|
|
#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::Index:
|
|
#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;
|
|
case Arg::Index:
|
|
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 Opcode::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 Opcode::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 Opcode::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;
|
|
case Arg::Index:
|
|
#if CPU(X86) || CPU(X86_64)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::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;
|
|
case Arg::Addr:
|
|
case Arg::Stack:
|
|
case Arg::CallArg:
|
|
#if CPU(X86_64)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
case Arg::Index:
|
|
#if CPU(X86_64)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::MultiplySignExtend32:
|
|
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 Opcode::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 Opcode::UDiv32:
|
|
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 Opcode::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 Opcode::UDiv64:
|
|
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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::X86UDiv32:
|
|
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 Opcode::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 Opcode::X86UDiv64:
|
|
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 Opcode::Lea32:
|
|
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;
|
|
case Arg::Index:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::Tmp:
|
|
if (opgenHiddenPtrIdentity(kinds)[0] == Arg::Stack)
|
|
return false;
|
|
#if CPU(X86) || CPU(X86_64)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::Lea64:
|
|
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;
|
|
case Arg::Index:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::Tmp:
|
|
if (opgenHiddenPtrIdentity(kinds)[0] == Arg::Stack)
|
|
return false;
|
|
#if CPU(X86) || CPU(X86_64)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::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;
|
|
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::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;
|
|
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 Opcode::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;
|
|
case Arg::Addr:
|
|
case Arg::Stack:
|
|
case Arg::CallArg:
|
|
#if CPU(X86_64)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
case Arg::Index:
|
|
#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;
|
|
case Arg::Addr:
|
|
case Arg::Stack:
|
|
case Arg::CallArg:
|
|
#if CPU(X86_64)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
case Arg::Index:
|
|
#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)[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)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::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 Opcode::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 Opcode::OrDouble:
|
|
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 Opcode::OrFloat:
|
|
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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::RotateRight32:
|
|
switch (sizeof...(Arguments)) {
|
|
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;
|
|
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;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::RotateRight64:
|
|
switch (sizeof...(Arguments)) {
|
|
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;
|
|
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;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::RotateLeft32:
|
|
switch (sizeof...(Arguments)) {
|
|
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 Opcode::RotateLeft64:
|
|
switch (sizeof...(Arguments)) {
|
|
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 Opcode::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;
|
|
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::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;
|
|
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 Opcode::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;
|
|
case Arg::Addr:
|
|
case Arg::Stack:
|
|
case Arg::CallArg:
|
|
#if CPU(X86_64)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
case Arg::Index:
|
|
#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;
|
|
case Arg::Addr:
|
|
case Arg::Stack:
|
|
case Arg::CallArg:
|
|
#if CPU(X86_64)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
case Arg::Index:
|
|
#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)[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)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::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;
|
|
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::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;
|
|
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 Opcode::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;
|
|
case Arg::Index:
|
|
#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)[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)
|
|
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::Index:
|
|
#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;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::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;
|
|
case Arg::Index:
|
|
#if CPU(X86) || CPU(X86_64)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::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_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;
|
|
case Arg::Index:
|
|
#if CPU(X86_64)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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;
|
|
case 3:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::Addr:
|
|
case Arg::Stack:
|
|
case Arg::CallArg:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::Addr:
|
|
case Arg::Stack:
|
|
case Arg::CallArg:
|
|
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 Opcode::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 Opcode::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 Opcode::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;
|
|
case 3:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::Addr:
|
|
case Arg::Stack:
|
|
case Arg::CallArg:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::Addr:
|
|
case Arg::Stack:
|
|
case Arg::CallArg:
|
|
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 Opcode::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 Opcode::StoreZero64:
|
|
switch (sizeof...(Arguments)) {
|
|
case 1:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::Addr:
|
|
case Arg::Stack:
|
|
case Arg::CallArg:
|
|
#if CPU(X86_64) || CPU(ARM64)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
case Arg::Index:
|
|
#if CPU(X86_64) || CPU(ARM64)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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;
|
|
case 3:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::Addr:
|
|
case Arg::Stack:
|
|
case Arg::CallArg:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::Addr:
|
|
case Arg::Stack:
|
|
case Arg::CallArg:
|
|
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 Opcode::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;
|
|
case 3:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::Addr:
|
|
case Arg::Stack:
|
|
case Arg::CallArg:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::Addr:
|
|
case Arg::Stack:
|
|
case Arg::CallArg:
|
|
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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::LoadAcq8:
|
|
switch (sizeof...(Arguments)) {
|
|
case 2:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::SimpleAddr:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::Tmp:
|
|
#if CPU(ARMv7) || CPU(ARM64)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::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 Opcode::StoreRel8:
|
|
switch (sizeof...(Arguments)) {
|
|
case 2:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::SimpleAddr:
|
|
#if CPU(ARMv7) || CPU(ARM64)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::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 Opcode::LoadAcq8SignedExtendTo32:
|
|
switch (sizeof...(Arguments)) {
|
|
case 2:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::SimpleAddr:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::Tmp:
|
|
#if CPU(ARMv7) || CPU(ARM64)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::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 Opcode::LoadAcq16:
|
|
switch (sizeof...(Arguments)) {
|
|
case 2:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::SimpleAddr:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::Tmp:
|
|
#if CPU(ARMv7) || CPU(ARM64)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::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 Opcode::LoadAcq16SignedExtendTo32:
|
|
switch (sizeof...(Arguments)) {
|
|
case 2:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::SimpleAddr:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::Tmp:
|
|
#if CPU(ARMv7) || CPU(ARM64)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::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;
|
|
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 Opcode::StoreRel16:
|
|
switch (sizeof...(Arguments)) {
|
|
case 2:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::SimpleAddr:
|
|
#if CPU(ARMv7) || CPU(ARM64)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::LoadAcq32:
|
|
switch (sizeof...(Arguments)) {
|
|
case 2:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::SimpleAddr:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::Tmp:
|
|
#if CPU(ARMv7) || CPU(ARM64)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::StoreRel32:
|
|
switch (sizeof...(Arguments)) {
|
|
case 2:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::SimpleAddr:
|
|
#if CPU(ARMv7) || CPU(ARM64)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::LoadAcq64:
|
|
switch (sizeof...(Arguments)) {
|
|
case 2:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::SimpleAddr:
|
|
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 Opcode::StoreRel64:
|
|
switch (sizeof...(Arguments)) {
|
|
case 2:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::SimpleAddr:
|
|
#if CPU(ARM64)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::Xchg8:
|
|
switch (sizeof...(Arguments)) {
|
|
case 2:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
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 Opcode::Xchg16:
|
|
switch (sizeof...(Arguments)) {
|
|
case 2:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
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 Opcode::Xchg32:
|
|
switch (sizeof...(Arguments)) {
|
|
case 2:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
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 Opcode::Xchg64:
|
|
switch (sizeof...(Arguments)) {
|
|
case 2:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::Tmp:
|
|
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::Index:
|
|
#if CPU(X86_64)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::AtomicStrongCAS8:
|
|
switch (sizeof...(Arguments)) {
|
|
case 5:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::StatusCond:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[2]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[3]) {
|
|
case Arg::Addr:
|
|
case Arg::Stack:
|
|
case Arg::CallArg:
|
|
switch (opgenHiddenPtrIdentity(kinds)[4]) {
|
|
case Arg::Tmp:
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Arg::Index:
|
|
switch (opgenHiddenPtrIdentity(kinds)[4]) {
|
|
case Arg::Tmp:
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
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::Addr:
|
|
case Arg::Stack:
|
|
case Arg::CallArg:
|
|
break;
|
|
break;
|
|
case Arg::Index:
|
|
break;
|
|
break;
|
|
case Arg::SimpleAddr:
|
|
#if CPU(ARM64E)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::AtomicStrongCAS16:
|
|
switch (sizeof...(Arguments)) {
|
|
case 5:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::StatusCond:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[2]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[3]) {
|
|
case Arg::Addr:
|
|
case Arg::Stack:
|
|
case Arg::CallArg:
|
|
switch (opgenHiddenPtrIdentity(kinds)[4]) {
|
|
case Arg::Tmp:
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Arg::Index:
|
|
switch (opgenHiddenPtrIdentity(kinds)[4]) {
|
|
case Arg::Tmp:
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
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::Addr:
|
|
case Arg::Stack:
|
|
case Arg::CallArg:
|
|
break;
|
|
break;
|
|
case Arg::Index:
|
|
break;
|
|
break;
|
|
case Arg::SimpleAddr:
|
|
#if CPU(ARM64E)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::AtomicStrongCAS32:
|
|
switch (sizeof...(Arguments)) {
|
|
case 5:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::StatusCond:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[2]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[3]) {
|
|
case Arg::Addr:
|
|
case Arg::Stack:
|
|
case Arg::CallArg:
|
|
switch (opgenHiddenPtrIdentity(kinds)[4]) {
|
|
case Arg::Tmp:
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Arg::Index:
|
|
switch (opgenHiddenPtrIdentity(kinds)[4]) {
|
|
case Arg::Tmp:
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
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::Addr:
|
|
case Arg::Stack:
|
|
case Arg::CallArg:
|
|
break;
|
|
break;
|
|
case Arg::Index:
|
|
break;
|
|
break;
|
|
case Arg::SimpleAddr:
|
|
#if CPU(ARM64E)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::AtomicStrongCAS64:
|
|
switch (sizeof...(Arguments)) {
|
|
case 5:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::StatusCond:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[2]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[3]) {
|
|
case Arg::Addr:
|
|
case Arg::Stack:
|
|
case Arg::CallArg:
|
|
switch (opgenHiddenPtrIdentity(kinds)[4]) {
|
|
case Arg::Tmp:
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Arg::Index:
|
|
switch (opgenHiddenPtrIdentity(kinds)[4]) {
|
|
case Arg::Tmp:
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
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::Addr:
|
|
case Arg::Stack:
|
|
case Arg::CallArg:
|
|
break;
|
|
break;
|
|
case Arg::Index:
|
|
break;
|
|
break;
|
|
case Arg::SimpleAddr:
|
|
#if CPU(ARM64E)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::BranchAtomicStrongCAS8:
|
|
switch (sizeof...(Arguments)) {
|
|
case 4:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::StatusCond:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[2]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[3]) {
|
|
case Arg::Addr:
|
|
case Arg::Stack:
|
|
case Arg::CallArg:
|
|
break;
|
|
break;
|
|
case Arg::Index:
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::BranchAtomicStrongCAS16:
|
|
switch (sizeof...(Arguments)) {
|
|
case 4:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::StatusCond:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[2]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[3]) {
|
|
case Arg::Addr:
|
|
case Arg::Stack:
|
|
case Arg::CallArg:
|
|
break;
|
|
break;
|
|
case Arg::Index:
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::BranchAtomicStrongCAS32:
|
|
switch (sizeof...(Arguments)) {
|
|
case 4:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::StatusCond:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[2]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[3]) {
|
|
case Arg::Addr:
|
|
case Arg::Stack:
|
|
case Arg::CallArg:
|
|
break;
|
|
break;
|
|
case Arg::Index:
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::BranchAtomicStrongCAS64:
|
|
switch (sizeof...(Arguments)) {
|
|
case 4:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::StatusCond:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[2]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[3]) {
|
|
case Arg::Addr:
|
|
case Arg::Stack:
|
|
case Arg::CallArg:
|
|
break;
|
|
break;
|
|
case Arg::Index:
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::AtomicAdd8:
|
|
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 Opcode::AtomicAdd16:
|
|
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 Opcode::AtomicAdd32:
|
|
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 Opcode::AtomicAdd64:
|
|
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_64)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
case Arg::Index:
|
|
#if 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_64)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
case Arg::Index:
|
|
#if CPU(X86_64)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::AtomicSub8:
|
|
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 Opcode::AtomicSub16:
|
|
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 Opcode::AtomicSub32:
|
|
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 Opcode::AtomicSub64:
|
|
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_64)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
case Arg::Index:
|
|
#if 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_64)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
case Arg::Index:
|
|
#if CPU(X86_64)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::AtomicAnd8:
|
|
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 Opcode::AtomicAnd16:
|
|
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 Opcode::AtomicAnd32:
|
|
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 Opcode::AtomicAnd64:
|
|
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_64)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
case Arg::Index:
|
|
#if 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_64)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
case Arg::Index:
|
|
#if CPU(X86_64)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::AtomicOr8:
|
|
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 Opcode::AtomicOr16:
|
|
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 Opcode::AtomicOr32:
|
|
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 Opcode::AtomicOr64:
|
|
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_64)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
case Arg::Index:
|
|
#if 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_64)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
case Arg::Index:
|
|
#if CPU(X86_64)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::AtomicXor8:
|
|
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 Opcode::AtomicXor16:
|
|
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 Opcode::AtomicXor32:
|
|
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 Opcode::AtomicXor64:
|
|
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_64)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
case Arg::Index:
|
|
#if 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_64)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
case Arg::Index:
|
|
#if CPU(X86_64)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::AtomicNeg8:
|
|
switch (sizeof...(Arguments)) {
|
|
case 1:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
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;
|
|
case Opcode::AtomicNeg16:
|
|
switch (sizeof...(Arguments)) {
|
|
case 1:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
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;
|
|
case Opcode::AtomicNeg32:
|
|
switch (sizeof...(Arguments)) {
|
|
case 1:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
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;
|
|
case Opcode::AtomicNeg64:
|
|
switch (sizeof...(Arguments)) {
|
|
case 1:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::Addr:
|
|
case Arg::Stack:
|
|
case Arg::CallArg:
|
|
#if CPU(X86_64)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
case Arg::Index:
|
|
#if CPU(X86_64)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::AtomicNot8:
|
|
switch (sizeof...(Arguments)) {
|
|
case 1:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
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;
|
|
case Opcode::AtomicNot16:
|
|
switch (sizeof...(Arguments)) {
|
|
case 1:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
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;
|
|
case Opcode::AtomicNot32:
|
|
switch (sizeof...(Arguments)) {
|
|
case 1:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
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;
|
|
case Opcode::AtomicNot64:
|
|
switch (sizeof...(Arguments)) {
|
|
case 1:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::Addr:
|
|
case Arg::Stack:
|
|
case Arg::CallArg:
|
|
#if CPU(X86_64)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
case Arg::Index:
|
|
#if CPU(X86_64)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::AtomicXchgAdd8:
|
|
switch (sizeof...(Arguments)) {
|
|
case 2:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
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;
|
|
case 3:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::SimpleAddr:
|
|
switch (opgenHiddenPtrIdentity(kinds)[2]) {
|
|
case Arg::Tmp:
|
|
#if CPU(ARM64E)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::AtomicXchgAdd16:
|
|
switch (sizeof...(Arguments)) {
|
|
case 2:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
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;
|
|
case 3:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::SimpleAddr:
|
|
switch (opgenHiddenPtrIdentity(kinds)[2]) {
|
|
case Arg::Tmp:
|
|
#if CPU(ARM64E)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::AtomicXchgAdd32:
|
|
switch (sizeof...(Arguments)) {
|
|
case 2:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
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;
|
|
case 3:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::SimpleAddr:
|
|
switch (opgenHiddenPtrIdentity(kinds)[2]) {
|
|
case Arg::Tmp:
|
|
#if CPU(ARM64E)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::AtomicXchgAdd64:
|
|
switch (sizeof...(Arguments)) {
|
|
case 2:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::Tmp:
|
|
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::Index:
|
|
#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::SimpleAddr:
|
|
switch (opgenHiddenPtrIdentity(kinds)[2]) {
|
|
case Arg::Tmp:
|
|
#if CPU(ARM64E)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::AtomicXchg8:
|
|
switch (sizeof...(Arguments)) {
|
|
case 2:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
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;
|
|
case 3:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::SimpleAddr:
|
|
switch (opgenHiddenPtrIdentity(kinds)[2]) {
|
|
case Arg::Tmp:
|
|
#if CPU(ARM64E)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::AtomicXchg16:
|
|
switch (sizeof...(Arguments)) {
|
|
case 2:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
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;
|
|
case 3:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::SimpleAddr:
|
|
switch (opgenHiddenPtrIdentity(kinds)[2]) {
|
|
case Arg::Tmp:
|
|
#if CPU(ARM64E)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::AtomicXchg32:
|
|
switch (sizeof...(Arguments)) {
|
|
case 2:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
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;
|
|
case 3:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::SimpleAddr:
|
|
switch (opgenHiddenPtrIdentity(kinds)[2]) {
|
|
case Arg::Tmp:
|
|
#if CPU(ARM64E)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::AtomicXchg64:
|
|
switch (sizeof...(Arguments)) {
|
|
case 2:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::Tmp:
|
|
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::Index:
|
|
#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::SimpleAddr:
|
|
switch (opgenHiddenPtrIdentity(kinds)[2]) {
|
|
case Arg::Tmp:
|
|
#if CPU(ARM64E)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::LoadLink8:
|
|
switch (sizeof...(Arguments)) {
|
|
case 2:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::SimpleAddr:
|
|
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 Opcode::LoadLinkAcq8:
|
|
switch (sizeof...(Arguments)) {
|
|
case 2:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::SimpleAddr:
|
|
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 Opcode::StoreCond8:
|
|
switch (sizeof...(Arguments)) {
|
|
case 3:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::SimpleAddr:
|
|
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 Opcode::StoreCondRel8:
|
|
switch (sizeof...(Arguments)) {
|
|
case 3:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::SimpleAddr:
|
|
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 Opcode::LoadLink16:
|
|
switch (sizeof...(Arguments)) {
|
|
case 2:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::SimpleAddr:
|
|
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 Opcode::LoadLinkAcq16:
|
|
switch (sizeof...(Arguments)) {
|
|
case 2:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::SimpleAddr:
|
|
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 Opcode::StoreCond16:
|
|
switch (sizeof...(Arguments)) {
|
|
case 3:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::SimpleAddr:
|
|
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 Opcode::StoreCondRel16:
|
|
switch (sizeof...(Arguments)) {
|
|
case 3:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::SimpleAddr:
|
|
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 Opcode::LoadLink32:
|
|
switch (sizeof...(Arguments)) {
|
|
case 2:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::SimpleAddr:
|
|
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 Opcode::LoadLinkAcq32:
|
|
switch (sizeof...(Arguments)) {
|
|
case 2:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::SimpleAddr:
|
|
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 Opcode::StoreCond32:
|
|
switch (sizeof...(Arguments)) {
|
|
case 3:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::SimpleAddr:
|
|
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 Opcode::StoreCondRel32:
|
|
switch (sizeof...(Arguments)) {
|
|
case 3:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::SimpleAddr:
|
|
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 Opcode::LoadLink64:
|
|
switch (sizeof...(Arguments)) {
|
|
case 2:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::SimpleAddr:
|
|
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 Opcode::LoadLinkAcq64:
|
|
switch (sizeof...(Arguments)) {
|
|
case 2:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::SimpleAddr:
|
|
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 Opcode::StoreCond64:
|
|
switch (sizeof...(Arguments)) {
|
|
case 3:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::SimpleAddr:
|
|
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 Opcode::StoreCondRel64:
|
|
switch (sizeof...(Arguments)) {
|
|
case 3:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::SimpleAddr:
|
|
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 Opcode::Depend32:
|
|
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 Opcode::Depend64:
|
|
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 Opcode::AtomicXchgOr8:
|
|
switch (sizeof...(Arguments)) {
|
|
case 3:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::SimpleAddr:
|
|
switch (opgenHiddenPtrIdentity(kinds)[2]) {
|
|
case Arg::Tmp:
|
|
#if CPU(ARM64E)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::AtomicXchgOr16:
|
|
switch (sizeof...(Arguments)) {
|
|
case 3:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::SimpleAddr:
|
|
switch (opgenHiddenPtrIdentity(kinds)[2]) {
|
|
case Arg::Tmp:
|
|
#if CPU(ARM64E)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::AtomicXchgOr32:
|
|
switch (sizeof...(Arguments)) {
|
|
case 3:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::SimpleAddr:
|
|
switch (opgenHiddenPtrIdentity(kinds)[2]) {
|
|
case Arg::Tmp:
|
|
#if CPU(ARM64E)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::AtomicXchgOr64:
|
|
switch (sizeof...(Arguments)) {
|
|
case 3:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::SimpleAddr:
|
|
switch (opgenHiddenPtrIdentity(kinds)[2]) {
|
|
case Arg::Tmp:
|
|
#if CPU(ARM64E)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::AtomicXchgClear8:
|
|
switch (sizeof...(Arguments)) {
|
|
case 3:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::SimpleAddr:
|
|
switch (opgenHiddenPtrIdentity(kinds)[2]) {
|
|
case Arg::Tmp:
|
|
#if CPU(ARM64E)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::AtomicXchgClear16:
|
|
switch (sizeof...(Arguments)) {
|
|
case 3:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::SimpleAddr:
|
|
switch (opgenHiddenPtrIdentity(kinds)[2]) {
|
|
case Arg::Tmp:
|
|
#if CPU(ARM64E)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::AtomicXchgClear32:
|
|
switch (sizeof...(Arguments)) {
|
|
case 3:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::SimpleAddr:
|
|
switch (opgenHiddenPtrIdentity(kinds)[2]) {
|
|
case Arg::Tmp:
|
|
#if CPU(ARM64E)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::AtomicXchgClear64:
|
|
switch (sizeof...(Arguments)) {
|
|
case 3:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::SimpleAddr:
|
|
switch (opgenHiddenPtrIdentity(kinds)[2]) {
|
|
case Arg::Tmp:
|
|
#if CPU(ARM64E)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::AtomicXchgXor8:
|
|
switch (sizeof...(Arguments)) {
|
|
case 3:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::SimpleAddr:
|
|
switch (opgenHiddenPtrIdentity(kinds)[2]) {
|
|
case Arg::Tmp:
|
|
#if CPU(ARM64E)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::AtomicXchgXor16:
|
|
switch (sizeof...(Arguments)) {
|
|
case 3:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::SimpleAddr:
|
|
switch (opgenHiddenPtrIdentity(kinds)[2]) {
|
|
case Arg::Tmp:
|
|
#if CPU(ARM64E)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::AtomicXchgXor32:
|
|
switch (sizeof...(Arguments)) {
|
|
case 3:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::SimpleAddr:
|
|
switch (opgenHiddenPtrIdentity(kinds)[2]) {
|
|
case Arg::Tmp:
|
|
#if CPU(ARM64E)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::AtomicXchgXor64:
|
|
switch (sizeof...(Arguments)) {
|
|
case 3:
|
|
switch (opgenHiddenPtrIdentity(kinds)[0]) {
|
|
case Arg::Tmp:
|
|
switch (opgenHiddenPtrIdentity(kinds)[1]) {
|
|
case Arg::SimpleAddr:
|
|
switch (opgenHiddenPtrIdentity(kinds)[2]) {
|
|
case Arg::Tmp:
|
|
#if CPU(ARM64E)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::BranchTestBit64:
|
|
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::Imm:
|
|
#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::Addr:
|
|
case Arg::Stack:
|
|
case Arg::CallArg:
|
|
switch (opgenHiddenPtrIdentity(kinds)[2]) {
|
|
case Arg::Imm:
|
|
#if CPU(X86_64)
|
|
OPGEN_RETURN(true);
|
|
#endif
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::BranchTestBit32:
|
|
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::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::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;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::MemoryFence:
|
|
switch (sizeof...(Arguments)) {
|
|
case 0:
|
|
OPGEN_RETURN(true);
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::StoreFence:
|
|
switch (sizeof...(Arguments)) {
|
|
case 0:
|
|
OPGEN_RETURN(true);
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::LoadFence:
|
|
switch (sizeof...(Arguments)) {
|
|
case 0:
|
|
OPGEN_RETURN(true);
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::Jump:
|
|
switch (sizeof...(Arguments)) {
|
|
case 0:
|
|
OPGEN_RETURN(true);
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::RetVoid:
|
|
switch (sizeof...(Arguments)) {
|
|
case 0:
|
|
OPGEN_RETURN(true);
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::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 Opcode::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 Opcode::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 Opcode::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 Opcode::Oops:
|
|
switch (sizeof...(Arguments)) {
|
|
case 0:
|
|
OPGEN_RETURN(true);
|
|
break;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case Opcode::EntrySwitch:
|
|
OPGEN_RETURN(EntrySwitchCustom::isValidFormStatic(arguments...));
|
|
break;
|
|
case Opcode::Shuffle:
|
|
OPGEN_RETURN(ShuffleCustom::isValidFormStatic(arguments...));
|
|
break;
|
|
case Opcode::Patch:
|
|
OPGEN_RETURN(PatchCustom::isValidFormStatic(arguments...));
|
|
break;
|
|
case Opcode::CCall:
|
|
OPGEN_RETURN(CCallCustom::isValidFormStatic(arguments...));
|
|
break;
|
|
case Opcode::ColdCCall:
|
|
OPGEN_RETURN(ColdCCallCustom::isValidFormStatic(arguments...));
|
|
break;
|
|
case Opcode::WasmBoundsCheck:
|
|
OPGEN_RETURN(WasmBoundsCheckCustom::isValidFormStatic(arguments...));
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
return false;
|
|
}
|
|
inline bool isDefinitelyTerminal(Opcode opcode)
|
|
{
|
|
switch (opcode) {
|
|
case Opcode::BranchAtomicStrongCAS8:
|
|
case Opcode::BranchAtomicStrongCAS16:
|
|
case Opcode::BranchAtomicStrongCAS32:
|
|
case Opcode::BranchAtomicStrongCAS64:
|
|
case Opcode::Branch8:
|
|
case Opcode::Branch32:
|
|
case Opcode::Branch64:
|
|
case Opcode::BranchTest8:
|
|
case Opcode::BranchTest32:
|
|
case Opcode::BranchTest64:
|
|
case Opcode::BranchTestBit64:
|
|
case Opcode::BranchTestBit32:
|
|
case Opcode::BranchDouble:
|
|
case Opcode::BranchFloat:
|
|
case Opcode::BranchAdd32:
|
|
case Opcode::BranchAdd64:
|
|
case Opcode::BranchMul32:
|
|
case Opcode::BranchMul64:
|
|
case Opcode::BranchSub32:
|
|
case Opcode::BranchSub64:
|
|
case Opcode::BranchNeg32:
|
|
case Opcode::BranchNeg64:
|
|
case Opcode::Jump:
|
|
case Opcode::RetVoid:
|
|
case Opcode::Ret32:
|
|
case Opcode::Ret64:
|
|
case Opcode::RetFloat:
|
|
case Opcode::RetDouble:
|
|
case Opcode::Oops:
|
|
return true;
|
|
default:
|
|
return false;
|
|
}
|
|
}
|
|
inline bool isReturn(Opcode opcode)
|
|
{
|
|
switch (opcode) {
|
|
case Opcode::RetVoid:
|
|
case Opcode::Ret32:
|
|
case Opcode::Ret64:
|
|
case Opcode::RetFloat:
|
|
case Opcode::RetDouble:
|
|
return true;
|
|
default:
|
|
return false;
|
|
}
|
|
}
|
|
} } } // namespace JSC::B3::Air
|
|
#endif // AirOpcodeUtils_h
|