You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2986 lines
129 KiB
2986 lines
129 KiB
3 years ago
|
/// @file xed-encoder-0.c
|
||
|
|
||
|
// This file was automatically generated.
|
||
|
// Do not edit this file.
|
||
|
|
||
|
/*BEGIN_LEGAL
|
||
|
|
||
|
Copyright (c) 2021 Intel Corporation
|
||
|
|
||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
you may not use this file except in compliance with the License.
|
||
|
You may obtain a copy of the License at
|
||
|
|
||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||
|
|
||
|
Unless required by applicable law or agreed to in writing, software
|
||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
See the License for the specific language governing permissions and
|
||
|
limitations under the License.
|
||
|
|
||
|
END_LEGAL */
|
||
|
#include "xed-internal-header.h"
|
||
|
#include "xed-encoder.h"
|
||
|
#include "xed-encode-private.h"
|
||
|
#include "xed-enc-operand-lu.h"
|
||
|
#include "xed-operand-accessors.h"
|
||
|
xed_bool_t xed_encode_nonterminal_MODRM_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
xed_bool_t okay;
|
||
|
okay = xed_encode_nonterminal_SIB_REQUIRED_ENCODE_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_SIBSCALE_ENCODE_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_SIBINDEX_ENCODE_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_SIBBASE_ENCODE_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_MODRM_RM_ENCODE_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_MODRM_MOD_ENCODE_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_SEGMENT_DEFAULT_ENCODE_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_SEGMENT_ENCODE_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_SIB_NT_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_DISP_NT_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
return 1;
|
||
|
}
|
||
|
xed_bool_t xed_encode_nonterminal_MODRM_EMIT(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
xed_bool_t okay;
|
||
|
okay = xed_encode_nonterminal_SIB_NT_EMIT(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_DISP_NT_EMIT(xes);
|
||
|
if (!okay) return 0;
|
||
|
return 1;
|
||
|
}
|
||
|
xed_bool_t xed_encode_nonterminal_ISA_ENCODE(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
xed_bool_t okay;
|
||
|
okay = xed_encode_nonterminal_ISA_BINDINGS(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_ISA_EMIT(xes);
|
||
|
if (!okay) return 0;
|
||
|
return 1;
|
||
|
}
|
||
|
xed_bool_t xed_encode_nonterminal_ISA_BINDINGS(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
xed_bool_t okay;
|
||
|
okay = xed_encode_nonterminal_FIXUP_EOSZ_ENC_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_FIXUP_EASZ_ENC_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_ASZ_NONTERM_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_INSTRUCTIONS_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_OSZ_NONTERM_ENC_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_PREFIX_ENC_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VEXED_REX_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
return 1;
|
||
|
}
|
||
|
xed_bool_t xed_encode_nonterminal_ISA_EMIT(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
xed_bool_t okay;
|
||
|
okay = xed_encode_nonterminal_PREFIX_ENC_EMIT(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VEXED_REX_EMIT(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_INSTRUCTIONS_EMIT(xes);
|
||
|
if (!okay) return 0;
|
||
|
return 1;
|
||
|
}
|
||
|
xed_bool_t xed_encode_nonterminal_XOP_ENC_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
xed_bool_t okay;
|
||
|
okay = xed_encode_nonterminal_XOP_TYPE_ENC_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VEX_REXR_ENC_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_XOP_REXXB_ENC_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_XOP_MAP_ENC_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VEX_REG_ENC_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VEX_ESCVL_ENC_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
return 1;
|
||
|
}
|
||
|
xed_bool_t xed_encode_nonterminal_XOP_ENC_EMIT(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
xed_bool_t okay;
|
||
|
okay = xed_encode_nonterminal_XOP_TYPE_ENC_EMIT(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VEX_REXR_ENC_EMIT(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_XOP_REXXB_ENC_EMIT(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_XOP_MAP_ENC_EMIT(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VEX_REG_ENC_EMIT(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VEX_ESCVL_ENC_EMIT(xes);
|
||
|
if (!okay) return 0;
|
||
|
return 1;
|
||
|
}
|
||
|
xed_bool_t xed_encode_nonterminal_NEWVEX_ENC_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
xed_bool_t okay;
|
||
|
okay = xed_encode_nonterminal_VEX_TYPE_ENC_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VEX_REXR_ENC_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VEX_REXXB_ENC_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VEX_MAP_ENC_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VEX_REG_ENC_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VEX_ESCVL_ENC_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
return 1;
|
||
|
}
|
||
|
xed_bool_t xed_encode_nonterminal_NEWVEX_ENC_EMIT(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
xed_bool_t okay;
|
||
|
okay = xed_encode_nonterminal_VEX_TYPE_ENC_EMIT(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VEX_REXR_ENC_EMIT(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VEX_REXXB_ENC_EMIT(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VEX_MAP_ENC_EMIT(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VEX_REG_ENC_EMIT(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VEX_ESCVL_ENC_EMIT(xes);
|
||
|
if (!okay) return 0;
|
||
|
return 1;
|
||
|
}
|
||
|
xed_bool_t xed_encode_nonterminal_VMODRM_XMM_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
xed_bool_t okay;
|
||
|
okay = xed_encode_nonterminal_VMODRM_MOD_ENCODE_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VSIB_ENC_BASE_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VSIB_ENC_INDEX_XMM_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VSIB_ENC_SCALE_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VSIB_ENC_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_SEGMENT_DEFAULT_ENCODE_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_SEGMENT_ENCODE_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_DISP_NT_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
return 1;
|
||
|
}
|
||
|
xed_bool_t xed_encode_nonterminal_VMODRM_YMM_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
xed_bool_t okay;
|
||
|
okay = xed_encode_nonterminal_VMODRM_MOD_ENCODE_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VSIB_ENC_BASE_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VSIB_ENC_INDEX_YMM_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VSIB_ENC_SCALE_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VSIB_ENC_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_SEGMENT_DEFAULT_ENCODE_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_SEGMENT_ENCODE_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_DISP_NT_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
return 1;
|
||
|
}
|
||
|
xed_bool_t xed_encode_nonterminal_VMODRM_XMM_EMIT(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
xed_bool_t okay;
|
||
|
okay = xed_encode_nonterminal_VSIB_ENC_EMIT(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_DISP_NT_EMIT(xes);
|
||
|
if (!okay) return 0;
|
||
|
return 1;
|
||
|
}
|
||
|
xed_bool_t xed_encode_nonterminal_VMODRM_YMM_EMIT(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
xed_bool_t okay;
|
||
|
okay = xed_encode_nonterminal_VSIB_ENC_EMIT(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_DISP_NT_EMIT(xes);
|
||
|
if (!okay) return 0;
|
||
|
return 1;
|
||
|
}
|
||
|
xed_bool_t xed_encode_nonterminal_EVEX_ENC_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
xed_bool_t okay;
|
||
|
okay = xed_encode_nonterminal_EVEX_62_REXR_ENC_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_EVEX_REXX_ENC_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_EVEX_REXB_ENC_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_EVEX_REXRR_ENC_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_EVEX_MAP_ENC_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_EVEX_REXW_VVVV_ENC_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_EVEX_UPP_ENC_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_EVEX_LL_ENC_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_AVX512_EVEX_BYTE3_ENC_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
return 1;
|
||
|
}
|
||
|
xed_bool_t xed_encode_nonterminal_EVEX_ENC_EMIT(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
xed_bool_t okay;
|
||
|
okay = xed_encode_nonterminal_EVEX_62_REXR_ENC_EMIT(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_EVEX_REXX_ENC_EMIT(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_EVEX_REXB_ENC_EMIT(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_EVEX_REXRR_ENC_EMIT(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_EVEX_MAP_ENC_EMIT(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_EVEX_REXW_VVVV_ENC_EMIT(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_EVEX_UPP_ENC_EMIT(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_EVEX_LL_ENC_EMIT(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_AVX512_EVEX_BYTE3_ENC_EMIT(xes);
|
||
|
if (!okay) return 0;
|
||
|
return 1;
|
||
|
}
|
||
|
xed_bool_t xed_encode_nonterminal_NEWVEX3_ENC_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
xed_bool_t okay;
|
||
|
okay = xed_encode_nonterminal_VEX_TYPE_ENC_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VEX_REXR_ENC_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VEX_REXXB_ENC_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VEX_MAP_ENC_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VEX_REG_ENC_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VEX_ESCVL_ENC_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
return 1;
|
||
|
}
|
||
|
xed_bool_t xed_encode_nonterminal_NEWVEX3_ENC_EMIT(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
xed_bool_t okay;
|
||
|
okay = xed_encode_nonterminal_VEX_TYPE_ENC_EMIT(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VEX_REXR_ENC_EMIT(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VEX_REXXB_ENC_EMIT(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VEX_MAP_ENC_EMIT(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VEX_REG_ENC_EMIT(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VEX_ESCVL_ENC_EMIT(xes);
|
||
|
if (!okay) return 0;
|
||
|
return 1;
|
||
|
}
|
||
|
xed_bool_t xed_encode_nonterminal_UISA_VMODRM_ZMM_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
xed_bool_t okay;
|
||
|
okay = xed_encode_nonterminal_VMODRM_MOD_ENCODE_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VSIB_ENC_BASE_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_UISA_ENC_INDEX_ZMM_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VSIB_ENC_SCALE_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VSIB_ENC_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_SEGMENT_DEFAULT_ENCODE_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_SEGMENT_ENCODE_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_DISP_NT_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
return 1;
|
||
|
}
|
||
|
xed_bool_t xed_encode_nonterminal_UISA_VMODRM_YMM_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
xed_bool_t okay;
|
||
|
okay = xed_encode_nonterminal_VMODRM_MOD_ENCODE_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VSIB_ENC_BASE_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_UISA_ENC_INDEX_YMM_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VSIB_ENC_SCALE_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VSIB_ENC_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_SEGMENT_DEFAULT_ENCODE_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_SEGMENT_ENCODE_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_DISP_NT_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
return 1;
|
||
|
}
|
||
|
xed_bool_t xed_encode_nonterminal_UISA_VMODRM_XMM_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
xed_bool_t okay;
|
||
|
okay = xed_encode_nonterminal_VMODRM_MOD_ENCODE_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VSIB_ENC_BASE_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_UISA_ENC_INDEX_XMM_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VSIB_ENC_SCALE_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_VSIB_ENC_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_SEGMENT_DEFAULT_ENCODE_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_SEGMENT_ENCODE_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_DISP_NT_BIND(xes);
|
||
|
if (!okay) return 0;
|
||
|
return 1;
|
||
|
}
|
||
|
xed_bool_t xed_encode_nonterminal_UISA_VMODRM_ZMM_EMIT(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
xed_bool_t okay;
|
||
|
okay = xed_encode_nonterminal_VSIB_ENC_EMIT(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_DISP_NT_EMIT(xes);
|
||
|
if (!okay) return 0;
|
||
|
return 1;
|
||
|
}
|
||
|
xed_bool_t xed_encode_nonterminal_UISA_VMODRM_YMM_EMIT(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
xed_bool_t okay;
|
||
|
okay = xed_encode_nonterminal_VSIB_ENC_EMIT(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_DISP_NT_EMIT(xes);
|
||
|
if (!okay) return 0;
|
||
|
return 1;
|
||
|
}
|
||
|
xed_bool_t xed_encode_nonterminal_UISA_VMODRM_XMM_EMIT(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
xed_bool_t okay;
|
||
|
okay = xed_encode_nonterminal_VSIB_ENC_EMIT(xes);
|
||
|
if (!okay) return 0;
|
||
|
okay = xed_encode_nonterminal_DISP_NT_EMIT(xes);
|
||
|
if (!okay) return 0;
|
||
|
return 1;
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_SEGMENT_DEFAULT_ENCODE_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct {xed_uint32_t key; xed_int8_t default_seg;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[108] = {
|
||
|
/*h(0)=0 BASE0=@ -> FB DEFAULT_SEG=0 value=0x0*/ {0, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(1078)=2 BASE0=XED_REG_ESP EASZ=2 -> FB DEFAULT_SEG=1 value=0x1*/ {1078, 1},
|
||
|
/*h(1617)=3 BASE0=XED_REG_R15 EASZ=3 -> FB DEFAULT_SEG=0 value=0x0*/ {1617, 0},
|
||
|
/*h(1083)=4 BASE0=XED_REG_R9D EASZ=2 -> FB DEFAULT_SEG=0 value=0x0*/ {1083, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(1602)=7 BASE0=XED_REG_RAX EASZ=3 -> FB DEFAULT_SEG=0 value=0x0*/ {1602, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(1607)=9 BASE0=XED_REG_RBP EASZ=3 -> FB DEFAULT_SEG=1 value=0x1*/ {1607, 1},
|
||
|
/*h(547)=10 BASE0=XED_REG_CX EASZ=1 -> FB DEFAULT_SEG=0 value=0x0*/ {547, 0},
|
||
|
/*h(1086)=11 BASE0=XED_REG_R12D EASZ=2 -> FB DEFAULT_SEG=0 value=0x0*/ {1086, 0},
|
||
|
/*h(552)=12 BASE0=XED_REG_SI EASZ=1 -> FB DEFAULT_SEG=0 value=0x0*/ {552, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(1610)=16 BASE0=XED_REG_R8 EASZ=3 -> FB DEFAULT_SEG=0 value=0x0*/ {1610, 0},
|
||
|
/*h(1076)=17 BASE0=XED_REG_EDX EASZ=2 -> FB DEFAULT_SEG=0 value=0x0*/ {1076, 0},
|
||
|
/*h(1615)=18 BASE0=XED_REG_R13 EASZ=3 -> FB DEFAULT_SEG=0 value=0x0*/ {1615, 0},
|
||
|
/*h(555)=19 BASE0=XED_REG_R9W EASZ=1 -> FB DEFAULT_SEG=0 value=0x0*/ {555, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(560)=21 BASE0=XED_REG_R14W EASZ=1 -> FB DEFAULT_SEG=0 value=0x0*/ {560, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(1079)=24 BASE0=XED_REG_EBP EASZ=2 -> FB DEFAULT_SEG=1 value=0x1*/ {1079, 1},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(1084)=26 BASE0=XED_REG_R10D EASZ=2 -> FB DEFAULT_SEG=0 value=0x0*/ {1084, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(1603)=29 BASE0=XED_REG_RCX EASZ=3 -> FB DEFAULT_SEG=0 value=0x0*/ {1603, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(1608)=31 BASE0=XED_REG_RSI EASZ=3 -> FB DEFAULT_SEG=0 value=0x0*/ {1608, 0},
|
||
|
/*h(548)=32 BASE0=XED_REG_DX EASZ=1 -> FB DEFAULT_SEG=0 value=0x0*/ {548, 0},
|
||
|
/*h(1087)=33 BASE0=XED_REG_R13D EASZ=2 -> FB DEFAULT_SEG=0 value=0x0*/ {1087, 0},
|
||
|
/*h(553)=34 BASE0=XED_REG_DI EASZ=1 -> FB DEFAULT_SEG=0 value=0x0*/ {553, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(1611)=38 BASE0=XED_REG_R9 EASZ=3 -> FB DEFAULT_SEG=0 value=0x0*/ {1611, 0},
|
||
|
/*h(1077)=39 BASE0=XED_REG_EBX EASZ=2 -> FB DEFAULT_SEG=0 value=0x0*/ {1077, 0},
|
||
|
/*h(1616)=40 BASE0=XED_REG_R14 EASZ=3 -> FB DEFAULT_SEG=0 value=0x0*/ {1616, 0},
|
||
|
/*h(556)=41 BASE0=XED_REG_R10W EASZ=1 -> FB DEFAULT_SEG=0 value=0x0*/ {556, 0},
|
||
|
/*h(1024)=42 BASE0=@ -> FB DEFAULT_SEG=0 value=0x0*/ {1024, 0},
|
||
|
/*h(561)=43 BASE0=XED_REG_R15W EASZ=1 -> FB DEFAULT_SEG=0 value=0x0*/ {561, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(1639)=45 BASE0=XED_REG_RIP EASZ=3 -> nothing*/ {1639, -1},
|
||
|
/*h(1080)=46 BASE0=XED_REG_ESI EASZ=2 -> FB DEFAULT_SEG=0 value=0x0*/ {1080, 0},
|
||
|
/*h(546)=47 BASE0=XED_REG_AX EASZ=1 -> FB DEFAULT_SEG=0 value=0x0*/ {546, 0},
|
||
|
/*h(1085)=48 BASE0=XED_REG_R11D EASZ=2 -> FB DEFAULT_SEG=0 value=0x0*/ {1085, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(1604)=51 BASE0=XED_REG_RDX EASZ=3 -> FB DEFAULT_SEG=0 value=0x0*/ {1604, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(1609)=53 BASE0=XED_REG_RDI EASZ=3 -> FB DEFAULT_SEG=0 value=0x0*/ {1609, 0},
|
||
|
/*h(549)=54 BASE0=XED_REG_BX EASZ=1 -> FB DEFAULT_SEG=0 value=0x0*/ {549, 0},
|
||
|
/*h(1088)=55 BASE0=XED_REG_R14D EASZ=2 -> FB DEFAULT_SEG=0 value=0x0*/ {1088, 0},
|
||
|
/*h(554)=56 BASE0=XED_REG_R8W EASZ=1 -> FB DEFAULT_SEG=0 value=0x0*/ {554, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(1536)=58 BASE0=@ -> FB DEFAULT_SEG=0 value=0x0*/ {1536, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(1612)=60 BASE0=XED_REG_R10 EASZ=3 -> FB DEFAULT_SEG=0 value=0x0*/ {1612, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(557)=63 BASE0=XED_REG_R11W EASZ=1 -> FB DEFAULT_SEG=0 value=0x0*/ {557, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(1081)=68 BASE0=XED_REG_EDI EASZ=2 -> FB DEFAULT_SEG=0 value=0x0*/ {1081, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(1605)=73 BASE0=XED_REG_RBX EASZ=3 -> FB DEFAULT_SEG=0 value=0x0*/ {1605, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(512)=75 BASE0=@ -> FB DEFAULT_SEG=0 value=0x0*/ {512, 0},
|
||
|
/*h(550)=76 BASE0=XED_REG_SP EASZ=1 -> FB DEFAULT_SEG=1 value=0x1*/ {550, 1},
|
||
|
/*h(1089)=77 BASE0=XED_REG_R15D EASZ=2 -> FB DEFAULT_SEG=0 value=0x0*/ {1089, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(1074)=81 BASE0=XED_REG_EAX EASZ=2 -> FB DEFAULT_SEG=0 value=0x0*/ {1074, 0},
|
||
|
/*h(1613)=82 BASE0=XED_REG_R11 EASZ=3 -> FB DEFAULT_SEG=0 value=0x0*/ {1613, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(558)=85 BASE0=XED_REG_R12W EASZ=1 -> FB DEFAULT_SEG=0 value=0x0*/ {558, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(1082)=90 BASE0=XED_REG_R8D EASZ=2 -> FB DEFAULT_SEG=0 value=0x0*/ {1082, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(1606)=95 BASE0=XED_REG_RSP EASZ=3 -> FB DEFAULT_SEG=1 value=0x1*/ {1606, 1},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(551)=98 BASE0=XED_REG_BP EASZ=1 -> FB DEFAULT_SEG=1 value=0x1*/ {551, 1},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(1128)=100 BASE0=XED_REG_EIP EASZ=2 -> nothing*/ {1128, -1},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(1075)=103 BASE0=XED_REG_ECX EASZ=2 -> FB DEFAULT_SEG=0 value=0x0*/ {1075, 0},
|
||
|
/*h(1614)=104 BASE0=XED_REG_R12 EASZ=3 -> FB DEFAULT_SEG=0 value=0x0*/ {1614, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(559)=107 BASE0=XED_REG_R13W EASZ=1 -> FB DEFAULT_SEG=0 value=0x0*/ {559, 0}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_BASE0_EASZ(xes);
|
||
|
hidx = ((22*key % 167) % 108);
|
||
|
if(lu_table[hidx].key == key) {
|
||
|
if(lu_table[hidx].default_seg >= 0) xed3_operand_set_default_seg(xes,lu_table[hidx].default_seg);
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_SEGMENT_ENCODE_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct {xed_uint32_t key; xed_int8_t seg_ovd;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[28] = {
|
||
|
/*h(0)=0 DEFAULT_SEG=0 SEG0=@ -> FB SEG_OVD=0 value=0x0*/ {0, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(612)=6 DEFAULT_SEG=0 SEG0=XED_REG_GS -> FB SEG_OVD=5 value=0x5*/ {612, 5},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(604)=8 DEFAULT_SEG=0 SEG0=XED_REG_DS -> FB SEG_OVD=0 value=0x0*/ {604, 0},
|
||
|
/*h(596)=9 DEFAULT_SEG=0 SEG0=XED_REG_CS -> FB SEG_OVD=1 value=0x1*/ {596, 1},
|
||
|
/*h(609)=10 DEFAULT_SEG=1 SEG0=XED_REG_FS -> FB SEG_OVD=4 value=0x4*/ {609, 4},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(601)=12 DEFAULT_SEG=1 SEG0=XED_REG_SS -> FB SEG_OVD=0 value=0x0*/ {601, 0},
|
||
|
/*h(593)=13 DEFAULT_SEG=1 SEG0=XED_REG_ES -> FB SEG_OVD=3 value=0x3*/ {593, 3},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(1)=17 DEFAULT_SEG=1 SEG0=@ -> FB SEG_OVD=0 value=0x0*/ {1, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(608)=21 DEFAULT_SEG=0 SEG0=XED_REG_FS -> FB SEG_OVD=4 value=0x4*/ {608, 4},
|
||
|
/*h(600)=22 DEFAULT_SEG=0 SEG0=XED_REG_SS -> FB SEG_OVD=6 value=0x6*/ {600, 6},
|
||
|
/*h(613)=23 DEFAULT_SEG=1 SEG0=XED_REG_GS -> FB SEG_OVD=5 value=0x5*/ {613, 5},
|
||
|
/*h(592)=24 DEFAULT_SEG=0 SEG0=XED_REG_ES -> FB SEG_OVD=3 value=0x3*/ {592, 3},
|
||
|
/*h(605)=25 DEFAULT_SEG=1 SEG0=XED_REG_DS -> FB SEG_OVD=2 value=0x2*/ {605, 2},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(597)=27 DEFAULT_SEG=1 SEG0=XED_REG_CS -> FB SEG_OVD=1 value=0x1*/ {597, 1}
|
||
|
};
|
||
|
xed_union64_t t, u;
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_DEFAULT_SEG_SEG0(xes);
|
||
|
hidx = (t.u64 = 2654435769 * key, u.u64 = t.s.lo32 * 28ULL, u.s.hi32);
|
||
|
if(lu_table[hidx].key == key) {
|
||
|
xed3_operand_set_seg_ovd(xes,lu_table[hidx].seg_ovd);
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
xed3_operand_set_seg_ovd(xes,0);
|
||
|
return 1;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_SIBBASE_ENCODE_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct { xed_nt_func_ptr_t ntptr0;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[2] = {
|
||
|
/*h(0)=0 NEED_SIB=0 -> nothing*/ {0},
|
||
|
/*h(1)=1 NEED_SIB=1 -> nt NT[SIBBASE_ENCODE_SIB1]*/ {xed_encode_nonterminal_SIBBASE_ENCODE_SIB1_BIND}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
xed_uint64_t res = 1;
|
||
|
key = xed_enc_lu_NEED_SIB(xes);
|
||
|
hidx = key - 0;
|
||
|
if(hidx <= 1) {
|
||
|
if(lu_table[hidx].ntptr0 != 0) res=(*lu_table[hidx].ntptr0)(xes);
|
||
|
xed_encoder_request_iforms(xes)->x_SIBBASE_ENCODE=hidx+1;
|
||
|
return res;
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_SIBBASE_ENCODE_SIB1_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct {xed_uint32_t key; xed_int8_t rexb ;xed_int8_t sibbase ;xed_nt_func_ptr_t ntptr0;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[104] = {
|
||
|
/*h(0)=0 BASE0=@ -> nt NT[DISP_WIDTH_32] FB SIBBASE=5 value=0x5 FB REXB=0 value=0x0*/ {0, 0,5,xed_encode_nonterminal_DISP_WIDTH_32_BIND},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(548)=3 BASE0=XED_REG_DX EASZ=1 -> FB SIBBASE=2 value=0x2 FB REXB=0 value=0x0*/ {548, 0,2,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(549)=7 BASE0=XED_REG_BX EASZ=1 -> FB SIBBASE=3 value=0x3 FB REXB=0 value=0x0*/ {549, 0,3,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(550)=11 BASE0=XED_REG_SP EASZ=1 -> FB SIBBASE=4 value=0x4 FB REXB=0 value=0x0*/ {550, 0,4,0},
|
||
|
/*h(1024)=12 BASE0=@ -> nt NT[DISP_WIDTH_32] FB SIBBASE=5 value=0x5 FB REXB=0 value=0x0*/ {1024, 0,5,xed_encode_nonterminal_DISP_WIDTH_32_BIND},
|
||
|
/*h(1074)=13 BASE0=XED_REG_EAX EASZ=2 -> FB SIBBASE=0 value=0x0 FB REXB=0 value=0x0*/ {1074, 0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(551)=15 BASE0=XED_REG_BP EASZ=1 -> nt NT[DISP_WIDTH_0_8_32] FB SIBBASE=5 value=0x5 FB REXB=0 value=0x0*/ {551, 0,5,xed_encode_nonterminal_DISP_WIDTH_0_8_32_BIND},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1075)=17 BASE0=XED_REG_ECX EASZ=2 -> FB SIBBASE=1 value=0x1 FB REXB=0 value=0x0*/ {1075, 0,1,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(552)=19 BASE0=XED_REG_SI EASZ=1 -> FB SIBBASE=6 value=0x6 FB REXB=0 value=0x0*/ {552, 0,6,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1076)=21 BASE0=XED_REG_EDX EASZ=2 -> FB SIBBASE=2 value=0x2 FB REXB=0 value=0x0*/ {1076, 0,2,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(553)=23 BASE0=XED_REG_DI EASZ=1 -> FB SIBBASE=7 value=0x7 FB REXB=0 value=0x0*/ {553, 0,7,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1077)=25 BASE0=XED_REG_EBX EASZ=2 -> FB SIBBASE=3 value=0x3 FB REXB=0 value=0x0*/ {1077, 0,3,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(554)=27 BASE0=XED_REG_R8W EASZ=1 -> FB SIBBASE=0 value=0x0 FB REXB=1 value=0x1*/ {554, 1,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1078)=29 BASE0=XED_REG_ESP EASZ=2 -> FB SIBBASE=4 value=0x4 FB REXB=0 value=0x0*/ {1078, 0,4,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(555)=31 BASE0=XED_REG_R9W EASZ=1 -> FB SIBBASE=1 value=0x1 FB REXB=1 value=0x1*/ {555, 1,1,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1079)=33 BASE0=XED_REG_EBP EASZ=2 -> nt NT[DISP_WIDTH_0_8_32] FB SIBBASE=5 value=0x5 FB REXB=0 value=0x0*/ {1079, 0,5,xed_encode_nonterminal_DISP_WIDTH_0_8_32_BIND},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(556)=35 BASE0=XED_REG_R10W EASZ=1 -> FB SIBBASE=2 value=0x2 FB REXB=1 value=0x1*/ {556, 1,2,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1080)=37 BASE0=XED_REG_ESI EASZ=2 -> FB SIBBASE=6 value=0x6 FB REXB=0 value=0x0*/ {1080, 0,6,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(557)=39 BASE0=XED_REG_R11W EASZ=1 -> FB SIBBASE=3 value=0x3 FB REXB=1 value=0x1*/ {557, 1,3,0},
|
||
|
/*h(1602)=40 BASE0=XED_REG_RAX EASZ=3 -> FB SIBBASE=0 value=0x0 FB REXB=0 value=0x0*/ {1602, 0,0,0},
|
||
|
/*h(1081)=41 BASE0=XED_REG_EDI EASZ=2 -> FB SIBBASE=7 value=0x7 FB REXB=0 value=0x0*/ {1081, 0,7,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(558)=43 BASE0=XED_REG_R12W EASZ=1 -> FB SIBBASE=4 value=0x4 FB REXB=1 value=0x1*/ {558, 1,4,0},
|
||
|
/*h(1603)=44 BASE0=XED_REG_RCX EASZ=3 -> FB SIBBASE=1 value=0x1 FB REXB=0 value=0x0*/ {1603, 0,1,0},
|
||
|
/*h(1082)=45 BASE0=XED_REG_R8D EASZ=2 -> FB SIBBASE=0 value=0x0 FB REXB=1 value=0x1*/ {1082, 1,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(559)=47 BASE0=XED_REG_R13W EASZ=1 -> nt NT[DISP_WIDTH_0_8_32] FB SIBBASE=5 value=0x5 FB REXB=1 value=0x1*/ {559, 1,5,xed_encode_nonterminal_DISP_WIDTH_0_8_32_BIND},
|
||
|
/*h(1604)=48 BASE0=XED_REG_RDX EASZ=3 -> FB SIBBASE=2 value=0x2 FB REXB=0 value=0x0*/ {1604, 0,2,0},
|
||
|
/*h(1083)=49 BASE0=XED_REG_R9D EASZ=2 -> FB SIBBASE=1 value=0x1 FB REXB=1 value=0x1*/ {1083, 1,1,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(560)=51 BASE0=XED_REG_R14W EASZ=1 -> FB SIBBASE=6 value=0x6 FB REXB=1 value=0x1*/ {560, 1,6,0},
|
||
|
/*h(1605)=52 BASE0=XED_REG_RBX EASZ=3 -> FB SIBBASE=3 value=0x3 FB REXB=0 value=0x0*/ {1605, 0,3,0},
|
||
|
/*h(1084)=53 BASE0=XED_REG_R10D EASZ=2 -> FB SIBBASE=2 value=0x2 FB REXB=1 value=0x1*/ {1084, 1,2,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(561)=55 BASE0=XED_REG_R15W EASZ=1 -> FB SIBBASE=7 value=0x7 FB REXB=1 value=0x1*/ {561, 1,7,0},
|
||
|
/*h(1606)=56 BASE0=XED_REG_RSP EASZ=3 -> FB SIBBASE=4 value=0x4 FB REXB=0 value=0x0*/ {1606, 0,4,0},
|
||
|
/*h(1085)=57 BASE0=XED_REG_R11D EASZ=2 -> FB SIBBASE=3 value=0x3 FB REXB=1 value=0x1*/ {1085, 1,3,0},
|
||
|
/*h(512)=58 BASE0=@ -> nt NT[DISP_WIDTH_32] FB SIBBASE=5 value=0x5 FB REXB=0 value=0x0*/ {512, 0,5,xed_encode_nonterminal_DISP_WIDTH_32_BIND},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1607)=60 BASE0=XED_REG_RBP EASZ=3 -> nt NT[DISP_WIDTH_0_8_32] FB SIBBASE=5 value=0x5 FB REXB=0 value=0x0*/ {1607, 0,5,xed_encode_nonterminal_DISP_WIDTH_0_8_32_BIND},
|
||
|
/*h(1086)=61 BASE0=XED_REG_R12D EASZ=2 -> FB SIBBASE=4 value=0x4 FB REXB=1 value=0x1*/ {1086, 1,4,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1608)=64 BASE0=XED_REG_RSI EASZ=3 -> FB SIBBASE=6 value=0x6 FB REXB=0 value=0x0*/ {1608, 0,6,0},
|
||
|
/*h(1087)=65 BASE0=XED_REG_R13D EASZ=2 -> nt NT[DISP_WIDTH_0_8_32] FB SIBBASE=5 value=0x5 FB REXB=1 value=0x1*/ {1087, 1,5,xed_encode_nonterminal_DISP_WIDTH_0_8_32_BIND},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1609)=68 BASE0=XED_REG_RDI EASZ=3 -> FB SIBBASE=7 value=0x7 FB REXB=0 value=0x0*/ {1609, 0,7,0},
|
||
|
/*h(1088)=69 BASE0=XED_REG_R14D EASZ=2 -> FB SIBBASE=6 value=0x6 FB REXB=1 value=0x1*/ {1088, 1,6,0},
|
||
|
/*h(1536)=70 BASE0=@ -> nt NT[DISP_WIDTH_32] FB SIBBASE=5 value=0x5 FB REXB=0 value=0x0*/ {1536, 0,5,xed_encode_nonterminal_DISP_WIDTH_32_BIND},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1610)=72 BASE0=XED_REG_R8 EASZ=3 -> FB SIBBASE=0 value=0x0 FB REXB=1 value=0x1*/ {1610, 1,0,0},
|
||
|
/*h(1089)=73 BASE0=XED_REG_R15D EASZ=2 -> FB SIBBASE=7 value=0x7 FB REXB=1 value=0x1*/ {1089, 1,7,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1611)=76 BASE0=XED_REG_R9 EASZ=3 -> FB SIBBASE=1 value=0x1 FB REXB=1 value=0x1*/ {1611, 1,1,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1612)=80 BASE0=XED_REG_R10 EASZ=3 -> FB SIBBASE=2 value=0x2 FB REXB=1 value=0x1*/ {1612, 1,2,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1613)=84 BASE0=XED_REG_R11 EASZ=3 -> FB SIBBASE=3 value=0x3 FB REXB=1 value=0x1*/ {1613, 1,3,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1614)=88 BASE0=XED_REG_R12 EASZ=3 -> FB SIBBASE=4 value=0x4 FB REXB=1 value=0x1*/ {1614, 1,4,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(546)=90 BASE0=XED_REG_AX EASZ=1 -> FB SIBBASE=0 value=0x0 FB REXB=0 value=0x0*/ {546, 0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1615)=92 BASE0=XED_REG_R13 EASZ=3 -> nt NT[DISP_WIDTH_0_8_32] FB SIBBASE=5 value=0x5 FB REXB=1 value=0x1*/ {1615, 1,5,xed_encode_nonterminal_DISP_WIDTH_0_8_32_BIND},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(547)=94 BASE0=XED_REG_CX EASZ=1 -> FB SIBBASE=1 value=0x1 FB REXB=0 value=0x0*/ {547, 0,1,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1616)=96 BASE0=XED_REG_R14 EASZ=3 -> FB SIBBASE=6 value=0x6 FB REXB=1 value=0x1*/ {1616, 1,6,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1617)=100 BASE0=XED_REG_R15 EASZ=3 -> FB SIBBASE=7 value=0x7 FB REXB=1 value=0x1*/ {1617, 1,7,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
xed_uint64_t res = 1;
|
||
|
key = xed_enc_lu_BASE0_EASZ(xes);
|
||
|
hidx = ((4*key % 199) % 104);
|
||
|
if(lu_table[hidx].key == key) {
|
||
|
xed3_operand_set_rexb(xes,lu_table[hidx].rexb);
|
||
|
xed3_operand_set_sibbase(xes,lu_table[hidx].sibbase);
|
||
|
if(lu_table[hidx].ntptr0 != 0) res=(*lu_table[hidx].ntptr0)(xes);
|
||
|
xed_encoder_request_iforms(xes)->x_SIBBASE_ENCODE_SIB1=hidx+1;
|
||
|
return res;
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
xed3_operand_set_error(xes,XED_ERROR_GENERAL_ERROR);
|
||
|
return 1;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_SIBINDEX_ENCODE_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct { xed_nt_func_ptr_t ntptr0;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[2] = {
|
||
|
/*h(0)=0 NEED_SIB=0 -> nothing*/ {0},
|
||
|
/*h(1)=1 NEED_SIB=1 -> nt NT[SIBINDEX_ENCODE_SIB1]*/ {xed_encode_nonterminal_SIBINDEX_ENCODE_SIB1_BIND}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
xed_uint64_t res = 1;
|
||
|
key = xed_enc_lu_NEED_SIB(xes);
|
||
|
hidx = key - 0;
|
||
|
if(hidx <= 1) {
|
||
|
if(lu_table[hidx].ntptr0 != 0) res=(*lu_table[hidx].ntptr0)(xes);
|
||
|
xed_encoder_request_iforms(xes)->x_SIBINDEX_ENCODE=hidx+1;
|
||
|
return res;
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_SIBINDEX_ENCODE_SIB1_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct {xed_uint32_t key; xed_int8_t rexx ;xed_int8_t sibindex;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[98] = {
|
||
|
/*h(0)=0 INDEX=@ -> FB SIBINDEX=4 value=0x4 FB REXX=0 value=0x0*/ {0, 0,4},
|
||
|
/*h(319)=1 INDEX=XED_REG_R13 EASZ=3 -> FB SIBINDEX=5 value=0x5 FB REXX=1 value=0x1*/ {319, 1,5},
|
||
|
/*h(291)=2 INDEX=XED_REG_RSI EASZ=3 -> FB SIBINDEX=6 value=0x6 FB REXX=0 value=0x0*/ {291, 0,6},
|
||
|
/*h(197)=3 INDEX=XED_REG_R15W EASZ=1 -> FB SIBINDEX=7 value=0x7 FB REXX=1 value=0x1*/ {197, 1,7},
|
||
|
/*h(169)=4 INDEX=XED_REG_R8W EASZ=1 -> FB SIBINDEX=0 value=0x0 FB REXX=1 value=0x1*/ {169, 1,0},
|
||
|
/*h(141)=5 INDEX=XED_REG_CX EASZ=1 -> FB SIBINDEX=1 value=0x1 FB REXX=0 value=0x0*/ {141, 0,1},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*h(189)=8 INDEX=XED_REG_R13W EASZ=1 -> FB SIBINDEX=5 value=0x5 FB REXX=1 value=0x1*/ {189, 1,5},
|
||
|
/*h(161)=9 INDEX=XED_REG_SI EASZ=1 -> FB SIBINDEX=6 value=0x6 FB REXX=0 value=0x0*/ {161, 0,6},
|
||
|
/*h(1)=10 INDEX=@ -> FB SIBINDEX=4 value=0x4 FB REXX=0 value=0x0*/ {1, 0,4},
|
||
|
/*h(254)=11 INDEX=XED_REG_R13D EASZ=2 -> FB SIBINDEX=5 value=0x5 FB REXX=1 value=0x1*/ {254, 1,5},
|
||
|
/*h(226)=12 INDEX=XED_REG_ESI EASZ=2 -> FB SIBINDEX=6 value=0x6 FB REXX=0 value=0x0*/ {226, 0,6},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*h(246)=16 INDEX=XED_REG_R11D EASZ=2 -> FB SIBINDEX=3 value=0x3 FB REXX=1 value=0x1*/ {246, 1,3},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*h(311)=19 INDEX=XED_REG_R11 EASZ=3 -> FB SIBINDEX=3 value=0x3 FB REXX=1 value=0x1*/ {311, 1,3},
|
||
|
/*h(2)=20 INDEX=@ -> FB SIBINDEX=4 value=0x4 FB REXX=0 value=0x0*/ {2, 0,4},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*h(303)=24 INDEX=XED_REG_R9 EASZ=3 -> FB SIBINDEX=1 value=0x1 FB REXX=1 value=0x1*/ {303, 1,1},
|
||
|
/*h(275)=25 INDEX=XED_REG_RDX EASZ=3 -> FB SIBINDEX=2 value=0x2 FB REXX=0 value=0x0*/ {275, 0,2},
|
||
|
/*h(181)=26 INDEX=XED_REG_R11W EASZ=1 -> FB SIBINDEX=3 value=0x3 FB REXX=1 value=0x1*/ {181, 1,3},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*h(3)=30 INDEX=@ -> FB SIBINDEX=4 value=0x4 FB REXX=0 value=0x0*/ {3, 0,4},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*h(238)=34 INDEX=XED_REG_R9D EASZ=2 -> FB SIBINDEX=1 value=0x1 FB REXX=1 value=0x1*/ {238, 1,1},
|
||
|
/*h(210)=35 INDEX=XED_REG_EDX EASZ=2 -> FB SIBINDEX=2 value=0x2 FB REXX=0 value=0x0*/ {210, 0,2},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*h(323)=41 INDEX=XED_REG_R14 EASZ=3 -> FB SIBINDEX=6 value=0x6 FB REXX=1 value=0x1*/ {323, 1,6},
|
||
|
/*h(295)=42 INDEX=XED_REG_RDI EASZ=3 -> FB SIBINDEX=7 value=0x7 FB REXX=0 value=0x0*/ {295, 0,7},
|
||
|
/*h(267)=43 INDEX=XED_REG_RAX EASZ=3 -> FB SIBINDEX=0 value=0x0 FB REXX=0 value=0x0*/ {267, 0,0},
|
||
|
/*h(173)=44 INDEX=XED_REG_R9W EASZ=1 -> FB SIBINDEX=1 value=0x1 FB REXX=1 value=0x1*/ {173, 1,1},
|
||
|
/*h(145)=45 INDEX=XED_REG_DX EASZ=1 -> FB SIBINDEX=2 value=0x2 FB REXX=0 value=0x0*/ {145, 0,2},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*h(193)=48 INDEX=XED_REG_R14W EASZ=1 -> FB SIBINDEX=6 value=0x6 FB REXX=1 value=0x1*/ {193, 1,6},
|
||
|
/*h(165)=49 INDEX=XED_REG_DI EASZ=1 -> FB SIBINDEX=7 value=0x7 FB REXX=0 value=0x0*/ {165, 0,7},
|
||
|
/*h(137)=50 INDEX=XED_REG_AX EASZ=1 -> FB SIBINDEX=0 value=0x0 FB REXX=0 value=0x0*/ {137, 0,0},
|
||
|
/*h(258)=51 INDEX=XED_REG_R14D EASZ=2 -> FB SIBINDEX=6 value=0x6 FB REXX=1 value=0x1*/ {258, 1,6},
|
||
|
/*h(230)=52 INDEX=XED_REG_EDI EASZ=2 -> FB SIBINDEX=7 value=0x7 FB REXX=0 value=0x0*/ {230, 0,7},
|
||
|
/*h(202)=53 INDEX=XED_REG_EAX EASZ=2 -> FB SIBINDEX=0 value=0x0 FB REXX=0 value=0x0*/ {202, 0,0},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*h(250)=56 INDEX=XED_REG_R12D EASZ=2 -> FB SIBINDEX=4 value=0x4 FB REXX=1 value=0x1*/ {250, 1,4},
|
||
|
/*h(222)=57 INDEX=XED_REG_EBP EASZ=2 -> FB SIBINDEX=5 value=0x5 FB REXX=0 value=0x0*/ {222, 0,5},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*h(315)=59 INDEX=XED_REG_R12 EASZ=3 -> FB SIBINDEX=4 value=0x4 FB REXX=1 value=0x1*/ {315, 1,4},
|
||
|
/*h(287)=60 INDEX=XED_REG_RBP EASZ=3 -> FB SIBINDEX=5 value=0x5 FB REXX=0 value=0x0*/ {287, 0,5},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*h(307)=64 INDEX=XED_REG_R10 EASZ=3 -> FB SIBINDEX=2 value=0x2 FB REXX=1 value=0x1*/ {307, 1,2},
|
||
|
/*h(279)=65 INDEX=XED_REG_RBX EASZ=3 -> FB SIBINDEX=3 value=0x3 FB REXX=0 value=0x0*/ {279, 0,3},
|
||
|
/*h(185)=66 INDEX=XED_REG_R12W EASZ=1 -> FB SIBINDEX=4 value=0x4 FB REXX=1 value=0x1*/ {185, 1,4},
|
||
|
/*h(157)=67 INDEX=XED_REG_BP EASZ=1 -> FB SIBINDEX=5 value=0x5 FB REXX=0 value=0x0*/ {157, 0,5},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*h(242)=74 INDEX=XED_REG_R10D EASZ=2 -> FB SIBINDEX=2 value=0x2 FB REXX=1 value=0x1*/ {242, 1,2},
|
||
|
/*h(214)=75 INDEX=XED_REG_EBX EASZ=2 -> FB SIBINDEX=3 value=0x3 FB REXX=0 value=0x0*/ {214, 0,3},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*h(327)=81 INDEX=XED_REG_R15 EASZ=3 -> FB SIBINDEX=7 value=0x7 FB REXX=1 value=0x1*/ {327, 1,7},
|
||
|
/*h(299)=82 INDEX=XED_REG_R8 EASZ=3 -> FB SIBINDEX=0 value=0x0 FB REXX=1 value=0x1*/ {299, 1,0},
|
||
|
/*h(271)=83 INDEX=XED_REG_RCX EASZ=3 -> FB SIBINDEX=1 value=0x1 FB REXX=0 value=0x0*/ {271, 0,1},
|
||
|
/*h(177)=84 INDEX=XED_REG_R10W EASZ=1 -> FB SIBINDEX=2 value=0x2 FB REXX=1 value=0x1*/ {177, 1,2},
|
||
|
/*h(149)=85 INDEX=XED_REG_BX EASZ=1 -> FB SIBINDEX=3 value=0x3 FB REXX=0 value=0x0*/ {149, 0,3},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*h(262)=91 INDEX=XED_REG_R15D EASZ=2 -> FB SIBINDEX=7 value=0x7 FB REXX=1 value=0x1*/ {262, 1,7},
|
||
|
/*h(234)=92 INDEX=XED_REG_R8D EASZ=2 -> FB SIBINDEX=0 value=0x0 FB REXX=1 value=0x1*/ {234, 1,0},
|
||
|
/*h(206)=93 INDEX=XED_REG_ECX EASZ=2 -> FB SIBINDEX=1 value=0x1 FB REXX=0 value=0x0*/ {206, 0,1},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*empty slot1 */ {0,0,0}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_EASZ_INDEX(xes);
|
||
|
hidx = ((10*key % 281) % 98);
|
||
|
if(lu_table[hidx].key == key) {
|
||
|
xed3_operand_set_rexx(xes,lu_table[hidx].rexx);
|
||
|
xed3_operand_set_sibindex(xes,lu_table[hidx].sibindex);
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
xed3_operand_set_error(xes,XED_ERROR_GENERAL_ERROR);
|
||
|
return 1;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_SIBSCALE_ENCODE_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct {xed_uint32_t key; xed_int8_t sibscale;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[34] = {
|
||
|
/*h(0)=0 NEED_SIB=0 -> nothing*/ {0, -1},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(26)=2 NEED_SIB=0 -> nothing*/ {26, -1},
|
||
|
/*h(5)=3 NEED_SIB=1 SCALE=2 -> FB SIBSCALE=1 value=0x1*/ {5, 1},
|
||
|
/*h(18)=4 NEED_SIB=0 -> nothing*/ {18, -1},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(10)=6 NEED_SIB=0 -> nothing*/ {10, -1},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(2)=8 NEED_SIB=0 -> nothing*/ {2, -1},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(28)=10 NEED_SIB=0 -> nothing*/ {28, -1},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(20)=12 NEED_SIB=0 -> nothing*/ {20, -1},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(12)=14 NEED_SIB=0 -> nothing*/ {12, -1},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(4)=16 NEED_SIB=0 -> nothing*/ {4, -1},
|
||
|
/*h(17)=17 NEED_SIB=1 SCALE=8 -> FB SIBSCALE=3 value=0x3*/ {17, 3},
|
||
|
/*h(30)=18 NEED_SIB=0 -> nothing*/ {30, -1},
|
||
|
/*h(9)=19 NEED_SIB=1 SCALE=4 -> FB SIBSCALE=2 value=0x2*/ {9, 2},
|
||
|
/*h(22)=20 NEED_SIB=0 -> nothing*/ {22, -1},
|
||
|
/*h(1)=21 NEED_SIB=1 SCALE=0 -> FB SIBSCALE=0 value=0x0*/ {1, 0},
|
||
|
/*h(14)=22 NEED_SIB=0 -> nothing*/ {14, -1},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(6)=24 NEED_SIB=0 -> nothing*/ {6, -1},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(24)=28 NEED_SIB=0 -> nothing*/ {24, -1},
|
||
|
/*h(3)=29 NEED_SIB=1 SCALE=1 -> FB SIBSCALE=0 value=0x0*/ {3, 0},
|
||
|
/*h(16)=30 NEED_SIB=0 -> nothing*/ {16, -1},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(8)=32 NEED_SIB=0 -> nothing*/ {8, -1},
|
||
|
/*empty slot1 */ {0,0}
|
||
|
};
|
||
|
xed_union64_t t, u;
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_NEED_SIB_SCALE(xes);
|
||
|
hidx = (t.u64 = 2654435769 * key, u.u64 = t.s.lo32 * 34ULL, u.s.hi32);
|
||
|
if(lu_table[hidx].key == key) {
|
||
|
if(lu_table[hidx].sibscale >= 0) xed3_operand_set_sibscale(xes,lu_table[hidx].sibscale);
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
xed3_operand_set_error(xes,XED_ERROR_GENERAL_ERROR);
|
||
|
return 1;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_MODRM_MOD_ENCODE_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct {xed_uint32_t key; xed_nt_func_ptr_t ntptr0;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[15] = {
|
||
|
/*h(264)=0 EASZ=2 DISP_WIDTH=8 -> nt NT[MODRM_MOD_EA32_DISP8]*/ {264, xed_encode_nonterminal_MODRM_MOD_EA32_DISP8_BIND},
|
||
|
/*h(416)=1 EASZ=3 DISP_WIDTH=32 -> nt NT[MODRM_MOD_EA64_DISP32]*/ {416, xed_encode_nonterminal_MODRM_MOD_EA64_DISP32_BIND},
|
||
|
/*h(144)=2 EASZ=1 DISP_WIDTH=16 -> nt NT[MODRM_MOD_EA16_DISP16]*/ {144, xed_encode_nonterminal_MODRM_MOD_EA16_DISP16_BIND},
|
||
|
/*h(256)=3 EASZ=2 DISP_WIDTH=0 -> nt NT[MODRM_MOD_EA32_DISP0]*/ {256, xed_encode_nonterminal_MODRM_MOD_EA32_DISP0_BIND},
|
||
|
/*h(448)=4 EASZ=3 DISP_WIDTH=64 -> nt NT[ERROR]*/ {448, xed_encode_nonterminal_ERROR_BIND},
|
||
|
/*h(136)=5 EASZ=1 DISP_WIDTH=8 -> nt NT[MODRM_MOD_EA16_DISP8]*/ {136, xed_encode_nonterminal_MODRM_MOD_EA16_DISP8_BIND},
|
||
|
/*h(288)=6 EASZ=2 DISP_WIDTH=32 -> nt NT[MODRM_MOD_EA32_DISP32]*/ {288, xed_encode_nonterminal_MODRM_MOD_EA32_DISP32_BIND},
|
||
|
/*h(400)=7 EASZ=3 DISP_WIDTH=16 -> nt NT[ERROR]*/ {400, xed_encode_nonterminal_ERROR_BIND},
|
||
|
/*h(128)=8 EASZ=1 DISP_WIDTH=0 -> nt NT[MODRM_MOD_EA16_DISP0]*/ {128, xed_encode_nonterminal_MODRM_MOD_EA16_DISP0_BIND},
|
||
|
/*h(320)=9 EASZ=2 DISP_WIDTH=64 -> nt NT[ERROR]*/ {320, xed_encode_nonterminal_ERROR_BIND},
|
||
|
/*h(392)=10 EASZ=3 DISP_WIDTH=8 -> nt NT[MODRM_MOD_EA64_DISP8]*/ {392, xed_encode_nonterminal_MODRM_MOD_EA64_DISP8_BIND},
|
||
|
/*h(160)=11 EASZ=1 DISP_WIDTH=32 -> nt NT[ERROR]*/ {160, xed_encode_nonterminal_ERROR_BIND},
|
||
|
/*h(272)=12 EASZ=2 DISP_WIDTH=16 -> nt NT[ERROR]*/ {272, xed_encode_nonterminal_ERROR_BIND},
|
||
|
/*h(384)=13 EASZ=3 DISP_WIDTH=0 -> nt NT[MODRM_MOD_EA64_DISP0]*/ {384, xed_encode_nonterminal_MODRM_MOD_EA64_DISP0_BIND},
|
||
|
/*h(192)=14 EASZ=1 DISP_WIDTH=64 -> nt NT[ERROR]*/ {192, xed_encode_nonterminal_ERROR_BIND}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
xed_uint64_t res = 1;
|
||
|
key = xed_enc_lu_DISP_WIDTH_EASZ(xes);
|
||
|
hidx = ((5*key % 43) % 15);
|
||
|
if(lu_table[hidx].key == key) {
|
||
|
if(lu_table[hidx].ntptr0 != 0) res=(*lu_table[hidx].ntptr0)(xes);
|
||
|
xed_encoder_request_iforms(xes)->x_MODRM_MOD_ENCODE=hidx+1;
|
||
|
return res;
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_MODRM_MOD_EA16_DISP0_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct {xed_uint32_t key; xed_int8_t disp ;xed_int8_t disp_width ;xed_int8_t mod;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[8] = {
|
||
|
/*h(37)=0 BASE0=XED_REG_BX INDEX=@ -> FB MOD=0 value=0x0*/ {37, -1,-1,0},
|
||
|
/*h(21029)=1 BASE0=XED_REG_BX INDEX=XED_REG_DI -> FB MOD=0 value=0x0*/ {21029, -1,-1,0},
|
||
|
/*h(20517)=2 BASE0=XED_REG_BX INDEX=XED_REG_SI -> FB MOD=0 value=0x0*/ {20517, -1,-1,0},
|
||
|
/*h(39)=3 BASE0=XED_REG_BP INDEX=@ -> FB MOD=1 value=0x1 FB DISP_WIDTH=8 value=0x8 FB DISP=0 value=0x0*/ {39, 0,8,1},
|
||
|
/*h(21031)=4 BASE0=XED_REG_BP INDEX=XED_REG_DI -> FB MOD=0 value=0x0*/ {21031, -1,-1,0},
|
||
|
/*h(20519)=5 BASE0=XED_REG_BP INDEX=XED_REG_SI -> FB MOD=0 value=0x0*/ {20519, -1,-1,0},
|
||
|
/*h(41)=6 BASE0=XED_REG_DI INDEX=@ -> FB MOD=0 value=0x0*/ {41, -1,-1,0},
|
||
|
/*h(40)=7 BASE0=XED_REG_SI INDEX=@ -> FB MOD=0 value=0x0*/ {40, -1,-1,0}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_BASE0_INDEX(xes);
|
||
|
hidx = ((20*key % 37) % 8);
|
||
|
if(lu_table[hidx].key == key) {
|
||
|
if(lu_table[hidx].disp >= 0) xed3_operand_set_disp(xes,lu_table[hidx].disp);
|
||
|
if(lu_table[hidx].disp_width >= 0) xed3_operand_set_disp_width(xes,lu_table[hidx].disp_width);
|
||
|
xed3_operand_set_mod(xes,lu_table[hidx].mod);
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_MODRM_MOD_EA16_DISP8_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct {xed_uint32_t key; xed_int8_t mod;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[8] = {
|
||
|
/*h(37)=0 BASE0=XED_REG_BX INDEX=@ -> FB MOD=1 value=0x1*/ {37, 1},
|
||
|
/*h(21029)=1 BASE0=XED_REG_BX INDEX=XED_REG_DI -> FB MOD=1 value=0x1*/ {21029, 1},
|
||
|
/*h(20517)=2 BASE0=XED_REG_BX INDEX=XED_REG_SI -> FB MOD=1 value=0x1*/ {20517, 1},
|
||
|
/*h(39)=3 BASE0=XED_REG_BP INDEX=@ -> FB MOD=1 value=0x1*/ {39, 1},
|
||
|
/*h(21031)=4 BASE0=XED_REG_BP INDEX=XED_REG_DI -> FB MOD=1 value=0x1*/ {21031, 1},
|
||
|
/*h(20519)=5 BASE0=XED_REG_BP INDEX=XED_REG_SI -> FB MOD=1 value=0x1*/ {20519, 1},
|
||
|
/*h(41)=6 BASE0=XED_REG_DI INDEX=@ -> FB MOD=1 value=0x1*/ {41, 1},
|
||
|
/*h(40)=7 BASE0=XED_REG_SI INDEX=@ -> FB MOD=1 value=0x1*/ {40, 1}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_BASE0_INDEX(xes);
|
||
|
hidx = ((20*key % 37) % 8);
|
||
|
if(lu_table[hidx].key == key) {
|
||
|
xed3_operand_set_mod(xes,lu_table[hidx].mod);
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_MODRM_MOD_EA16_DISP16_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct {xed_uint32_t key; xed_int8_t mod;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[9] = {
|
||
|
/*h(0)=0 BASE0=@ INDEX=@ -> FB MOD=0 value=0x0*/ {0, 0},
|
||
|
/*h(39)=1 BASE0=XED_REG_BP INDEX=@ -> FB MOD=2 value=0x2*/ {39, 2},
|
||
|
/*h(40)=2 BASE0=XED_REG_SI INDEX=@ -> FB MOD=2 value=0x2*/ {40, 2},
|
||
|
/*h(41)=3 BASE0=XED_REG_DI INDEX=@ -> FB MOD=2 value=0x2*/ {41, 2},
|
||
|
/*h(21029)=4 BASE0=XED_REG_BX INDEX=XED_REG_DI -> FB MOD=2 value=0x2*/ {21029, 2},
|
||
|
/*h(20517)=5 BASE0=XED_REG_BX INDEX=XED_REG_SI -> FB MOD=2 value=0x2*/ {20517, 2},
|
||
|
/*h(21031)=6 BASE0=XED_REG_BP INDEX=XED_REG_DI -> FB MOD=2 value=0x2*/ {21031, 2},
|
||
|
/*h(20519)=7 BASE0=XED_REG_BP INDEX=XED_REG_SI -> FB MOD=2 value=0x2*/ {20519, 2},
|
||
|
/*h(37)=8 BASE0=XED_REG_BX INDEX=@ -> FB MOD=2 value=0x2*/ {37, 2}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_BASE0_INDEX(xes);
|
||
|
hidx = ((30*key % 29) % 9);
|
||
|
if(lu_table[hidx].key == key) {
|
||
|
xed3_operand_set_mod(xes,lu_table[hidx].mod);
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_MODRM_MOD_EA32_DISP0_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct {xed_uint32_t key; xed_int8_t disp ;xed_int8_t disp_width ;xed_int8_t mod;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[24] = {
|
||
|
/*h(566)=0 BASE0=XED_REG_ESP MODE=1 -> FB MOD=0 value=0x0*/ {566, -1,-1,0},
|
||
|
/*h(1075)=1 BASE0=XED_REG_ECX MODE=2 -> FB MOD=0 value=0x0*/ {1075, -1,-1,0},
|
||
|
/*h(1080)=2 BASE0=XED_REG_ESI MODE=2 -> FB MOD=0 value=0x0*/ {1080, -1,-1,0},
|
||
|
/*h(1085)=3 BASE0=XED_REG_R11D MODE=2 -> FB MOD=0 value=0x0*/ {1085, -1,-1,0},
|
||
|
/*h(562)=4 BASE0=XED_REG_EAX MODE=1 -> FB MOD=0 value=0x0*/ {562, -1,-1,0},
|
||
|
/*h(567)=5 BASE0=XED_REG_EBP MODE=1 -> FB MOD=1 value=0x1 FB DISP_WIDTH=8 value=0x8 FB DISP=0 value=0x0*/ {567, 0,8,1},
|
||
|
/*h(1076)=6 BASE0=XED_REG_EDX MODE=2 -> FB MOD=0 value=0x0*/ {1076, -1,-1,0},
|
||
|
/*h(1081)=7 BASE0=XED_REG_EDI MODE=2 -> FB MOD=0 value=0x0*/ {1081, -1,-1,0},
|
||
|
/*h(1086)=8 BASE0=XED_REG_R12D MODE=2 -> FB MOD=0 value=0x0*/ {1086, -1,-1,0},
|
||
|
/*h(563)=9 BASE0=XED_REG_ECX MODE=1 -> FB MOD=0 value=0x0*/ {563, -1,-1,0},
|
||
|
/*h(568)=10 BASE0=XED_REG_ESI MODE=1 -> FB MOD=0 value=0x0*/ {568, -1,-1,0},
|
||
|
/*h(1077)=11 BASE0=XED_REG_EBX MODE=2 -> FB MOD=0 value=0x0*/ {1077, -1,-1,0},
|
||
|
/*h(1082)=12 BASE0=XED_REG_R8D MODE=2 -> FB MOD=0 value=0x0*/ {1082, -1,-1,0},
|
||
|
/*h(1087)=13 BASE0=XED_REG_R13D MODE=2 -> FB MOD=1 value=0x1 FB DISP_WIDTH=8 value=0x8 FB DISP=0 value=0x0*/ {1087, 0,8,1},
|
||
|
/*h(564)=14 BASE0=XED_REG_EDX MODE=1 -> FB MOD=0 value=0x0*/ {564, -1,-1,0},
|
||
|
/*h(569)=15 BASE0=XED_REG_EDI MODE=1 -> FB MOD=0 value=0x0*/ {569, -1,-1,0},
|
||
|
/*h(1078)=16 BASE0=XED_REG_ESP MODE=2 -> FB MOD=0 value=0x0*/ {1078, -1,-1,0},
|
||
|
/*h(1083)=17 BASE0=XED_REG_R9D MODE=2 -> FB MOD=0 value=0x0*/ {1083, -1,-1,0},
|
||
|
/*h(1088)=18 BASE0=XED_REG_R14D MODE=2 -> FB MOD=0 value=0x0*/ {1088, -1,-1,0},
|
||
|
/*h(565)=19 BASE0=XED_REG_EBX MODE=1 -> FB MOD=0 value=0x0*/ {565, -1,-1,0},
|
||
|
/*h(1074)=20 BASE0=XED_REG_EAX MODE=2 -> FB MOD=0 value=0x0*/ {1074, -1,-1,0},
|
||
|
/*h(1079)=21 BASE0=XED_REG_EBP MODE=2 -> FB MOD=1 value=0x1 FB DISP_WIDTH=8 value=0x8 FB DISP=0 value=0x0*/ {1079, 0,8,1},
|
||
|
/*h(1084)=22 BASE0=XED_REG_R10D MODE=2 -> FB MOD=0 value=0x0*/ {1084, -1,-1,0},
|
||
|
/*h(1089)=23 BASE0=XED_REG_R15D MODE=2 -> FB MOD=0 value=0x0*/ {1089, -1,-1,0}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_BASE0_MODE(xes);
|
||
|
hidx = ((5*key % 107) % 24);
|
||
|
if(lu_table[hidx].key == key) {
|
||
|
if(lu_table[hidx].disp >= 0) xed3_operand_set_disp(xes,lu_table[hidx].disp);
|
||
|
if(lu_table[hidx].disp_width >= 0) xed3_operand_set_disp_width(xes,lu_table[hidx].disp_width);
|
||
|
xed3_operand_set_mod(xes,lu_table[hidx].mod);
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_MODRM_MOD_EA32_DISP8_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
xed3_operand_set_mod(xes,1);
|
||
|
return 1;
|
||
|
(void)xes;
|
||
|
return 1;
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_MODRM_MOD_EA32_DISP32_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct {xed_uint32_t key; xed_int8_t mod;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[228] = {
|
||
|
/*h(0)=0 BASE0=@ -> FB MOD=0 value=0x0*/ {0, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(7680)=2 BASE0=@ -> FB MOD=0 value=0x0*/ {7680, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(7168)=11 BASE0=@ -> FB MOD=0 value=0x0*/ {7168, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(6656)=20 BASE0=@ -> FB MOD=0 value=0x0*/ {6656, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(6144)=29 BASE0=@ -> FB MOD=0 value=0x0*/ {6144, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(5632)=38 BASE0=@ -> FB MOD=0 value=0x0*/ {5632, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(5735)=41 MODE=2 BASE0=XED_REG_RIP EASZ=3 -> FB MOD=0 value=0x0*/ {5735, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(5120)=47 BASE0=@ -> FB MOD=0 value=0x0*/ {5120, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(4608)=56 BASE0=@ -> FB MOD=0 value=0x0*/ {4608, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(5224)=58 MODE=2 BASE0=XED_REG_EIP EASZ=2 -> FB MOD=0 value=0x0*/ {5224, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(4096)=65 BASE0=@ -> FB MOD=0 value=0x0*/ {4096, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(5682)=73 MODE=2 BASE0=XED_REG_EAX -> FB MOD=2 value=0x2*/ {5682, 2},
|
||
|
/*h(3584)=74 BASE0=@ -> FB MOD=0 value=0x0*/ {3584, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(5683)=81 MODE=2 BASE0=XED_REG_ECX -> FB MOD=2 value=0x2*/ {5683, 2},
|
||
|
/*h(5170)=82 MODE=2 BASE0=XED_REG_EAX -> FB MOD=2 value=0x2*/ {5170, 2},
|
||
|
/*h(3072)=83 BASE0=@ -> FB MOD=0 value=0x0*/ {3072, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(5684)=89 MODE=2 BASE0=XED_REG_EDX -> FB MOD=2 value=0x2*/ {5684, 2},
|
||
|
/*h(5171)=90 MODE=2 BASE0=XED_REG_ECX -> FB MOD=2 value=0x2*/ {5171, 2},
|
||
|
/*h(4658)=91 MODE=2 BASE0=XED_REG_EAX -> FB MOD=2 value=0x2*/ {4658, 2},
|
||
|
/*h(2560)=92 BASE0=@ -> FB MOD=0 value=0x0*/ {2560, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(5685)=97 MODE=2 BASE0=XED_REG_EBX -> FB MOD=2 value=0x2*/ {5685, 2},
|
||
|
/*h(5172)=98 MODE=2 BASE0=XED_REG_EDX -> FB MOD=2 value=0x2*/ {5172, 2},
|
||
|
/*h(4659)=99 MODE=2 BASE0=XED_REG_ECX -> FB MOD=2 value=0x2*/ {4659, 2},
|
||
|
/*h(4146)=100 MODE=2 BASE0=XED_REG_EAX -> FB MOD=2 value=0x2*/ {4146, 2},
|
||
|
/*h(2048)=101 BASE0=@ -> FB MOD=0 value=0x0*/ {2048, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(5686)=105 MODE=2 BASE0=XED_REG_ESP -> FB MOD=2 value=0x2*/ {5686, 2},
|
||
|
/*h(5173)=106 MODE=2 BASE0=XED_REG_EBX -> FB MOD=2 value=0x2*/ {5173, 2},
|
||
|
/*h(4660)=107 MODE=2 BASE0=XED_REG_EDX -> FB MOD=2 value=0x2*/ {4660, 2},
|
||
|
/*h(4147)=108 MODE=2 BASE0=XED_REG_ECX -> FB MOD=2 value=0x2*/ {4147, 2},
|
||
|
/*h(3634)=109 MODE=1 BASE0=XED_REG_EAX -> FB MOD=2 value=0x2*/ {3634, 2},
|
||
|
/*h(1536)=110 BASE0=@ -> FB MOD=0 value=0x0*/ {1536, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(5687)=113 MODE=2 BASE0=XED_REG_EBP -> FB MOD=2 value=0x2*/ {5687, 2},
|
||
|
/*h(5174)=114 MODE=2 BASE0=XED_REG_ESP -> FB MOD=2 value=0x2*/ {5174, 2},
|
||
|
/*h(4661)=115 MODE=2 BASE0=XED_REG_EBX -> FB MOD=2 value=0x2*/ {4661, 2},
|
||
|
/*h(4148)=116 MODE=2 BASE0=XED_REG_EDX -> FB MOD=2 value=0x2*/ {4148, 2},
|
||
|
/*h(3635)=117 MODE=1 BASE0=XED_REG_ECX -> FB MOD=2 value=0x2*/ {3635, 2},
|
||
|
/*h(3122)=118 MODE=1 BASE0=XED_REG_EAX -> FB MOD=2 value=0x2*/ {3122, 2},
|
||
|
/*h(1024)=119 BASE0=@ -> FB MOD=0 value=0x0*/ {1024, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(5688)=121 MODE=2 BASE0=XED_REG_ESI -> FB MOD=2 value=0x2*/ {5688, 2},
|
||
|
/*h(5175)=122 MODE=2 BASE0=XED_REG_EBP -> FB MOD=2 value=0x2*/ {5175, 2},
|
||
|
/*h(4662)=123 MODE=2 BASE0=XED_REG_ESP -> FB MOD=2 value=0x2*/ {4662, 2},
|
||
|
/*h(4149)=124 MODE=2 BASE0=XED_REG_EBX -> FB MOD=2 value=0x2*/ {4149, 2},
|
||
|
/*h(3636)=125 MODE=1 BASE0=XED_REG_EDX -> FB MOD=2 value=0x2*/ {3636, 2},
|
||
|
/*h(3123)=126 MODE=1 BASE0=XED_REG_ECX -> FB MOD=2 value=0x2*/ {3123, 2},
|
||
|
/*h(2610)=127 MODE=1 BASE0=XED_REG_EAX -> FB MOD=2 value=0x2*/ {2610, 2},
|
||
|
/*h(512)=128 BASE0=@ -> FB MOD=0 value=0x0*/ {512, 0},
|
||
|
/*h(5689)=129 MODE=2 BASE0=XED_REG_EDI -> FB MOD=2 value=0x2*/ {5689, 2},
|
||
|
/*h(5176)=130 MODE=2 BASE0=XED_REG_ESI -> FB MOD=2 value=0x2*/ {5176, 2},
|
||
|
/*h(4663)=131 MODE=2 BASE0=XED_REG_EBP -> FB MOD=2 value=0x2*/ {4663, 2},
|
||
|
/*h(4150)=132 MODE=2 BASE0=XED_REG_ESP -> FB MOD=2 value=0x2*/ {4150, 2},
|
||
|
/*h(3637)=133 MODE=1 BASE0=XED_REG_EBX -> FB MOD=2 value=0x2*/ {3637, 2},
|
||
|
/*h(3124)=134 MODE=1 BASE0=XED_REG_EDX -> FB MOD=2 value=0x2*/ {3124, 2},
|
||
|
/*h(2611)=135 MODE=1 BASE0=XED_REG_ECX -> FB MOD=2 value=0x2*/ {2611, 2},
|
||
|
/*h(2098)=136 MODE=1 BASE0=XED_REG_EAX -> FB MOD=2 value=0x2*/ {2098, 2},
|
||
|
/*h(5690)=137 MODE=2 BASE0=XED_REG_R8D -> FB MOD=2 value=0x2*/ {5690, 2},
|
||
|
/*h(5177)=138 MODE=2 BASE0=XED_REG_EDI -> FB MOD=2 value=0x2*/ {5177, 2},
|
||
|
/*h(4664)=139 MODE=2 BASE0=XED_REG_ESI -> FB MOD=2 value=0x2*/ {4664, 2},
|
||
|
/*h(4151)=140 MODE=2 BASE0=XED_REG_EBP -> FB MOD=2 value=0x2*/ {4151, 2},
|
||
|
/*h(3638)=141 MODE=1 BASE0=XED_REG_ESP -> FB MOD=2 value=0x2*/ {3638, 2},
|
||
|
/*h(3125)=142 MODE=1 BASE0=XED_REG_EBX -> FB MOD=2 value=0x2*/ {3125, 2},
|
||
|
/*h(2612)=143 MODE=1 BASE0=XED_REG_EDX -> FB MOD=2 value=0x2*/ {2612, 2},
|
||
|
/*h(2099)=144 MODE=1 BASE0=XED_REG_ECX -> FB MOD=2 value=0x2*/ {2099, 2},
|
||
|
/*h(5691)=145 MODE=2 BASE0=XED_REG_R9D -> FB MOD=2 value=0x2*/ {5691, 2},
|
||
|
/*h(5178)=146 MODE=2 BASE0=XED_REG_R8D -> FB MOD=2 value=0x2*/ {5178, 2},
|
||
|
/*h(4665)=147 MODE=2 BASE0=XED_REG_EDI -> FB MOD=2 value=0x2*/ {4665, 2},
|
||
|
/*h(4152)=148 MODE=2 BASE0=XED_REG_ESI -> FB MOD=2 value=0x2*/ {4152, 2},
|
||
|
/*h(3639)=149 MODE=1 BASE0=XED_REG_EBP -> FB MOD=2 value=0x2*/ {3639, 2},
|
||
|
/*h(3126)=150 MODE=1 BASE0=XED_REG_ESP -> FB MOD=2 value=0x2*/ {3126, 2},
|
||
|
/*h(2613)=151 MODE=1 BASE0=XED_REG_EBX -> FB MOD=2 value=0x2*/ {2613, 2},
|
||
|
/*h(2100)=152 MODE=1 BASE0=XED_REG_EDX -> FB MOD=2 value=0x2*/ {2100, 2},
|
||
|
/*h(5692)=153 MODE=2 BASE0=XED_REG_R10D -> FB MOD=2 value=0x2*/ {5692, 2},
|
||
|
/*h(5179)=154 MODE=2 BASE0=XED_REG_R9D -> FB MOD=2 value=0x2*/ {5179, 2},
|
||
|
/*h(4666)=155 MODE=2 BASE0=XED_REG_R8D -> FB MOD=2 value=0x2*/ {4666, 2},
|
||
|
/*h(4153)=156 MODE=2 BASE0=XED_REG_EDI -> FB MOD=2 value=0x2*/ {4153, 2},
|
||
|
/*h(3640)=157 MODE=1 BASE0=XED_REG_ESI -> FB MOD=2 value=0x2*/ {3640, 2},
|
||
|
/*h(3127)=158 MODE=1 BASE0=XED_REG_EBP -> FB MOD=2 value=0x2*/ {3127, 2},
|
||
|
/*h(2614)=159 MODE=1 BASE0=XED_REG_ESP -> FB MOD=2 value=0x2*/ {2614, 2},
|
||
|
/*h(2101)=160 MODE=1 BASE0=XED_REG_EBX -> FB MOD=2 value=0x2*/ {2101, 2},
|
||
|
/*h(5693)=161 MODE=2 BASE0=XED_REG_R11D -> FB MOD=2 value=0x2*/ {5693, 2},
|
||
|
/*h(5180)=162 MODE=2 BASE0=XED_REG_R10D -> FB MOD=2 value=0x2*/ {5180, 2},
|
||
|
/*h(4667)=163 MODE=2 BASE0=XED_REG_R9D -> FB MOD=2 value=0x2*/ {4667, 2},
|
||
|
/*h(4154)=164 MODE=2 BASE0=XED_REG_R8D -> FB MOD=2 value=0x2*/ {4154, 2},
|
||
|
/*h(3641)=165 MODE=1 BASE0=XED_REG_EDI -> FB MOD=2 value=0x2*/ {3641, 2},
|
||
|
/*h(3128)=166 MODE=1 BASE0=XED_REG_ESI -> FB MOD=2 value=0x2*/ {3128, 2},
|
||
|
/*h(2615)=167 MODE=1 BASE0=XED_REG_EBP -> FB MOD=2 value=0x2*/ {2615, 2},
|
||
|
/*h(2102)=168 MODE=1 BASE0=XED_REG_ESP -> FB MOD=2 value=0x2*/ {2102, 2},
|
||
|
/*h(5694)=169 MODE=2 BASE0=XED_REG_R12D -> FB MOD=2 value=0x2*/ {5694, 2},
|
||
|
/*h(5181)=170 MODE=2 BASE0=XED_REG_R11D -> FB MOD=2 value=0x2*/ {5181, 2},
|
||
|
/*h(4668)=171 MODE=2 BASE0=XED_REG_R10D -> FB MOD=2 value=0x2*/ {4668, 2},
|
||
|
/*h(4155)=172 MODE=2 BASE0=XED_REG_R9D -> FB MOD=2 value=0x2*/ {4155, 2},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(3129)=174 MODE=1 BASE0=XED_REG_EDI -> FB MOD=2 value=0x2*/ {3129, 2},
|
||
|
/*h(2616)=175 MODE=1 BASE0=XED_REG_ESI -> FB MOD=2 value=0x2*/ {2616, 2},
|
||
|
/*h(2103)=176 MODE=1 BASE0=XED_REG_EBP -> FB MOD=2 value=0x2*/ {2103, 2},
|
||
|
/*h(5695)=177 MODE=2 BASE0=XED_REG_R13D -> FB MOD=2 value=0x2*/ {5695, 2},
|
||
|
/*h(5182)=178 MODE=2 BASE0=XED_REG_R12D -> FB MOD=2 value=0x2*/ {5182, 2},
|
||
|
/*h(4669)=179 MODE=2 BASE0=XED_REG_R11D -> FB MOD=2 value=0x2*/ {4669, 2},
|
||
|
/*h(4156)=180 MODE=2 BASE0=XED_REG_R10D -> FB MOD=2 value=0x2*/ {4156, 2},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(2617)=183 MODE=1 BASE0=XED_REG_EDI -> FB MOD=2 value=0x2*/ {2617, 2},
|
||
|
/*h(2104)=184 MODE=1 BASE0=XED_REG_ESI -> FB MOD=2 value=0x2*/ {2104, 2},
|
||
|
/*h(5696)=185 MODE=2 BASE0=XED_REG_R14D -> FB MOD=2 value=0x2*/ {5696, 2},
|
||
|
/*h(5183)=186 MODE=2 BASE0=XED_REG_R13D -> FB MOD=2 value=0x2*/ {5183, 2},
|
||
|
/*h(4670)=187 MODE=2 BASE0=XED_REG_R12D -> FB MOD=2 value=0x2*/ {4670, 2},
|
||
|
/*h(4157)=188 MODE=2 BASE0=XED_REG_R11D -> FB MOD=2 value=0x2*/ {4157, 2},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(2105)=192 MODE=1 BASE0=XED_REG_EDI -> FB MOD=2 value=0x2*/ {2105, 2},
|
||
|
/*h(5697)=193 MODE=2 BASE0=XED_REG_R15D -> FB MOD=2 value=0x2*/ {5697, 2},
|
||
|
/*h(5184)=194 MODE=2 BASE0=XED_REG_R14D -> FB MOD=2 value=0x2*/ {5184, 2},
|
||
|
/*h(4671)=195 MODE=2 BASE0=XED_REG_R13D -> FB MOD=2 value=0x2*/ {4671, 2},
|
||
|
/*h(4158)=196 MODE=2 BASE0=XED_REG_R12D -> FB MOD=2 value=0x2*/ {4158, 2},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(5185)=202 MODE=2 BASE0=XED_REG_R15D -> FB MOD=2 value=0x2*/ {5185, 2},
|
||
|
/*h(4672)=203 MODE=2 BASE0=XED_REG_R14D -> FB MOD=2 value=0x2*/ {4672, 2},
|
||
|
/*h(4159)=204 MODE=2 BASE0=XED_REG_R13D -> FB MOD=2 value=0x2*/ {4159, 2},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(4673)=211 MODE=2 BASE0=XED_REG_R15D -> FB MOD=2 value=0x2*/ {4673, 2},
|
||
|
/*h(4160)=212 MODE=2 BASE0=XED_REG_R14D -> FB MOD=2 value=0x2*/ {4160, 2},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(4161)=220 MODE=2 BASE0=XED_REG_R15D -> FB MOD=2 value=0x2*/ {4161, 2},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_BASE0_EASZ_MODE(xes);
|
||
|
hidx = ((8*key % 821) % 228);
|
||
|
if(lu_table[hidx].key == key) {
|
||
|
xed3_operand_set_mod(xes,lu_table[hidx].mod);
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_MODRM_MOD_EA64_DISP0_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct {xed_uint32_t key; xed_int8_t disp ;xed_int8_t disp_width ;xed_int8_t mod;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[26] = {
|
||
|
/*h(68)=0 BASE0=XED_REG_RDX -> FB MOD=0 value=0x0*/ {68, -1,-1,0},
|
||
|
/*h(81)=1 BASE0=XED_REG_R15 -> FB MOD=0 value=0x0*/ {81, -1,-1,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(73)=3 BASE0=XED_REG_RDI -> FB MOD=0 value=0x0*/ {73, -1,-1,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(78)=5 BASE0=XED_REG_R12 -> FB MOD=0 value=0x0*/ {78, -1,-1,0},
|
||
|
/*h(70)=6 BASE0=XED_REG_RSP -> FB MOD=0 value=0x0*/ {70, -1,-1,0},
|
||
|
/*h(104)=7 BASE0=XED_REG_EIP -> FB MOD=0 value=0x0 FB DISP_WIDTH=32 value=0x20 FB DISP=0 value=0x0*/ {104, 0,32,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(75)=9 BASE0=XED_REG_R9 -> FB MOD=0 value=0x0*/ {75, -1,-1,0},
|
||
|
/*h(67)=10 BASE0=XED_REG_RCX -> FB MOD=0 value=0x0*/ {67, -1,-1,0},
|
||
|
/*h(80)=11 BASE0=XED_REG_R14 -> FB MOD=0 value=0x0*/ {80, -1,-1,0},
|
||
|
/*h(72)=12 BASE0=XED_REG_RSI -> FB MOD=0 value=0x0*/ {72, -1,-1,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(77)=15 BASE0=XED_REG_R11 -> FB MOD=0 value=0x0*/ {77, -1,-1,0},
|
||
|
/*h(69)=16 BASE0=XED_REG_RBX -> FB MOD=0 value=0x0*/ {69, -1,-1,0},
|
||
|
/*h(103)=17 BASE0=XED_REG_RIP -> FB MOD=0 value=0x0 FB DISP_WIDTH=32 value=0x20 FB DISP=0 value=0x0*/ {103, 0,32,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(74)=19 BASE0=XED_REG_R8 -> FB MOD=0 value=0x0*/ {74, -1,-1,0},
|
||
|
/*h(66)=20 BASE0=XED_REG_RAX -> FB MOD=0 value=0x0*/ {66, -1,-1,0},
|
||
|
/*h(79)=21 BASE0=XED_REG_R13 -> FB MOD=1 value=0x1 FB DISP_WIDTH=8 value=0x8 FB DISP=0 value=0x0*/ {79, 0,8,1},
|
||
|
/*h(71)=22 BASE0=XED_REG_RBP -> FB MOD=1 value=0x1 FB DISP_WIDTH=8 value=0x8 FB DISP=0 value=0x0*/ {71, 0,8,1},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(76)=25 BASE0=XED_REG_R10 -> FB MOD=0 value=0x0*/ {76, -1,-1,0}
|
||
|
};
|
||
|
xed_union64_t t, u;
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_BASE0(xes);
|
||
|
hidx = (t.u64 = 2654435769 * key, u.u64 = t.s.lo32 * 26ULL, u.s.hi32);
|
||
|
if(lu_table[hidx].key == key) {
|
||
|
if(lu_table[hidx].disp >= 0) xed3_operand_set_disp(xes,lu_table[hidx].disp);
|
||
|
if(lu_table[hidx].disp_width >= 0) xed3_operand_set_disp_width(xes,lu_table[hidx].disp_width);
|
||
|
xed3_operand_set_mod(xes,lu_table[hidx].mod);
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_MODRM_MOD_EA64_DISP8_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct { xed_int8_t mod;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[16] = {
|
||
|
/*h(66)=0 BASE0=XED_REG_RAX -> FB MOD=1 value=0x1*/ {1},
|
||
|
/*h(67)=1 BASE0=XED_REG_RCX -> FB MOD=1 value=0x1*/ {1},
|
||
|
/*h(68)=2 BASE0=XED_REG_RDX -> FB MOD=1 value=0x1*/ {1},
|
||
|
/*h(69)=3 BASE0=XED_REG_RBX -> FB MOD=1 value=0x1*/ {1},
|
||
|
/*h(70)=4 BASE0=XED_REG_RSP -> FB MOD=1 value=0x1*/ {1},
|
||
|
/*h(71)=5 BASE0=XED_REG_RBP -> FB MOD=1 value=0x1*/ {1},
|
||
|
/*h(72)=6 BASE0=XED_REG_RSI -> FB MOD=1 value=0x1*/ {1},
|
||
|
/*h(73)=7 BASE0=XED_REG_RDI -> FB MOD=1 value=0x1*/ {1},
|
||
|
/*h(74)=8 BASE0=XED_REG_R8 -> FB MOD=1 value=0x1*/ {1},
|
||
|
/*h(75)=9 BASE0=XED_REG_R9 -> FB MOD=1 value=0x1*/ {1},
|
||
|
/*h(76)=10 BASE0=XED_REG_R10 -> FB MOD=1 value=0x1*/ {1},
|
||
|
/*h(77)=11 BASE0=XED_REG_R11 -> FB MOD=1 value=0x1*/ {1},
|
||
|
/*h(78)=12 BASE0=XED_REG_R12 -> FB MOD=1 value=0x1*/ {1},
|
||
|
/*h(79)=13 BASE0=XED_REG_R13 -> FB MOD=1 value=0x1*/ {1},
|
||
|
/*h(80)=14 BASE0=XED_REG_R14 -> FB MOD=1 value=0x1*/ {1},
|
||
|
/*h(81)=15 BASE0=XED_REG_R15 -> FB MOD=1 value=0x1*/ {1}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_BASE0(xes);
|
||
|
hidx = key - 66;
|
||
|
if(hidx <= 15) {
|
||
|
xed3_operand_set_mod(xes,lu_table[hidx].mod);
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_MODRM_MOD_EA64_DISP32_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct {xed_uint32_t key; xed_int8_t mod;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[19] = {
|
||
|
/*h(0)=0 BASE0=@ -> FB MOD=0 value=0x0*/ {0, 0},
|
||
|
/*h(104)=1 BASE0=XED_REG_EIP -> FB MOD=0 value=0x0*/ {104, 0},
|
||
|
/*h(71)=2 BASE0=XED_REG_RBP -> FB MOD=2 value=0x2*/ {71, 2},
|
||
|
/*h(73)=3 BASE0=XED_REG_RDI -> FB MOD=2 value=0x2*/ {73, 2},
|
||
|
/*h(75)=4 BASE0=XED_REG_R9 -> FB MOD=2 value=0x2*/ {75, 2},
|
||
|
/*h(77)=5 BASE0=XED_REG_R11 -> FB MOD=2 value=0x2*/ {77, 2},
|
||
|
/*h(79)=6 BASE0=XED_REG_R13 -> FB MOD=2 value=0x2*/ {79, 2},
|
||
|
/*h(81)=7 BASE0=XED_REG_R15 -> FB MOD=2 value=0x2*/ {81, 2},
|
||
|
/*h(67)=8 BASE0=XED_REG_RCX -> FB MOD=2 value=0x2*/ {67, 2},
|
||
|
/*h(69)=9 BASE0=XED_REG_RBX -> FB MOD=2 value=0x2*/ {69, 2},
|
||
|
/*h(103)=10 BASE0=XED_REG_RIP -> FB MOD=0 value=0x0*/ {103, 0},
|
||
|
/*h(70)=11 BASE0=XED_REG_RSP -> FB MOD=2 value=0x2*/ {70, 2},
|
||
|
/*h(72)=12 BASE0=XED_REG_RSI -> FB MOD=2 value=0x2*/ {72, 2},
|
||
|
/*h(74)=13 BASE0=XED_REG_R8 -> FB MOD=2 value=0x2*/ {74, 2},
|
||
|
/*h(76)=14 BASE0=XED_REG_R10 -> FB MOD=2 value=0x2*/ {76, 2},
|
||
|
/*h(78)=15 BASE0=XED_REG_R12 -> FB MOD=2 value=0x2*/ {78, 2},
|
||
|
/*h(80)=16 BASE0=XED_REG_R14 -> FB MOD=2 value=0x2*/ {80, 2},
|
||
|
/*h(66)=17 BASE0=XED_REG_RAX -> FB MOD=2 value=0x2*/ {66, 2},
|
||
|
/*h(68)=18 BASE0=XED_REG_RDX -> FB MOD=2 value=0x2*/ {68, 2}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_BASE0(xes);
|
||
|
hidx = ((29*key % 673) % 19);
|
||
|
if(lu_table[hidx].key == key) {
|
||
|
xed3_operand_set_mod(xes,lu_table[hidx].mod);
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_MODRM_RM_ENCODE_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct {xed_uint32_t key; xed_nt_func_ptr_t ntptr0;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[8] = {
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(2)=1 EASZ=2 NEED_SIB=0 -> nt NT[MODRM_RM_ENCODE_EA32_SIB0]*/ {2, xed_encode_nonterminal_MODRM_RM_ENCODE_EA32_SIB0_BIND},
|
||
|
/*h(7)=2 EASZ!=1 NEED_SIB=1 -> nt NT[MODRM_RM_ENCODE_EANOT16_SIB1]*/ {7, xed_encode_nonterminal_MODRM_RM_ENCODE_EANOT16_SIB1_BIND},
|
||
|
/*h(4)=3 EASZ!=1 NEED_SIB=1 -> nt NT[MODRM_RM_ENCODE_EANOT16_SIB1]*/ {4, xed_encode_nonterminal_MODRM_RM_ENCODE_EANOT16_SIB1_BIND},
|
||
|
/*h(1)=4 EASZ=1 NEED_SIB=0 -> nt NT[MODRM_RM_ENCODE_EA16_SIB0]*/ {1, xed_encode_nonterminal_MODRM_RM_ENCODE_EA16_SIB0_BIND},
|
||
|
/*h(6)=5 EASZ!=1 NEED_SIB=1 -> nt NT[MODRM_RM_ENCODE_EANOT16_SIB1]*/ {6, xed_encode_nonterminal_MODRM_RM_ENCODE_EANOT16_SIB1_BIND},
|
||
|
/*h(3)=6 EASZ=3 NEED_SIB=0 -> nt NT[MODRM_RM_ENCODE_EA64_SIB0]*/ {3, xed_encode_nonterminal_MODRM_RM_ENCODE_EA64_SIB0_BIND},
|
||
|
/*empty slot1 */ {0,0}
|
||
|
};
|
||
|
xed_union64_t t;
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
xed_uint64_t res = 1;
|
||
|
key = xed_enc_lu_EASZ_NEED_SIB(xes);
|
||
|
hidx = (t.u64 = 2654435769 * key, t.s.lo32 >> (32-3));
|
||
|
if(lu_table[hidx].key == key) {
|
||
|
if(lu_table[hidx].ntptr0 != 0) res=(*lu_table[hidx].ntptr0)(xes);
|
||
|
xed_encoder_request_iforms(xes)->x_MODRM_RM_ENCODE=hidx+1;
|
||
|
return res;
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_MODRM_RM_ENCODE_EA16_SIB0_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct {xed_uint32_t key; xed_int8_t rm ;xed_nt_func_ptr_t ntptr0;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[9] = {
|
||
|
/*h(0)=0 BASE0=@ INDEX=@ -> nt NT[DISP_WIDTH_16] FB RM=6 value=0x6*/ {0, 6,xed_encode_nonterminal_DISP_WIDTH_16_BIND},
|
||
|
/*h(39)=1 BASE0=XED_REG_BP INDEX=@ -> nt NT[DISP_WIDTH_0_8_16] FB RM=6 value=0x6*/ {39, 6,xed_encode_nonterminal_DISP_WIDTH_0_8_16_BIND},
|
||
|
/*h(40)=2 BASE0=XED_REG_SI INDEX=@ -> FB RM=4 value=0x4*/ {40, 4,0},
|
||
|
/*h(41)=3 BASE0=XED_REG_DI INDEX=@ -> FB RM=5 value=0x5*/ {41, 5,0},
|
||
|
/*h(21029)=4 BASE0=XED_REG_BX INDEX=XED_REG_DI -> FB RM=1 value=0x1*/ {21029, 1,0},
|
||
|
/*h(20517)=5 BASE0=XED_REG_BX INDEX=XED_REG_SI -> FB RM=0 value=0x0*/ {20517, 0,0},
|
||
|
/*h(21031)=6 BASE0=XED_REG_BP INDEX=XED_REG_DI -> FB RM=3 value=0x3*/ {21031, 3,0},
|
||
|
/*h(20519)=7 BASE0=XED_REG_BP INDEX=XED_REG_SI -> FB RM=2 value=0x2*/ {20519, 2,0},
|
||
|
/*h(37)=8 BASE0=XED_REG_BX INDEX=@ -> FB RM=7 value=0x7*/ {37, 7,0}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
xed_uint64_t res = 1;
|
||
|
key = xed_enc_lu_BASE0_INDEX(xes);
|
||
|
hidx = ((30*key % 29) % 9);
|
||
|
if(lu_table[hidx].key == key) {
|
||
|
xed3_operand_set_rm(xes,lu_table[hidx].rm);
|
||
|
if(lu_table[hidx].ntptr0 != 0) res=(*lu_table[hidx].ntptr0)(xes);
|
||
|
xed_encoder_request_iforms(xes)->x_MODRM_RM_ENCODE_EA16_SIB0=hidx+1;
|
||
|
return res;
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_MODRM_RM_ENCODE_EA64_SIB0_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct {xed_uint32_t key; xed_int8_t rexb ;xed_int8_t rm ;xed_nt_func_ptr_t ntptr0;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[17] = {
|
||
|
/*h(0)=0 BASE0=@ -> nt NT[DISP_WIDTH_32] FB RM=5 value=0x5*/ {0, -1,5,xed_encode_nonterminal_DISP_WIDTH_32_BIND},
|
||
|
/*h(73)=1 BASE0=XED_REG_RDI -> FB RM=7 value=0x7 FB REXB=0 value=0x0*/ {73, 0,7,0},
|
||
|
/*h(68)=2 BASE0=XED_REG_RDX -> FB RM=2 value=0x2 FB REXB=0 value=0x0*/ {68, 0,2,0},
|
||
|
/*h(80)=3 BASE0=XED_REG_R14 -> FB RM=6 value=0x6 FB REXB=1 value=0x1*/ {80, 1,6,0},
|
||
|
/*h(75)=4 BASE0=XED_REG_R9 -> FB RM=1 value=0x1 FB REXB=1 value=0x1*/ {75, 1,1,0},
|
||
|
/*h(81)=5 BASE0=XED_REG_R15 -> FB RM=7 value=0x7 FB REXB=1 value=0x1*/ {81, 1,7,0},
|
||
|
/*h(104)=6 BASE0=XED_REG_EIP -> FB RM=5 value=0x5*/ {104, -1,5,0},
|
||
|
/*h(77)=7 BASE0=XED_REG_R11 -> FB RM=3 value=0x3 FB REXB=1 value=0x1*/ {77, 1,3,0},
|
||
|
/*h(72)=8 BASE0=XED_REG_RSI -> FB RM=6 value=0x6 FB REXB=0 value=0x0*/ {72, 0,6,0},
|
||
|
/*h(67)=9 BASE0=XED_REG_RCX -> FB RM=1 value=0x1 FB REXB=0 value=0x0*/ {67, 0,1,0},
|
||
|
/*h(79)=10 BASE0=XED_REG_R13 -> nt NT[DISP_WIDTH_0_8_32] FB RM=5 value=0x5 FB REXB=1 value=0x1*/ {79, 1,5,xed_encode_nonterminal_DISP_WIDTH_0_8_32_BIND},
|
||
|
/*h(74)=11 BASE0=XED_REG_R8 -> FB RM=0 value=0x0 FB REXB=1 value=0x1*/ {74, 1,0,0},
|
||
|
/*h(69)=12 BASE0=XED_REG_RBX -> FB RM=3 value=0x3 FB REXB=0 value=0x0*/ {69, 0,3,0},
|
||
|
/*h(103)=13 BASE0=XED_REG_RIP -> FB RM=5 value=0x5*/ {103, -1,5,0},
|
||
|
/*h(76)=14 BASE0=XED_REG_R10 -> FB RM=2 value=0x2 FB REXB=1 value=0x1*/ {76, 1,2,0},
|
||
|
/*h(71)=15 BASE0=XED_REG_RBP -> nt NT[DISP_WIDTH_0_8_32] FB RM=5 value=0x5 FB REXB=0 value=0x0*/ {71, 0,5,xed_encode_nonterminal_DISP_WIDTH_0_8_32_BIND},
|
||
|
/*h(66)=16 BASE0=XED_REG_RAX -> FB RM=0 value=0x0 FB REXB=0 value=0x0*/ {66, 0,0,0}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
xed_uint64_t res = 1;
|
||
|
key = xed_enc_lu_BASE0(xes);
|
||
|
hidx = ((27*key % 433) % 17);
|
||
|
if(lu_table[hidx].key == key) {
|
||
|
if(lu_table[hidx].rexb >= 0) xed3_operand_set_rexb(xes,lu_table[hidx].rexb);
|
||
|
xed3_operand_set_rm(xes,lu_table[hidx].rm);
|
||
|
if(lu_table[hidx].ntptr0 != 0) res=(*lu_table[hidx].ntptr0)(xes);
|
||
|
xed_encoder_request_iforms(xes)->x_MODRM_RM_ENCODE_EA64_SIB0=hidx+1;
|
||
|
return res;
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_MODRM_RM_ENCODE_EA32_SIB0_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct {xed_uint32_t key; xed_int8_t rexb ;xed_int8_t rm ;xed_nt_func_ptr_t ntptr0;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[124] = {
|
||
|
/*h(0)=0 BASE0=@ -> nt NT[DISP_WIDTH_32] FB RM=5 value=0x5*/ {0, -1,5,xed_encode_nonterminal_DISP_WIDTH_32_BIND},
|
||
|
/*h(1089)=1 BASE0=XED_REG_R15D -> FB RM=7 value=0x7 FB REXB=1 value=0x1*/ {1089, 1,7,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(577)=3 BASE0=XED_REG_R15D -> FB RM=7 value=0x7 FB REXB=1 value=0x1*/ {577, 1,7,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(65)=5 BASE0=XED_REG_R15D -> FB RM=7 value=0x7 FB REXB=1 value=0x1*/ {65, 1,7,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1586)=18 BASE0=XED_REG_EAX -> FB RM=0 value=0x0 FB REXB=0 value=0x0*/ {1586, 0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1074)=20 BASE0=XED_REG_EAX -> FB RM=0 value=0x0 FB REXB=0 value=0x0*/ {1074, 0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(562)=22 BASE0=XED_REG_EAX -> FB RM=0 value=0x0 FB REXB=0 value=0x0*/ {562, 0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(50)=24 BASE0=XED_REG_EAX -> FB RM=0 value=0x0 FB REXB=0 value=0x0*/ {50, 0,0,0},
|
||
|
/*h(1587)=25 BASE0=XED_REG_ECX -> FB RM=1 value=0x1 FB REXB=0 value=0x0*/ {1587, 0,1,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1075)=27 BASE0=XED_REG_ECX -> FB RM=1 value=0x1 FB REXB=0 value=0x0*/ {1075, 0,1,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(563)=29 BASE0=XED_REG_ECX -> FB RM=1 value=0x1 FB REXB=0 value=0x0*/ {563, 0,1,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(51)=31 BASE0=XED_REG_ECX -> FB RM=1 value=0x1 FB REXB=0 value=0x0*/ {51, 0,1,0},
|
||
|
/*h(1588)=32 BASE0=XED_REG_EDX -> FB RM=2 value=0x2 FB REXB=0 value=0x0*/ {1588, 0,2,0},
|
||
|
/*h(1536)=33 BASE0=@ -> nt NT[DISP_WIDTH_32] FB RM=5 value=0x5*/ {1536, -1,5,xed_encode_nonterminal_DISP_WIDTH_32_BIND},
|
||
|
/*h(1076)=34 BASE0=XED_REG_EDX -> FB RM=2 value=0x2 FB REXB=0 value=0x0*/ {1076, 0,2,0},
|
||
|
/*h(1024)=35 BASE0=@ -> nt NT[DISP_WIDTH_32] FB RM=5 value=0x5*/ {1024, -1,5,xed_encode_nonterminal_DISP_WIDTH_32_BIND},
|
||
|
/*h(564)=36 BASE0=XED_REG_EDX -> FB RM=2 value=0x2 FB REXB=0 value=0x0*/ {564, 0,2,0},
|
||
|
/*h(512)=37 BASE0=@ -> nt NT[DISP_WIDTH_32] FB RM=5 value=0x5*/ {512, -1,5,xed_encode_nonterminal_DISP_WIDTH_32_BIND},
|
||
|
/*h(52)=38 BASE0=XED_REG_EDX -> FB RM=2 value=0x2 FB REXB=0 value=0x0*/ {52, 0,2,0},
|
||
|
/*h(1589)=39 BASE0=XED_REG_EBX -> FB RM=3 value=0x3 FB REXB=0 value=0x0*/ {1589, 0,3,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1077)=41 BASE0=XED_REG_EBX -> FB RM=3 value=0x3 FB REXB=0 value=0x0*/ {1077, 0,3,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(565)=43 BASE0=XED_REG_EBX -> FB RM=3 value=0x3 FB REXB=0 value=0x0*/ {565, 0,3,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(53)=45 BASE0=XED_REG_EBX -> FB RM=3 value=0x3 FB REXB=0 value=0x0*/ {53, 0,3,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1591)=53 BASE0=XED_REG_EBP -> nt NT[DISP_WIDTH_0_8_32] FB RM=5 value=0x5 FB REXB=0 value=0x0*/ {1591, 0,5,xed_encode_nonterminal_DISP_WIDTH_0_8_32_BIND},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1079)=55 BASE0=XED_REG_EBP -> nt NT[DISP_WIDTH_0_8_32] FB RM=5 value=0x5 FB REXB=0 value=0x0*/ {1079, 0,5,xed_encode_nonterminal_DISP_WIDTH_0_8_32_BIND},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(567)=57 BASE0=XED_REG_EBP -> nt NT[DISP_WIDTH_0_8_32] FB RM=5 value=0x5 FB REXB=0 value=0x0*/ {567, 0,5,xed_encode_nonterminal_DISP_WIDTH_0_8_32_BIND},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(55)=59 BASE0=XED_REG_EBP -> nt NT[DISP_WIDTH_0_8_32] FB RM=5 value=0x5 FB REXB=0 value=0x0*/ {55, 0,5,xed_encode_nonterminal_DISP_WIDTH_0_8_32_BIND},
|
||
|
/*h(1592)=60 BASE0=XED_REG_ESI -> FB RM=6 value=0x6 FB REXB=0 value=0x0*/ {1592, 0,6,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1080)=62 BASE0=XED_REG_ESI -> FB RM=6 value=0x6 FB REXB=0 value=0x0*/ {1080, 0,6,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(568)=64 BASE0=XED_REG_ESI -> FB RM=6 value=0x6 FB REXB=0 value=0x0*/ {568, 0,6,0},
|
||
|
/*h(1127)=65 BASE0=XED_REG_RIP MODE=2 -> FB RM=5 value=0x5*/ {1127, -1,5,0},
|
||
|
/*h(56)=66 BASE0=XED_REG_ESI -> FB RM=6 value=0x6 FB REXB=0 value=0x0*/ {56, 0,6,0},
|
||
|
/*h(1593)=67 BASE0=XED_REG_EDI -> FB RM=7 value=0x7 FB REXB=0 value=0x0*/ {1593, 0,7,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1081)=69 BASE0=XED_REG_EDI -> FB RM=7 value=0x7 FB REXB=0 value=0x0*/ {1081, 0,7,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(569)=71 BASE0=XED_REG_EDI -> FB RM=7 value=0x7 FB REXB=0 value=0x0*/ {569, 0,7,0},
|
||
|
/*h(1128)=72 BASE0=XED_REG_EIP MODE=2 -> FB RM=5 value=0x5*/ {1128, -1,5,0},
|
||
|
/*h(57)=73 BASE0=XED_REG_EDI -> FB RM=7 value=0x7 FB REXB=0 value=0x0*/ {57, 0,7,0},
|
||
|
/*h(1594)=74 BASE0=XED_REG_R8D -> FB RM=0 value=0x0 FB REXB=1 value=0x1*/ {1594, 1,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1082)=76 BASE0=XED_REG_R8D -> FB RM=0 value=0x0 FB REXB=1 value=0x1*/ {1082, 1,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(570)=78 BASE0=XED_REG_R8D -> FB RM=0 value=0x0 FB REXB=1 value=0x1*/ {570, 1,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(58)=80 BASE0=XED_REG_R8D -> FB RM=0 value=0x0 FB REXB=1 value=0x1*/ {58, 1,0,0},
|
||
|
/*h(1595)=81 BASE0=XED_REG_R9D -> FB RM=1 value=0x1 FB REXB=1 value=0x1*/ {1595, 1,1,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1083)=83 BASE0=XED_REG_R9D -> FB RM=1 value=0x1 FB REXB=1 value=0x1*/ {1083, 1,1,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(571)=85 BASE0=XED_REG_R9D -> FB RM=1 value=0x1 FB REXB=1 value=0x1*/ {571, 1,1,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(59)=87 BASE0=XED_REG_R9D -> FB RM=1 value=0x1 FB REXB=1 value=0x1*/ {59, 1,1,0},
|
||
|
/*h(1596)=88 BASE0=XED_REG_R10D -> FB RM=2 value=0x2 FB REXB=1 value=0x1*/ {1596, 1,2,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1084)=90 BASE0=XED_REG_R10D -> FB RM=2 value=0x2 FB REXB=1 value=0x1*/ {1084, 1,2,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(572)=92 BASE0=XED_REG_R10D -> FB RM=2 value=0x2 FB REXB=1 value=0x1*/ {572, 1,2,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(60)=94 BASE0=XED_REG_R10D -> FB RM=2 value=0x2 FB REXB=1 value=0x1*/ {60, 1,2,0},
|
||
|
/*h(1597)=95 BASE0=XED_REG_R11D -> FB RM=3 value=0x3 FB REXB=1 value=0x1*/ {1597, 1,3,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1085)=97 BASE0=XED_REG_R11D -> FB RM=3 value=0x3 FB REXB=1 value=0x1*/ {1085, 1,3,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(573)=99 BASE0=XED_REG_R11D -> FB RM=3 value=0x3 FB REXB=1 value=0x1*/ {573, 1,3,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(61)=101 BASE0=XED_REG_R11D -> FB RM=3 value=0x3 FB REXB=1 value=0x1*/ {61, 1,3,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1599)=109 BASE0=XED_REG_R13D -> nt NT[DISP_WIDTH_0_8_32] FB RM=5 value=0x5 FB REXB=1 value=0x1*/ {1599, 1,5,xed_encode_nonterminal_DISP_WIDTH_0_8_32_BIND},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1087)=111 BASE0=XED_REG_R13D -> nt NT[DISP_WIDTH_0_8_32] FB RM=5 value=0x5 FB REXB=1 value=0x1*/ {1087, 1,5,xed_encode_nonterminal_DISP_WIDTH_0_8_32_BIND},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(575)=113 BASE0=XED_REG_R13D -> nt NT[DISP_WIDTH_0_8_32] FB RM=5 value=0x5 FB REXB=1 value=0x1*/ {575, 1,5,xed_encode_nonterminal_DISP_WIDTH_0_8_32_BIND},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(63)=115 BASE0=XED_REG_R13D -> nt NT[DISP_WIDTH_0_8_32] FB RM=5 value=0x5 FB REXB=1 value=0x1*/ {63, 1,5,xed_encode_nonterminal_DISP_WIDTH_0_8_32_BIND},
|
||
|
/*h(1600)=116 BASE0=XED_REG_R14D -> FB RM=6 value=0x6 FB REXB=1 value=0x1*/ {1600, 1,6,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1088)=118 BASE0=XED_REG_R14D -> FB RM=6 value=0x6 FB REXB=1 value=0x1*/ {1088, 1,6,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(576)=120 BASE0=XED_REG_R14D -> FB RM=6 value=0x6 FB REXB=1 value=0x1*/ {576, 1,6,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(64)=122 BASE0=XED_REG_R14D -> FB RM=6 value=0x6 FB REXB=1 value=0x1*/ {64, 1,6,0},
|
||
|
/*h(1601)=123 BASE0=XED_REG_R15D -> FB RM=7 value=0x7 FB REXB=1 value=0x1*/ {1601, 1,7,0}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
xed_uint64_t res = 1;
|
||
|
key = xed_enc_lu_BASE0_MODE(xes);
|
||
|
hidx = ((7*key % 163) % 124);
|
||
|
if(lu_table[hidx].key == key) {
|
||
|
if(lu_table[hidx].rexb >= 0) xed3_operand_set_rexb(xes,lu_table[hidx].rexb);
|
||
|
xed3_operand_set_rm(xes,lu_table[hidx].rm);
|
||
|
if(lu_table[hidx].ntptr0 != 0) res=(*lu_table[hidx].ntptr0)(xes);
|
||
|
xed_encoder_request_iforms(xes)->x_MODRM_RM_ENCODE_EA32_SIB0=hidx+1;
|
||
|
return res;
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_MODRM_RM_ENCODE_EANOT16_SIB1_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
xed3_operand_set_rm(xes,4);
|
||
|
return 1;
|
||
|
(void)xes;
|
||
|
return 1;
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_SIB_NT_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct { xed_uint32_t emit;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[2] = {
|
||
|
/*h(0)=0 NEED_SIB=0 -> nothing*/ {0},
|
||
|
/*h(1)=1 NEED_SIB=1 SIBBASE[bbb]=* SIBSCALE[ss]=* SIBINDEX[iii]=* -> emit ss_iii_bbb emit_type=letters nbits=8*/ {2}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_NEED_SIB(xes);
|
||
|
hidx = key - 0;
|
||
|
if(hidx <= 1) {
|
||
|
xed_encoder_request_iforms(xes)->x_SIB_NT=lu_table[hidx].emit;
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_DISP_NT_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct {xed_uint32_t key; xed_uint32_t emit;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[4] = {
|
||
|
/*h(8)=0 DISP_WIDTH=8 DISP[dddddddd]=* -> emit dddddddd emit_type=letters nbits=8*/ {8, 1},
|
||
|
/*h(32)=1 DISP_WIDTH=32 DISP[dddddddddddddddddddddddddddddddd]=* -> emit dddddddddddddddddddddddddddddddd emit_type=letters nbits=32*/ {32, 2},
|
||
|
/*h(64)=2 DISP_WIDTH=64 DISP[dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd]=* -> emit dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd emit_type=letters nbits=64*/ {64, 3},
|
||
|
/*h(16)=3 DISP_WIDTH=16 DISP[dddddddddddddddd]=* -> emit dddddddddddddddd emit_type=letters nbits=16*/ {16, 4}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_DISP_WIDTH(xes);
|
||
|
hidx = ((3*key % 5) % 4);
|
||
|
if(lu_table[hidx].key == key) {
|
||
|
xed_encoder_request_iforms(xes)->x_DISP_NT=lu_table[hidx].emit;
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 1;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_ERROR_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
xed3_operand_set_error(xes,XED_ERROR_GENERAL_ERROR);
|
||
|
return 1;
|
||
|
(void)xes;
|
||
|
return 1;
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_DISP_WIDTH_0_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_DISP_WIDTH(xes);
|
||
|
hidx = key - 0;
|
||
|
if(hidx == 0) {
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_DISP_WIDTH_8_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_DISP_WIDTH(xes);
|
||
|
hidx = key - 8;
|
||
|
if(hidx == 0) {
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_DISP_WIDTH_16_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_DISP_WIDTH(xes);
|
||
|
hidx = key - 16;
|
||
|
if(hidx == 0) {
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_DISP_WIDTH_32_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_DISP_WIDTH(xes);
|
||
|
hidx = key - 32;
|
||
|
if(hidx == 0) {
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_DISP_WIDTH_0_8_16_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct {xed_uint32_t key; } lu_entry_t;
|
||
|
static const lu_entry_t lu_table[3] = {
|
||
|
/*h(0)=0 DISP_WIDTH=0 -> nothing*/ {0, },
|
||
|
/*h(16)=1 DISP_WIDTH=16 -> nothing*/ {16, },
|
||
|
/*h(8)=2 DISP_WIDTH=8 -> nothing*/ {8, }
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_DISP_WIDTH(xes);
|
||
|
hidx = (4*key % 3);
|
||
|
if(lu_table[hidx].key == key) {
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_DISP_WIDTH_0_8_32_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct {xed_uint32_t key; } lu_entry_t;
|
||
|
static const lu_entry_t lu_table[5] = {
|
||
|
/*h(0)=0 DISP_WIDTH=0 -> nothing*/ {0, },
|
||
|
/*empty slot1 */ {0},
|
||
|
/*empty slot1 */ {0},
|
||
|
/*h(32)=3 DISP_WIDTH=32 -> nothing*/ {32, },
|
||
|
/*h(8)=4 DISP_WIDTH=8 -> nothing*/ {8, }
|
||
|
};
|
||
|
xed_union64_t t, u;
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_DISP_WIDTH(xes);
|
||
|
hidx = (t.u64 = 2654435769 * key, u.u64 = t.s.lo32 * 5ULL, u.s.hi32);
|
||
|
if(lu_table[hidx].key == key) {
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_FIXUP_EOSZ_ENC_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct {xed_uint32_t key; xed_int8_t eosz;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[3] = {
|
||
|
/*h(0)=0 MODE=0 EOSZ=0 -> FB EOSZ=1 value=0x1*/ {0, 1},
|
||
|
/*h(4)=1 MODE=1 EOSZ=0 -> FB EOSZ=2 value=0x2*/ {4, 2},
|
||
|
/*h(8)=2 MODE=2 EOSZ=0 -> FB EOSZ=2 value=0x2*/ {8, 2}
|
||
|
};
|
||
|
xed_union64_t t, u;
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_EOSZ_MODE(xes);
|
||
|
hidx = (t.u64 = 2654435769 * key, u.u64 = t.s.lo32 * 3ULL, u.s.hi32);
|
||
|
if(lu_table[hidx].key == key) {
|
||
|
xed3_operand_set_eosz(xes,lu_table[hidx].eosz);
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 1;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_FIXUP_EASZ_ENC_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct {xed_uint32_t key; xed_int8_t easz;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[3] = {
|
||
|
/*h(0)=0 MODE=0 EASZ=0 -> FB EASZ=1 value=0x1*/ {0, 1},
|
||
|
/*h(4)=1 MODE=1 EASZ=0 -> FB EASZ=2 value=0x2*/ {4, 2},
|
||
|
/*h(8)=2 MODE=2 EASZ=0 -> FB EASZ=3 value=0x3*/ {8, 3}
|
||
|
};
|
||
|
xed_union64_t t, u;
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_EASZ_MODE(xes);
|
||
|
hidx = (t.u64 = 2654435769 * key, u.u64 = t.s.lo32 * 3ULL, u.s.hi32);
|
||
|
if(lu_table[hidx].key == key) {
|
||
|
xed3_operand_set_easz(xes,lu_table[hidx].easz);
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 1;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_FIXUP_SMODE_ENC_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct {xed_uint32_t key; xed_int8_t error ;xed_int8_t smode;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[2] = {
|
||
|
/*h(2)=0 MODE=2 SMODE=0 -> FB SMODE=2 value=0x2*/ {2, -1,2},
|
||
|
/*h(6)=1 MODE=2 SMODE=1 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {6, XED_ERROR_GENERAL_ERROR,-1}
|
||
|
};
|
||
|
xed_union64_t t;
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_MODE_SMODE(xes);
|
||
|
hidx = (t.u64 = 2654435769 * key, t.s.lo32 >> (32-1));
|
||
|
if(lu_table[hidx].key == key) {
|
||
|
if(lu_table[hidx].error >= 0) xed3_operand_set_error(xes,lu_table[hidx].error);
|
||
|
if(lu_table[hidx].smode >= 0) xed3_operand_set_smode(xes,lu_table[hidx].smode);
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 1;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_REMOVE_SEGMENT_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct { xed_nt_func_ptr_t ntptr0;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[2] = {
|
||
|
/*h(0)=0 AGEN=0 -> nothing*/ {0},
|
||
|
/*h(1)=1 AGEN=1 -> nt NT[REMOVE_SEGMENT_AGEN1]*/ {xed_encode_nonterminal_REMOVE_SEGMENT_AGEN1_BIND}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
xed_uint64_t res = 1;
|
||
|
key = xed_enc_lu_AGEN(xes);
|
||
|
hidx = key - 0;
|
||
|
if(hidx <= 1) {
|
||
|
if(lu_table[hidx].ntptr0 != 0) res=(*lu_table[hidx].ntptr0)(xes);
|
||
|
xed_encoder_request_iforms(xes)->x_REMOVE_SEGMENT=hidx+1;
|
||
|
return res;
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_REMOVE_SEGMENT_AGEN1_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct {xed_uint32_t key; xed_int8_t error;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[12] = {
|
||
|
/*h(0)=0 SEG0=@ -> nothing*/ {0, -1},
|
||
|
/*h(149)=1 SEG0=XED_REG_CS -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {149, XED_ERROR_GENERAL_ERROR},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(151)=3 SEG0=XED_REG_DS -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {151, XED_ERROR_GENERAL_ERROR},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(148)=5 SEG0=XED_REG_ES -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {148, XED_ERROR_GENERAL_ERROR},
|
||
|
/*h(153)=6 SEG0=XED_REG_GS -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {153, XED_ERROR_GENERAL_ERROR},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(150)=8 SEG0=XED_REG_SS -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {150, XED_ERROR_GENERAL_ERROR},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(152)=11 SEG0=XED_REG_FS -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {152, XED_ERROR_GENERAL_ERROR}
|
||
|
};
|
||
|
xed_union64_t t, u;
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_SEG0(xes);
|
||
|
hidx = (t.u64 = 2654435769 * key, u.u64 = t.s.lo32 * 12ULL, u.s.hi32);
|
||
|
if(lu_table[hidx].key == key) {
|
||
|
if(lu_table[hidx].error >= 0) xed3_operand_set_error(xes,lu_table[hidx].error);
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_OVERRIDE_SEG0_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct {xed_uint32_t key; xed_int8_t seg_ovd;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[12] = {
|
||
|
/*h(0)=0 SEG0=@ -> FB SEG_OVD=0 value=0x0*/ {0, 0},
|
||
|
/*h(149)=1 SEG0=XED_REG_CS -> FB SEG_OVD=1 value=0x1*/ {149, 1},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(151)=3 SEG0=XED_REG_DS -> FB SEG_OVD=0 value=0x0*/ {151, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(148)=5 SEG0=XED_REG_ES -> FB SEG_OVD=3 value=0x3*/ {148, 3},
|
||
|
/*h(153)=6 SEG0=XED_REG_GS -> FB SEG_OVD=5 value=0x5*/ {153, 5},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(150)=8 SEG0=XED_REG_SS -> FB SEG_OVD=6 value=0x6*/ {150, 6},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(152)=11 SEG0=XED_REG_FS -> FB SEG_OVD=4 value=0x4*/ {152, 4}
|
||
|
};
|
||
|
xed_union64_t t, u;
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_SEG0(xes);
|
||
|
hidx = (t.u64 = 2654435769 * key, u.u64 = t.s.lo32 * 12ULL, u.s.hi32);
|
||
|
if(lu_table[hidx].key == key) {
|
||
|
xed3_operand_set_seg_ovd(xes,lu_table[hidx].seg_ovd);
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_OVERRIDE_SEG1_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct {xed_uint32_t key; xed_int8_t seg_ovd;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[12] = {
|
||
|
/*h(0)=0 SEG1=@ -> FB SEG_OVD=0 value=0x0*/ {0, 0},
|
||
|
/*h(149)=1 SEG1=XED_REG_CS -> FB SEG_OVD=1 value=0x1*/ {149, 1},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(151)=3 SEG1=XED_REG_DS -> FB SEG_OVD=0 value=0x0*/ {151, 0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(148)=5 SEG1=XED_REG_ES -> FB SEG_OVD=3 value=0x3*/ {148, 3},
|
||
|
/*h(153)=6 SEG1=XED_REG_GS -> FB SEG_OVD=5 value=0x5*/ {153, 5},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(150)=8 SEG1=XED_REG_SS -> FB SEG_OVD=6 value=0x6*/ {150, 6},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*empty slot1 */ {0,0},
|
||
|
/*h(152)=11 SEG1=XED_REG_FS -> FB SEG_OVD=4 value=0x4*/ {152, 4}
|
||
|
};
|
||
|
xed_union64_t t, u;
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_SEG1(xes);
|
||
|
hidx = (t.u64 = 2654435769 * key, u.u64 = t.s.lo32 * 12ULL, u.s.hi32);
|
||
|
if(lu_table[hidx].key == key) {
|
||
|
xed3_operand_set_seg_ovd(xes,lu_table[hidx].seg_ovd);
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_DF64_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct { xed_int8_t df64;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[3] = {
|
||
|
/*h(0)=0 MODE=0 -> nothing*/ {-1},
|
||
|
/*h(1)=1 MODE=1 -> nothing*/ {-1},
|
||
|
/*h(2)=2 MODE=2 -> FB DF64=1 value=0x1*/ {1}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_MODE(xes);
|
||
|
hidx = key - 0;
|
||
|
if(hidx <= 2) {
|
||
|
if(lu_table[hidx].df64 >= 0) xed3_operand_set_df64(xes,lu_table[hidx].df64);
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_OSZ_NONTERM_ENC_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct {xed_uint32_t key; xed_int8_t error ;xed_int8_t osz ;xed_int8_t rexw;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[47] = {
|
||
|
/*h(47)=0 VEXVALID=0 MODE=2 EOSZ=3 DF64=1 -> nothing*/ {47, -1,-1,-1},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(4)=12 VEXVALID=0 MODE=0 EOSZ=1 -> nothing*/ {4, -1,-1,-1},
|
||
|
/*h(20)=13 VEXVALID=0 MODE=1 EOSZ=1 -> FB OSZ=1 value=0x1*/ {20, -1,1,-1},
|
||
|
/*h(36)=14 VEXVALID=0 MODE=2 EOSZ=1 -> FB OSZ=1 value=0x1*/ {36, -1,1,-1},
|
||
|
/*h(5)=15 VEXVALID=0 MODE=0 EOSZ=1 -> nothing*/ {5, -1,-1,-1},
|
||
|
/*h(21)=16 VEXVALID=0 MODE=1 EOSZ=1 -> FB OSZ=1 value=0x1*/ {21, -1,1,-1},
|
||
|
/*h(37)=17 VEXVALID=0 MODE=2 EOSZ=1 -> FB OSZ=1 value=0x1*/ {37, -1,1,-1},
|
||
|
/*h(6)=18 VEXVALID=0 MODE=0 EOSZ=1 -> nothing*/ {6, -1,-1,-1},
|
||
|
/*h(22)=19 VEXVALID=0 MODE=1 EOSZ=1 -> FB OSZ=1 value=0x1*/ {22, -1,1,-1},
|
||
|
/*h(38)=20 VEXVALID=0 MODE=2 EOSZ=1 -> FB OSZ=1 value=0x1*/ {38, -1,1,-1},
|
||
|
/*h(7)=21 VEXVALID=0 MODE=0 EOSZ=1 -> nothing*/ {7, -1,-1,-1},
|
||
|
/*h(23)=22 VEXVALID=0 MODE=1 EOSZ=1 -> FB OSZ=1 value=0x1*/ {23, -1,1,-1},
|
||
|
/*h(39)=23 VEXVALID=0 MODE=2 EOSZ=1 -> FB OSZ=1 value=0x1*/ {39, -1,1,-1},
|
||
|
/*h(8)=24 VEXVALID=0 MODE=0 EOSZ=2 DF32=0 -> FB OSZ=1 value=0x1*/ {8, -1,1,-1},
|
||
|
/*h(24)=25 VEXVALID=0 MODE=1 EOSZ=2 -> nothing*/ {24, -1,-1,-1},
|
||
|
/*h(40)=26 VEXVALID=0 MODE=2 EOSZ=2 DF64=0 -> nothing*/ {40, -1,-1,-1},
|
||
|
/*h(9)=27 VEXVALID=0 MODE=0 EOSZ=2 DF32=1 -> nothing*/ {9, -1,-1,-1},
|
||
|
/*h(25)=28 VEXVALID=0 MODE=1 EOSZ=2 -> nothing*/ {25, -1,-1,-1},
|
||
|
/*h(41)=29 VEXVALID=0 MODE=2 EOSZ=2 DF64=0 -> nothing*/ {41, -1,-1,-1},
|
||
|
/*h(10)=30 VEXVALID=0 MODE=0 EOSZ=2 DF32=0 -> FB OSZ=1 value=0x1*/ {10, -1,1,-1},
|
||
|
/*h(26)=31 VEXVALID=0 MODE=1 EOSZ=2 -> nothing*/ {26, -1,-1,-1},
|
||
|
/*h(42)=32 VEXVALID=0 MODE=2 EOSZ=2 DF64=1 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {42, XED_ERROR_GENERAL_ERROR,-1,-1},
|
||
|
/*h(11)=33 VEXVALID=0 MODE=0 EOSZ=2 DF32=1 -> nothing*/ {11, -1,-1,-1},
|
||
|
/*h(27)=34 VEXVALID=0 MODE=1 EOSZ=2 -> nothing*/ {27, -1,-1,-1},
|
||
|
/*h(43)=35 VEXVALID=0 MODE=2 EOSZ=2 DF64=1 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {43, XED_ERROR_GENERAL_ERROR,-1,-1},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(44)=38 VEXVALID=0 MODE=2 EOSZ=3 DF64=0 -> FB REXW=1 value=0x1*/ {44, -1,-1,1},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(45)=41 VEXVALID=0 MODE=2 EOSZ=3 DF64=0 -> FB REXW=1 value=0x1*/ {45, -1,-1,1},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(46)=44 VEXVALID=0 MODE=2 EOSZ=3 DF64=1 -> nothing*/ {46, -1,-1,-1},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_DF32_DF64_EOSZ_MODE_VEXVALID(xes);
|
||
|
hidx = (3*key % 47);
|
||
|
if(lu_table[hidx].key == key) {
|
||
|
if(lu_table[hidx].error >= 0) xed3_operand_set_error(xes,lu_table[hidx].error);
|
||
|
if(lu_table[hidx].osz >= 0) xed3_operand_set_osz(xes,lu_table[hidx].osz);
|
||
|
if(lu_table[hidx].rexw >= 0) xed3_operand_set_rexw(xes,lu_table[hidx].rexw);
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 1;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_REFINING66_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
return 1;
|
||
|
(void)xes;
|
||
|
return 1;
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_IGNORE66_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
return 1;
|
||
|
(void)xes;
|
||
|
return 1;
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_IMMUNE66_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct { xed_int8_t df32 ;xed_int8_t eosz;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[1] = {
|
||
|
/*h(0)=0 MODE=0 -> FB EOSZ=2 value=0x2 FB DF32=1 value=0x1*/ {1,2}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_MODE(xes);
|
||
|
hidx = key - 0;
|
||
|
if(hidx == 0) {
|
||
|
xed3_operand_set_df32(xes,lu_table[hidx].df32);
|
||
|
xed3_operand_set_eosz(xes,lu_table[hidx].eosz);
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 1;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_IMMUNE66_LOOP64_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
return 1;
|
||
|
(void)xes;
|
||
|
return 1;
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_IMMUNE_REXW_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
return 1;
|
||
|
(void)xes;
|
||
|
return 1;
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_CR_WIDTH_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct { xed_int8_t df32 ;xed_int8_t df64 ;xed_int8_t eosz;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[3] = {
|
||
|
/*h(0)=0 MODE=0 -> FB DF32=1 value=0x1 FB EOSZ=2 value=0x2*/ {1,-1,2},
|
||
|
/*h(1)=1 MODE=1 -> nothing*/ {-1,-1,-1},
|
||
|
/*h(2)=2 MODE=2 -> FB DF64=1 value=0x1 FB EOSZ=3 value=0x3*/ {-1,1,3}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_MODE(xes);
|
||
|
hidx = key - 0;
|
||
|
if(hidx <= 2) {
|
||
|
if(lu_table[hidx].df32 >= 0) xed3_operand_set_df32(xes,lu_table[hidx].df32);
|
||
|
if(lu_table[hidx].df64 >= 0) xed3_operand_set_df64(xes,lu_table[hidx].df64);
|
||
|
if(lu_table[hidx].eosz >= 0) xed3_operand_set_eosz(xes,lu_table[hidx].eosz);
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_FORCE64_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
xed3_operand_set_df64(xes,1);
|
||
|
xed3_operand_set_eosz(xes,3);
|
||
|
return 1;
|
||
|
(void)xes;
|
||
|
return 1;
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_BRANCH_HINT_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
return 1;
|
||
|
(void)xes;
|
||
|
return 1;
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_CET_NO_TRACK_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
return 1;
|
||
|
(void)xes;
|
||
|
return 1;
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_VEXED_REX_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct { xed_nt_func_ptr_t ntptr0;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[4] = {
|
||
|
/*h(0)=0 VEXVALID=0 -> nt NT[REX_PREFIX_ENC]*/ {xed_encode_nonterminal_REX_PREFIX_ENC_BIND},
|
||
|
/*h(1)=1 VEXVALID=1 -> nt NT[NEWVEX_ENC]*/ {xed_encode_nonterminal_NEWVEX_ENC_BIND},
|
||
|
/*h(2)=2 VEXVALID=2 -> nt NT[EVEX_ENC]*/ {xed_encode_nonterminal_EVEX_ENC_BIND},
|
||
|
/*h(3)=3 VEXVALID=3 -> nt NT[XOP_ENC]*/ {xed_encode_nonterminal_XOP_ENC_BIND}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
xed_uint64_t res = 1;
|
||
|
key = xed_enc_lu_VEXVALID(xes);
|
||
|
hidx = key - 0;
|
||
|
if(hidx <= 3) {
|
||
|
if(lu_table[hidx].ntptr0 != 0) res=(*lu_table[hidx].ntptr0)(xes);
|
||
|
xed_encoder_request_iforms(xes)->x_VEXED_REX=hidx+1;
|
||
|
return res;
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_XOP_TYPE_ENC_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct { xed_uint32_t emit;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[3] = {
|
||
|
/*h(8)=0 MAP=8 -> emit 0x8F emit_type=numeric value=0x8f nbits=8*/ {1},
|
||
|
/*h(9)=1 MAP=9 -> emit 0x8F emit_type=numeric value=0x8f nbits=8*/ {2},
|
||
|
/*h(10)=2 MAP=10 -> emit 0x8F emit_type=numeric value=0x8f nbits=8*/ {3}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_MAP(xes);
|
||
|
hidx = key - 8;
|
||
|
if(hidx <= 2) {
|
||
|
xed_encoder_request_iforms(xes)->x_XOP_TYPE_ENC=lu_table[hidx].emit;
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
xed3_operand_set_error(xes,XED_ERROR_GENERAL_ERROR);
|
||
|
return 1;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_XOP_MAP_ENC_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct { xed_uint32_t emit;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[3] = {
|
||
|
/*h(8)=0 MAP=8 REXW[w]=* -> emit 0b0_1000 emit_type=numeric value=0x8 nbits=5 emit w emit_type=letters nbits=1*/ {1},
|
||
|
/*h(9)=1 MAP=9 REXW[w]=* -> emit 0b0_1001 emit_type=numeric value=0x9 nbits=5 emit w emit_type=letters nbits=1*/ {2},
|
||
|
/*h(10)=2 MAP=10 REXW[w]=* -> emit 0b0_1010 emit_type=numeric value=0xa nbits=5 emit w emit_type=letters nbits=1*/ {3}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_MAP(xes);
|
||
|
hidx = key - 8;
|
||
|
if(hidx <= 2) {
|
||
|
xed_encoder_request_iforms(xes)->x_XOP_MAP_ENC=lu_table[hidx].emit;
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
xed3_operand_set_error(xes,XED_ERROR_GENERAL_ERROR);
|
||
|
return 1;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_XOP_REXXB_ENC_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct { xed_int8_t error ;xed_uint32_t emit;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[16] = {
|
||
|
/*h(0)=0 MODE!=2 REXX=0 REXB=0 -> emit 0b11 emit_type=numeric value=0x3 nbits=2*/ {-1,4},
|
||
|
/*h(1)=1 MODE!=2 REXX=0 REXB=0 -> emit 0b11 emit_type=numeric value=0x3 nbits=2*/ {-1,4},
|
||
|
/*h(2)=2 MODE=2 REXX=0 REXB=0 -> emit 0b11 emit_type=numeric value=0x3 nbits=2*/ {-1,3},
|
||
|
/*h(3)=3 MODE!=2 REXX=0 REXB=0 -> emit 0b11 emit_type=numeric value=0x3 nbits=2*/ {-1,4},
|
||
|
/*h(4)=4 MODE!=2 REXX=0 REXB=1 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR,0},
|
||
|
/*h(5)=5 MODE!=2 REXX=0 REXB=1 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR,0},
|
||
|
/*h(6)=6 MODE=2 REXX=0 REXB=1 -> emit 0b10 emit_type=numeric value=0x2 nbits=2*/ {-1,7},
|
||
|
/*h(7)=7 MODE!=2 REXX=0 REXB=1 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR,0},
|
||
|
/*h(8)=8 MODE!=2 REXX=1 REXB=0 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR,0},
|
||
|
/*h(9)=9 MODE!=2 REXX=1 REXB=0 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR,0},
|
||
|
/*h(10)=10 MODE=2 REXX=1 REXB=0 -> emit 0b01 emit_type=numeric value=0x1 nbits=2*/ {-1,11},
|
||
|
/*h(11)=11 MODE!=2 REXX=1 REXB=0 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR,0},
|
||
|
/*h(12)=12 MODE!=2 REXX=1 REXB=1 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR,0},
|
||
|
/*h(13)=13 MODE!=2 REXX=1 REXB=1 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR,0},
|
||
|
/*h(14)=14 MODE=2 REXX=1 REXB=1 -> emit 0b00 emit_type=numeric value=0x0 nbits=2*/ {-1,15},
|
||
|
/*h(15)=15 MODE!=2 REXX=1 REXB=1 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR,0}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_MODE_REXB_REXX(xes);
|
||
|
hidx = key - 0;
|
||
|
if(hidx <= 15) {
|
||
|
if(lu_table[hidx].error >= 0) xed3_operand_set_error(xes,lu_table[hidx].error);
|
||
|
xed_encoder_request_iforms(xes)->x_XOP_REXXB_ENC=lu_table[hidx].emit;
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 1;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_BND_R_CHECK_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct { xed_int8_t error;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[16] = {
|
||
|
/*h(0)=0 REXR=0 REG=0x0 -> nothing*/ {-1},
|
||
|
/*h(1)=1 REXR=0 REG=0x1 -> nothing*/ {-1},
|
||
|
/*h(2)=2 REXR=0 REG=0x2 -> nothing*/ {-1},
|
||
|
/*h(3)=3 REXR=0 REG=0x3 -> nothing*/ {-1},
|
||
|
/*h(4)=4 REXR=0 REG=0x4 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
|
||
|
/*h(5)=5 REXR=0 REG=0x5 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
|
||
|
/*h(6)=6 REXR=0 REG=0x6 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
|
||
|
/*h(7)=7 REXR=0 REG=0x7 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
|
||
|
/*h(8)=8 REXR=1 REG=0x0 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
|
||
|
/*h(9)=9 REXR=1 REG=0x1 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
|
||
|
/*h(10)=10 REXR=1 REG=0x2 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
|
||
|
/*h(11)=11 REXR=1 REG=0x3 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
|
||
|
/*h(12)=12 REXR=1 REG=0x4 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
|
||
|
/*h(13)=13 REXR=1 REG=0x5 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
|
||
|
/*h(14)=14 REXR=1 REG=0x6 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
|
||
|
/*h(15)=15 REXR=1 REG=0x7 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_REG_REXR(xes);
|
||
|
hidx = key - 0;
|
||
|
if(hidx <= 15) {
|
||
|
if(lu_table[hidx].error >= 0) xed3_operand_set_error(xes,lu_table[hidx].error);
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_BND_B_CHECK_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct { xed_int8_t error;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[16] = {
|
||
|
/*h(0)=0 REXB=0 RM=0x0 -> nothing*/ {-1},
|
||
|
/*h(1)=1 REXB=1 RM=0x0 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
|
||
|
/*h(2)=2 REXB=0 RM=0x1 -> nothing*/ {-1},
|
||
|
/*h(3)=3 REXB=1 RM=0x1 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
|
||
|
/*h(4)=4 REXB=0 RM=0x2 -> nothing*/ {-1},
|
||
|
/*h(5)=5 REXB=1 RM=0x2 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
|
||
|
/*h(6)=6 REXB=0 RM=0x3 -> nothing*/ {-1},
|
||
|
/*h(7)=7 REXB=1 RM=0x3 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
|
||
|
/*h(8)=8 REXB=0 RM=0x4 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
|
||
|
/*h(9)=9 REXB=1 RM=0x4 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
|
||
|
/*h(10)=10 REXB=0 RM=0x5 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
|
||
|
/*h(11)=11 REXB=1 RM=0x5 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
|
||
|
/*h(12)=12 REXB=0 RM=0x6 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
|
||
|
/*h(13)=13 REXB=1 RM=0x6 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
|
||
|
/*h(14)=14 REXB=0 RM=0x7 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR},
|
||
|
/*h(15)=15 REXB=1 RM=0x7 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_REXB_RM(xes);
|
||
|
hidx = key - 0;
|
||
|
if(hidx <= 15) {
|
||
|
if(lu_table[hidx].error >= 0) xed3_operand_set_error(xes,lu_table[hidx].error);
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_VEX_REXR_ENC_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct { xed_int8_t error ;xed_uint32_t emit;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[8] = {
|
||
|
/*h(0)=0 MODE!=2 REXR=0 -> emit 0b1 emit_type=numeric value=0x1 nbits=1*/ {-1,4},
|
||
|
/*h(1)=1 MODE!=2 REXR=0 -> emit 0b1 emit_type=numeric value=0x1 nbits=1*/ {-1,4},
|
||
|
/*h(2)=2 MODE=2 REXR=0 -> emit 0b1 emit_type=numeric value=0x1 nbits=1*/ {-1,3},
|
||
|
/*h(3)=3 MODE!=2 REXR=0 -> emit 0b1 emit_type=numeric value=0x1 nbits=1*/ {-1,4},
|
||
|
/*h(4)=4 MODE!=2 REXR=1 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR,0},
|
||
|
/*h(5)=5 MODE!=2 REXR=1 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR,0},
|
||
|
/*h(6)=6 MODE=2 REXR=1 -> emit 0b0 emit_type=numeric value=0x0 nbits=1*/ {-1,7},
|
||
|
/*h(7)=7 MODE!=2 REXR=1 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR,0}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_MODE_REXR(xes);
|
||
|
hidx = key - 0;
|
||
|
if(hidx <= 7) {
|
||
|
if(lu_table[hidx].error >= 0) xed3_operand_set_error(xes,lu_table[hidx].error);
|
||
|
xed_encoder_request_iforms(xes)->x_VEX_REXR_ENC=lu_table[hidx].emit;
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_VEX_REXXB_ENC_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct { xed_int8_t error ;xed_uint32_t emit;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[16] = {
|
||
|
/*h(16)=0 MODE!=2 VEX_C4=1 REXX=0 REXB=0 -> emit 0b11 emit_type=numeric value=0x3 nbits=2*/ {-1,4},
|
||
|
/*h(17)=1 MODE!=2 VEX_C4=1 REXX=0 REXB=0 -> emit 0b11 emit_type=numeric value=0x3 nbits=2*/ {-1,4},
|
||
|
/*h(18)=2 MODE=2 VEX_C4=1 REXX=0 REXB=0 -> emit 0b11 emit_type=numeric value=0x3 nbits=2*/ {-1,3},
|
||
|
/*h(19)=3 MODE!=2 VEX_C4=1 REXX=0 REXB=0 -> emit 0b11 emit_type=numeric value=0x3 nbits=2*/ {-1,4},
|
||
|
/*h(20)=4 MODE!=2 VEX_C4=1 REXX=0 REXB=1 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR,0},
|
||
|
/*h(21)=5 MODE!=2 VEX_C4=1 REXX=0 REXB=1 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR,0},
|
||
|
/*h(22)=6 MODE=2 VEX_C4=1 REXX=0 REXB=1 -> emit 0b10 emit_type=numeric value=0x2 nbits=2*/ {-1,7},
|
||
|
/*h(23)=7 MODE!=2 VEX_C4=1 REXX=0 REXB=1 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR,0},
|
||
|
/*h(24)=8 MODE!=2 VEX_C4=1 REXX=1 REXB=0 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR,0},
|
||
|
/*h(25)=9 MODE!=2 VEX_C4=1 REXX=1 REXB=0 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR,0},
|
||
|
/*h(26)=10 MODE=2 VEX_C4=1 REXX=1 REXB=0 -> emit 0b01 emit_type=numeric value=0x1 nbits=2*/ {-1,11},
|
||
|
/*h(27)=11 MODE!=2 VEX_C4=1 REXX=1 REXB=0 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR,0},
|
||
|
/*h(28)=12 MODE!=2 VEX_C4=1 REXX=1 REXB=1 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR,0},
|
||
|
/*h(29)=13 MODE!=2 VEX_C4=1 REXX=1 REXB=1 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR,0},
|
||
|
/*h(30)=14 MODE=2 VEX_C4=1 REXX=1 REXB=1 -> emit 0b00 emit_type=numeric value=0x0 nbits=2*/ {-1,15},
|
||
|
/*h(31)=15 MODE!=2 VEX_C4=1 REXX=1 REXB=1 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR,0}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_MODE_REXB_REXX_VEX_C4(xes);
|
||
|
hidx = key - 16;
|
||
|
if(hidx <= 15) {
|
||
|
if(lu_table[hidx].error >= 0) xed3_operand_set_error(xes,lu_table[hidx].error);
|
||
|
xed_encoder_request_iforms(xes)->x_VEX_REXXB_ENC=lu_table[hidx].emit;
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 1;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_VEX_MAP_ENC_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct { xed_uint32_t emit;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[4] = {
|
||
|
/*h(16)=0 VEX_C4=1 MAP=0 REXW[w]=* -> emit 0b0_0000 emit_type=numeric value=0x0 nbits=5 emit w emit_type=letters nbits=1*/ {1},
|
||
|
/*h(17)=1 VEX_C4=1 MAP=1 REXW[w]=* -> emit 0b0_0001 emit_type=numeric value=0x1 nbits=5 emit w emit_type=letters nbits=1*/ {2},
|
||
|
/*h(18)=2 VEX_C4=1 MAP=2 REXW[w]=* -> emit 0b0_0010 emit_type=numeric value=0x2 nbits=5 emit w emit_type=letters nbits=1*/ {3},
|
||
|
/*h(19)=3 VEX_C4=1 MAP=3 REXW[w]=* -> emit 0b0_0011 emit_type=numeric value=0x3 nbits=5 emit w emit_type=letters nbits=1*/ {4}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_MAP_VEX_C4(xes);
|
||
|
hidx = key - 16;
|
||
|
if(hidx <= 3) {
|
||
|
xed_encoder_request_iforms(xes)->x_VEX_MAP_ENC=lu_table[hidx].emit;
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 1;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_VEX_REG_ENC_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct { xed_uint32_t emit;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[4] = {
|
||
|
/*h(0)=0 MODE!=2 VEXDEST3[u]=* VEXDEST210[ddd]=* -> emit 1_ddd emit_type=letters nbits=4*/ {4},
|
||
|
/*h(1)=1 MODE!=2 VEXDEST3[u]=* VEXDEST210[ddd]=* -> emit 1_ddd emit_type=letters nbits=4*/ {4},
|
||
|
/*h(2)=2 MODE=2 VEXDEST3[u]=* VEXDEST210[ddd]=* -> emit u_ddd emit_type=letters nbits=4*/ {3},
|
||
|
/*h(3)=3 MODE!=2 VEXDEST3[u]=* VEXDEST210[ddd]=* -> emit 1_ddd emit_type=letters nbits=4*/ {4}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_MODE(xes);
|
||
|
hidx = key - 0;
|
||
|
if(hidx <= 3) {
|
||
|
xed_encoder_request_iforms(xes)->x_VEX_REG_ENC=lu_table[hidx].emit;
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_VEX_ESCVL_ENC_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct { xed_uint32_t emit;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[8] = {
|
||
|
/*h(0)=0 VL=0 VEX_PREFIX=0 -> emit 0b000 emit_type=numeric value=0x0 nbits=3*/ {1},
|
||
|
/*h(1)=1 VL=0 VEX_PREFIX=1 -> emit 0b001 emit_type=numeric value=0x1 nbits=3*/ {2},
|
||
|
/*h(2)=2 VL=0 VEX_PREFIX=2 -> emit 0b011 emit_type=numeric value=0x3 nbits=3*/ {3},
|
||
|
/*h(3)=3 VL=0 VEX_PREFIX=3 -> emit 0b010 emit_type=numeric value=0x2 nbits=3*/ {4},
|
||
|
/*h(4)=4 VL=1 VEX_PREFIX=0 -> emit 0b100 emit_type=numeric value=0x4 nbits=3*/ {5},
|
||
|
/*h(5)=5 VL=1 VEX_PREFIX=1 -> emit 0b101 emit_type=numeric value=0x5 nbits=3*/ {6},
|
||
|
/*h(6)=6 VL=1 VEX_PREFIX=2 -> emit 0b111 emit_type=numeric value=0x7 nbits=3*/ {7},
|
||
|
/*h(7)=7 VL=1 VEX_PREFIX=3 -> emit 0b110 emit_type=numeric value=0x6 nbits=3*/ {8}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_VEX_PREFIX_VL(xes);
|
||
|
hidx = key - 0;
|
||
|
if(hidx <= 7) {
|
||
|
xed_encoder_request_iforms(xes)->x_VEX_ESCVL_ENC=lu_table[hidx].emit;
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_SE_IMM8_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct { xed_uint32_t emit;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[1] = {
|
||
|
/*h(0)=0 DUMMY=0 ESRC[ssss]=* UIMM0[dddd]=* -> emit ssss_dddd emit_type=letters nbits=8*/ {1}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_DUMMY(xes);
|
||
|
hidx = key - 0;
|
||
|
if(hidx == 0) {
|
||
|
xed_encoder_request_iforms(xes)->x_SE_IMM8=lu_table[hidx].emit;
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_VSIB_ENC_BASE_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct {xed_uint32_t key; xed_int8_t rexb ;xed_int8_t sibbase ;xed_nt_func_ptr_t ntptr0;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[104] = {
|
||
|
/*h(0)=0 BASE0=@ -> nt NT[DISP_WIDTH_32] FB REXB=0 value=0x0 FB SIBBASE=5 value=0x5*/ {0, 0,5,xed_encode_nonterminal_DISP_WIDTH_32_BIND},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(548)=3 BASE0=XED_REG_DX EASZ=1 -> FB REXB=0 value=0x0 FB SIBBASE=2 value=0x2*/ {548, 0,2,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(549)=7 BASE0=XED_REG_BX EASZ=1 -> FB REXB=0 value=0x0 FB SIBBASE=3 value=0x3*/ {549, 0,3,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(550)=11 BASE0=XED_REG_SP EASZ=1 -> FB REXB=0 value=0x0 FB SIBBASE=4 value=0x4*/ {550, 0,4,0},
|
||
|
/*h(1024)=12 BASE0=@ -> nt NT[DISP_WIDTH_32] FB REXB=0 value=0x0 FB SIBBASE=5 value=0x5*/ {1024, 0,5,xed_encode_nonterminal_DISP_WIDTH_32_BIND},
|
||
|
/*h(1074)=13 BASE0=XED_REG_EAX EASZ=2 -> FB REXB=0 value=0x0 FB SIBBASE=0 value=0x0*/ {1074, 0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(551)=15 BASE0=XED_REG_BP EASZ=1 -> nt NT[DISP_WIDTH_8_32] FB REXB=0 value=0x0 FB SIBBASE=5 value=0x5*/ {551, 0,5,xed_encode_nonterminal_DISP_WIDTH_8_32_BIND},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1075)=17 BASE0=XED_REG_ECX EASZ=2 -> FB REXB=0 value=0x0 FB SIBBASE=1 value=0x1*/ {1075, 0,1,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(552)=19 BASE0=XED_REG_SI EASZ=1 -> FB REXB=0 value=0x0 FB SIBBASE=6 value=0x6*/ {552, 0,6,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1076)=21 BASE0=XED_REG_EDX EASZ=2 -> FB REXB=0 value=0x0 FB SIBBASE=2 value=0x2*/ {1076, 0,2,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(553)=23 BASE0=XED_REG_DI EASZ=1 -> FB REXB=0 value=0x0 FB SIBBASE=7 value=0x7*/ {553, 0,7,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1077)=25 BASE0=XED_REG_EBX EASZ=2 -> FB REXB=0 value=0x0 FB SIBBASE=3 value=0x3*/ {1077, 0,3,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(554)=27 BASE0=XED_REG_R8W EASZ=1 -> FB REXB=1 value=0x1 FB SIBBASE=0 value=0x0*/ {554, 1,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1078)=29 BASE0=XED_REG_ESP EASZ=2 -> FB REXB=0 value=0x0 FB SIBBASE=4 value=0x4*/ {1078, 0,4,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(555)=31 BASE0=XED_REG_R9W EASZ=1 -> FB REXB=1 value=0x1 FB SIBBASE=1 value=0x1*/ {555, 1,1,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1079)=33 BASE0=XED_REG_EBP EASZ=2 -> nt NT[DISP_WIDTH_8_32] FB REXB=0 value=0x0 FB SIBBASE=5 value=0x5*/ {1079, 0,5,xed_encode_nonterminal_DISP_WIDTH_8_32_BIND},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(556)=35 BASE0=XED_REG_R10W EASZ=1 -> FB REXB=1 value=0x1 FB SIBBASE=2 value=0x2*/ {556, 1,2,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1080)=37 BASE0=XED_REG_ESI EASZ=2 -> FB REXB=0 value=0x0 FB SIBBASE=6 value=0x6*/ {1080, 0,6,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(557)=39 BASE0=XED_REG_R11W EASZ=1 -> FB REXB=1 value=0x1 FB SIBBASE=3 value=0x3*/ {557, 1,3,0},
|
||
|
/*h(1602)=40 BASE0=XED_REG_RAX EASZ=3 -> FB REXB=0 value=0x0 FB SIBBASE=0 value=0x0*/ {1602, 0,0,0},
|
||
|
/*h(1081)=41 BASE0=XED_REG_EDI EASZ=2 -> FB REXB=0 value=0x0 FB SIBBASE=7 value=0x7*/ {1081, 0,7,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(558)=43 BASE0=XED_REG_R12W EASZ=1 -> FB REXB=1 value=0x1 FB SIBBASE=4 value=0x4*/ {558, 1,4,0},
|
||
|
/*h(1603)=44 BASE0=XED_REG_RCX EASZ=3 -> FB REXB=0 value=0x0 FB SIBBASE=1 value=0x1*/ {1603, 0,1,0},
|
||
|
/*h(1082)=45 BASE0=XED_REG_R8D EASZ=2 -> FB REXB=1 value=0x1 FB SIBBASE=0 value=0x0*/ {1082, 1,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(559)=47 BASE0=XED_REG_R13W EASZ=1 -> nt NT[DISP_WIDTH_8_32] FB REXB=1 value=0x1 FB SIBBASE=5 value=0x5*/ {559, 1,5,xed_encode_nonterminal_DISP_WIDTH_8_32_BIND},
|
||
|
/*h(1604)=48 BASE0=XED_REG_RDX EASZ=3 -> FB REXB=0 value=0x0 FB SIBBASE=2 value=0x2*/ {1604, 0,2,0},
|
||
|
/*h(1083)=49 BASE0=XED_REG_R9D EASZ=2 -> FB REXB=1 value=0x1 FB SIBBASE=1 value=0x1*/ {1083, 1,1,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(560)=51 BASE0=XED_REG_R14W EASZ=1 -> FB REXB=1 value=0x1 FB SIBBASE=6 value=0x6*/ {560, 1,6,0},
|
||
|
/*h(1605)=52 BASE0=XED_REG_RBX EASZ=3 -> FB REXB=0 value=0x0 FB SIBBASE=3 value=0x3*/ {1605, 0,3,0},
|
||
|
/*h(1084)=53 BASE0=XED_REG_R10D EASZ=2 -> FB REXB=1 value=0x1 FB SIBBASE=2 value=0x2*/ {1084, 1,2,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(561)=55 BASE0=XED_REG_R15W EASZ=1 -> FB REXB=1 value=0x1 FB SIBBASE=7 value=0x7*/ {561, 1,7,0},
|
||
|
/*h(1606)=56 BASE0=XED_REG_RSP EASZ=3 -> FB REXB=0 value=0x0 FB SIBBASE=4 value=0x4*/ {1606, 0,4,0},
|
||
|
/*h(1085)=57 BASE0=XED_REG_R11D EASZ=2 -> FB REXB=1 value=0x1 FB SIBBASE=3 value=0x3*/ {1085, 1,3,0},
|
||
|
/*h(512)=58 BASE0=@ -> nt NT[DISP_WIDTH_32] FB REXB=0 value=0x0 FB SIBBASE=5 value=0x5*/ {512, 0,5,xed_encode_nonterminal_DISP_WIDTH_32_BIND},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1607)=60 BASE0=XED_REG_RBP EASZ=3 -> nt NT[DISP_WIDTH_8_32] FB REXB=0 value=0x0 FB SIBBASE=5 value=0x5*/ {1607, 0,5,xed_encode_nonterminal_DISP_WIDTH_8_32_BIND},
|
||
|
/*h(1086)=61 BASE0=XED_REG_R12D EASZ=2 -> FB REXB=1 value=0x1 FB SIBBASE=4 value=0x4*/ {1086, 1,4,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1608)=64 BASE0=XED_REG_RSI EASZ=3 -> FB REXB=0 value=0x0 FB SIBBASE=6 value=0x6*/ {1608, 0,6,0},
|
||
|
/*h(1087)=65 BASE0=XED_REG_R13D EASZ=2 -> nt NT[DISP_WIDTH_8_32] FB REXB=1 value=0x1 FB SIBBASE=5 value=0x5*/ {1087, 1,5,xed_encode_nonterminal_DISP_WIDTH_8_32_BIND},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1609)=68 BASE0=XED_REG_RDI EASZ=3 -> FB REXB=0 value=0x0 FB SIBBASE=7 value=0x7*/ {1609, 0,7,0},
|
||
|
/*h(1088)=69 BASE0=XED_REG_R14D EASZ=2 -> FB REXB=1 value=0x1 FB SIBBASE=6 value=0x6*/ {1088, 1,6,0},
|
||
|
/*h(1536)=70 BASE0=@ -> nt NT[DISP_WIDTH_32] FB REXB=0 value=0x0 FB SIBBASE=5 value=0x5*/ {1536, 0,5,xed_encode_nonterminal_DISP_WIDTH_32_BIND},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1610)=72 BASE0=XED_REG_R8 EASZ=3 -> FB REXB=1 value=0x1 FB SIBBASE=0 value=0x0*/ {1610, 1,0,0},
|
||
|
/*h(1089)=73 BASE0=XED_REG_R15D EASZ=2 -> FB REXB=1 value=0x1 FB SIBBASE=7 value=0x7*/ {1089, 1,7,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1611)=76 BASE0=XED_REG_R9 EASZ=3 -> FB REXB=1 value=0x1 FB SIBBASE=1 value=0x1*/ {1611, 1,1,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1612)=80 BASE0=XED_REG_R10 EASZ=3 -> FB REXB=1 value=0x1 FB SIBBASE=2 value=0x2*/ {1612, 1,2,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1613)=84 BASE0=XED_REG_R11 EASZ=3 -> FB REXB=1 value=0x1 FB SIBBASE=3 value=0x3*/ {1613, 1,3,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1614)=88 BASE0=XED_REG_R12 EASZ=3 -> FB REXB=1 value=0x1 FB SIBBASE=4 value=0x4*/ {1614, 1,4,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(546)=90 BASE0=XED_REG_AX EASZ=1 -> FB REXB=0 value=0x0 FB SIBBASE=0 value=0x0*/ {546, 0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1615)=92 BASE0=XED_REG_R13 EASZ=3 -> nt NT[DISP_WIDTH_8_32] FB REXB=1 value=0x1 FB SIBBASE=5 value=0x5*/ {1615, 1,5,xed_encode_nonterminal_DISP_WIDTH_8_32_BIND},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(547)=94 BASE0=XED_REG_CX EASZ=1 -> FB REXB=0 value=0x0 FB SIBBASE=1 value=0x1*/ {547, 0,1,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1616)=96 BASE0=XED_REG_R14 EASZ=3 -> FB REXB=1 value=0x1 FB SIBBASE=6 value=0x6*/ {1616, 1,6,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*h(1617)=100 BASE0=XED_REG_R15 EASZ=3 -> FB REXB=1 value=0x1 FB SIBBASE=7 value=0x7*/ {1617, 1,7,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0},
|
||
|
/*empty slot1 */ {0,0,0,0}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
xed_uint64_t res = 1;
|
||
|
key = xed_enc_lu_BASE0_EASZ(xes);
|
||
|
hidx = ((4*key % 199) % 104);
|
||
|
if(lu_table[hidx].key == key) {
|
||
|
xed3_operand_set_rexb(xes,lu_table[hidx].rexb);
|
||
|
xed3_operand_set_sibbase(xes,lu_table[hidx].sibbase);
|
||
|
if(lu_table[hidx].ntptr0 != 0) res=(*lu_table[hidx].ntptr0)(xes);
|
||
|
xed_encoder_request_iforms(xes)->x_VSIB_ENC_BASE=hidx+1;
|
||
|
return res;
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
xed3_operand_set_error(xes,XED_ERROR_GENERAL_ERROR);
|
||
|
return 1;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_VSIB_ENC_SCALE_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct {xed_uint32_t key; xed_int8_t sibscale;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[5] = {
|
||
|
/*h(0)=0 SCALE=0 -> FB SIBSCALE=0 value=0x0*/ {0, 0},
|
||
|
/*h(2)=1 SCALE=2 -> FB SIBSCALE=1 value=0x1*/ {2, 1},
|
||
|
/*h(4)=2 SCALE=4 -> FB SIBSCALE=2 value=0x2*/ {4, 2},
|
||
|
/*h(1)=3 SCALE=1 -> FB SIBSCALE=0 value=0x0*/ {1, 0},
|
||
|
/*h(8)=4 SCALE=8 -> FB SIBSCALE=3 value=0x3*/ {8, 3}
|
||
|
};
|
||
|
xed_union64_t t, u;
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_SCALE(xes);
|
||
|
hidx = (t.u64 = 2654435769 * key, u.u64 = t.s.lo32 * 5ULL, u.s.hi32);
|
||
|
if(lu_table[hidx].key == key) {
|
||
|
xed3_operand_set_sibscale(xes,lu_table[hidx].sibscale);
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
xed3_operand_set_error(xes,XED_ERROR_GENERAL_ERROR);
|
||
|
return 1;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_VSIB_ENC_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct { xed_uint32_t emit;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[1] = {
|
||
|
/*h(0)=0 DUMMY=0 SIBBASE[bbb]=* SIBINDEX[iii]=* SIBSCALE[ss]=* -> emit ss_iii_bbb emit_type=letters nbits=8*/ {1}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_DUMMY(xes);
|
||
|
hidx = key - 0;
|
||
|
if(hidx == 0) {
|
||
|
xed_encoder_request_iforms(xes)->x_VSIB_ENC=lu_table[hidx].emit;
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_VSIB_ENC_INDEX_XMM_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct { xed_int8_t rexx ;xed_int8_t sibindex;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[16] = {
|
||
|
/*h(188)=0 INDEX=XED_REG_XMM0 -> FB REXX=0 value=0x0 FB SIBINDEX=0 value=0x0*/ {0,0},
|
||
|
/*h(189)=1 INDEX=XED_REG_XMM1 -> FB REXX=0 value=0x0 FB SIBINDEX=1 value=0x1*/ {0,1},
|
||
|
/*h(190)=2 INDEX=XED_REG_XMM2 -> FB REXX=0 value=0x0 FB SIBINDEX=2 value=0x2*/ {0,2},
|
||
|
/*h(191)=3 INDEX=XED_REG_XMM3 -> FB REXX=0 value=0x0 FB SIBINDEX=3 value=0x3*/ {0,3},
|
||
|
/*h(192)=4 INDEX=XED_REG_XMM4 -> FB REXX=0 value=0x0 FB SIBINDEX=4 value=0x4*/ {0,4},
|
||
|
/*h(193)=5 INDEX=XED_REG_XMM5 -> FB REXX=0 value=0x0 FB SIBINDEX=5 value=0x5*/ {0,5},
|
||
|
/*h(194)=6 INDEX=XED_REG_XMM6 -> FB REXX=0 value=0x0 FB SIBINDEX=6 value=0x6*/ {0,6},
|
||
|
/*h(195)=7 INDEX=XED_REG_XMM7 -> FB REXX=0 value=0x0 FB SIBINDEX=7 value=0x7*/ {0,7},
|
||
|
/*h(196)=8 INDEX=XED_REG_XMM8 -> FB REXX=1 value=0x1 FB SIBINDEX=0 value=0x0*/ {1,0},
|
||
|
/*h(197)=9 INDEX=XED_REG_XMM9 -> FB REXX=1 value=0x1 FB SIBINDEX=1 value=0x1*/ {1,1},
|
||
|
/*h(198)=10 INDEX=XED_REG_XMM10 -> FB REXX=1 value=0x1 FB SIBINDEX=2 value=0x2*/ {1,2},
|
||
|
/*h(199)=11 INDEX=XED_REG_XMM11 -> FB REXX=1 value=0x1 FB SIBINDEX=3 value=0x3*/ {1,3},
|
||
|
/*h(200)=12 INDEX=XED_REG_XMM12 -> FB REXX=1 value=0x1 FB SIBINDEX=4 value=0x4*/ {1,4},
|
||
|
/*h(201)=13 INDEX=XED_REG_XMM13 -> FB REXX=1 value=0x1 FB SIBINDEX=5 value=0x5*/ {1,5},
|
||
|
/*h(202)=14 INDEX=XED_REG_XMM14 -> FB REXX=1 value=0x1 FB SIBINDEX=6 value=0x6*/ {1,6},
|
||
|
/*h(203)=15 INDEX=XED_REG_XMM15 -> FB REXX=1 value=0x1 FB SIBINDEX=7 value=0x7*/ {1,7}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_INDEX(xes);
|
||
|
hidx = key - 188;
|
||
|
if(hidx <= 15) {
|
||
|
xed3_operand_set_rexx(xes,lu_table[hidx].rexx);
|
||
|
xed3_operand_set_sibindex(xes,lu_table[hidx].sibindex);
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_VSIB_ENC_INDEX_YMM_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct { xed_int8_t rexx ;xed_int8_t sibindex;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[16] = {
|
||
|
/*h(220)=0 INDEX=XED_REG_YMM0 -> FB REXX=0 value=0x0 FB SIBINDEX=0 value=0x0*/ {0,0},
|
||
|
/*h(221)=1 INDEX=XED_REG_YMM1 -> FB REXX=0 value=0x0 FB SIBINDEX=1 value=0x1*/ {0,1},
|
||
|
/*h(222)=2 INDEX=XED_REG_YMM2 -> FB REXX=0 value=0x0 FB SIBINDEX=2 value=0x2*/ {0,2},
|
||
|
/*h(223)=3 INDEX=XED_REG_YMM3 -> FB REXX=0 value=0x0 FB SIBINDEX=3 value=0x3*/ {0,3},
|
||
|
/*h(224)=4 INDEX=XED_REG_YMM4 -> FB REXX=0 value=0x0 FB SIBINDEX=4 value=0x4*/ {0,4},
|
||
|
/*h(225)=5 INDEX=XED_REG_YMM5 -> FB REXX=0 value=0x0 FB SIBINDEX=5 value=0x5*/ {0,5},
|
||
|
/*h(226)=6 INDEX=XED_REG_YMM6 -> FB REXX=0 value=0x0 FB SIBINDEX=6 value=0x6*/ {0,6},
|
||
|
/*h(227)=7 INDEX=XED_REG_YMM7 -> FB REXX=0 value=0x0 FB SIBINDEX=7 value=0x7*/ {0,7},
|
||
|
/*h(228)=8 INDEX=XED_REG_YMM8 -> FB REXX=1 value=0x1 FB SIBINDEX=0 value=0x0*/ {1,0},
|
||
|
/*h(229)=9 INDEX=XED_REG_YMM9 -> FB REXX=1 value=0x1 FB SIBINDEX=1 value=0x1*/ {1,1},
|
||
|
/*h(230)=10 INDEX=XED_REG_YMM10 -> FB REXX=1 value=0x1 FB SIBINDEX=2 value=0x2*/ {1,2},
|
||
|
/*h(231)=11 INDEX=XED_REG_YMM11 -> FB REXX=1 value=0x1 FB SIBINDEX=3 value=0x3*/ {1,3},
|
||
|
/*h(232)=12 INDEX=XED_REG_YMM12 -> FB REXX=1 value=0x1 FB SIBINDEX=4 value=0x4*/ {1,4},
|
||
|
/*h(233)=13 INDEX=XED_REG_YMM13 -> FB REXX=1 value=0x1 FB SIBINDEX=5 value=0x5*/ {1,5},
|
||
|
/*h(234)=14 INDEX=XED_REG_YMM14 -> FB REXX=1 value=0x1 FB SIBINDEX=6 value=0x6*/ {1,6},
|
||
|
/*h(235)=15 INDEX=XED_REG_YMM15 -> FB REXX=1 value=0x1 FB SIBINDEX=7 value=0x7*/ {1,7}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_INDEX(xes);
|
||
|
hidx = key - 220;
|
||
|
if(hidx <= 15) {
|
||
|
xed3_operand_set_rexx(xes,lu_table[hidx].rexx);
|
||
|
xed3_operand_set_sibindex(xes,lu_table[hidx].sibindex);
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_DISP_WIDTH_8_32_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct {xed_uint32_t key; } lu_entry_t;
|
||
|
static const lu_entry_t lu_table[2] = {
|
||
|
/*h(8)=0 DISP_WIDTH=8 -> nothing*/ {8, },
|
||
|
/*h(32)=1 DISP_WIDTH=32 -> nothing*/ {32, }
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_DISP_WIDTH(xes);
|
||
|
hidx = ((3*key % 5) % 2);
|
||
|
if(lu_table[hidx].key == key) {
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_NELEM_TUPLE1_4X_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
return 1;
|
||
|
(void)xes;
|
||
|
return 1;
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_EVEX_62_REXR_ENC_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct {xed_uint32_t key; xed_int8_t error ;xed_uint32_t emit;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[6] = {
|
||
|
/*h(5)=0 MODE=1 REXR=1 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {5, XED_ERROR_GENERAL_ERROR,0},
|
||
|
/*h(2)=1 MODE=2 REXR=0 -> emit 0x62 emit_type=numeric value=0x62 nbits=8 emit 0b1 emit_type=numeric value=0x1 nbits=1*/ {2, -1,2},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*h(1)=3 MODE=1 REXR=0 -> emit 0x62 emit_type=numeric value=0x62 nbits=8 emit 0b1 emit_type=numeric value=0x1 nbits=1*/ {1, -1,4},
|
||
|
/*h(6)=4 MODE=2 REXR=1 -> emit 0x62 emit_type=numeric value=0x62 nbits=8 emit 0b0 emit_type=numeric value=0x0 nbits=1*/ {6, -1,5},
|
||
|
/*empty slot1 */ {0,0,0}
|
||
|
};
|
||
|
xed_union64_t t, u;
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_MODE_REXR(xes);
|
||
|
hidx = (t.u64 = 2654435769 * key, u.u64 = t.s.lo32 * 6ULL, u.s.hi32);
|
||
|
if(lu_table[hidx].key == key) {
|
||
|
if(lu_table[hidx].error >= 0) xed3_operand_set_error(xes,lu_table[hidx].error);
|
||
|
xed_encoder_request_iforms(xes)->x_EVEX_62_REXR_ENC=lu_table[hidx].emit;
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_EVEX_REXX_ENC_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct {xed_uint32_t key; xed_int8_t error ;xed_uint32_t emit;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[6] = {
|
||
|
/*h(5)=0 MODE=1 REXX=1 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {5, XED_ERROR_GENERAL_ERROR,0},
|
||
|
/*h(2)=1 MODE=2 REXX=0 -> emit 0b1 emit_type=numeric value=0x1 nbits=1*/ {2, -1,2},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*h(1)=3 MODE=1 REXX=0 -> emit 0b1 emit_type=numeric value=0x1 nbits=1*/ {1, -1,4},
|
||
|
/*h(6)=4 MODE=2 REXX=1 -> emit 0b0 emit_type=numeric value=0x0 nbits=1*/ {6, -1,5},
|
||
|
/*empty slot1 */ {0,0,0}
|
||
|
};
|
||
|
xed_union64_t t, u;
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_MODE_REXX(xes);
|
||
|
hidx = (t.u64 = 2654435769 * key, u.u64 = t.s.lo32 * 6ULL, u.s.hi32);
|
||
|
if(lu_table[hidx].key == key) {
|
||
|
if(lu_table[hidx].error >= 0) xed3_operand_set_error(xes,lu_table[hidx].error);
|
||
|
xed_encoder_request_iforms(xes)->x_EVEX_REXX_ENC=lu_table[hidx].emit;
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_EVEX_REXB_ENC_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct {xed_uint32_t key; xed_int8_t error ;xed_uint32_t emit;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[6] = {
|
||
|
/*h(5)=0 MODE=1 REXB=1 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {5, XED_ERROR_GENERAL_ERROR,0},
|
||
|
/*h(2)=1 MODE=2 REXB=0 -> emit 0b1 emit_type=numeric value=0x1 nbits=1*/ {2, -1,2},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*h(1)=3 MODE=1 REXB=0 -> emit 0b1 emit_type=numeric value=0x1 nbits=1*/ {1, -1,4},
|
||
|
/*h(6)=4 MODE=2 REXB=1 -> emit 0b0 emit_type=numeric value=0x0 nbits=1*/ {6, -1,5},
|
||
|
/*empty slot1 */ {0,0,0}
|
||
|
};
|
||
|
xed_union64_t t, u;
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_MODE_REXB(xes);
|
||
|
hidx = (t.u64 = 2654435769 * key, u.u64 = t.s.lo32 * 6ULL, u.s.hi32);
|
||
|
if(lu_table[hidx].key == key) {
|
||
|
if(lu_table[hidx].error >= 0) xed3_operand_set_error(xes,lu_table[hidx].error);
|
||
|
xed_encoder_request_iforms(xes)->x_EVEX_REXB_ENC=lu_table[hidx].emit;
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_EVEX_REXRR_ENC_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct {xed_uint32_t key; xed_int8_t error ;xed_uint32_t emit;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[6] = {
|
||
|
/*h(5)=0 MODE=1 REXRR=1 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {5, XED_ERROR_GENERAL_ERROR,0},
|
||
|
/*h(2)=1 MODE=2 REXRR=0 -> emit 0b1 emit_type=numeric value=0x1 nbits=1*/ {2, -1,2},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*h(1)=3 MODE=1 REXRR=0 -> emit 0b1 emit_type=numeric value=0x1 nbits=1*/ {1, -1,4},
|
||
|
/*h(6)=4 MODE=2 REXRR=1 -> emit 0b0 emit_type=numeric value=0x0 nbits=1*/ {6, -1,5},
|
||
|
/*empty slot1 */ {0,0,0}
|
||
|
};
|
||
|
xed_union64_t t, u;
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_MODE_REXRR(xes);
|
||
|
hidx = (t.u64 = 2654435769 * key, u.u64 = t.s.lo32 * 6ULL, u.s.hi32);
|
||
|
if(lu_table[hidx].key == key) {
|
||
|
if(lu_table[hidx].error >= 0) xed3_operand_set_error(xes,lu_table[hidx].error);
|
||
|
xed_encoder_request_iforms(xes)->x_EVEX_REXRR_ENC=lu_table[hidx].emit;
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_EVEX_MAP_ENC_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct { xed_int8_t error ;xed_uint32_t emit;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[7] = {
|
||
|
/*h(0)=0 MAP=0 -> emit 0b0000 emit_type=numeric value=0x0 nbits=4*/ {-1,1},
|
||
|
/*h(1)=1 MAP=1 -> emit 0b0001 emit_type=numeric value=0x1 nbits=4*/ {-1,2},
|
||
|
/*h(2)=2 MAP=2 -> emit 0b0010 emit_type=numeric value=0x2 nbits=4*/ {-1,3},
|
||
|
/*h(3)=3 MAP=3 -> emit 0b0011 emit_type=numeric value=0x3 nbits=4*/ {-1,4},
|
||
|
/*h(4)=4 MAP=4 -> FB ERROR=XED_ERROR_GENERAL_ERROR*/ {XED_ERROR_GENERAL_ERROR,0},
|
||
|
/*h(5)=5 MAP=5 -> emit 0b0101 emit_type=numeric value=0x5 nbits=4*/ {-1,6},
|
||
|
/*h(6)=6 MAP=6 -> emit 0b0110 emit_type=numeric value=0x6 nbits=4*/ {-1,7}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_MAP(xes);
|
||
|
hidx = key - 0;
|
||
|
if(hidx <= 6) {
|
||
|
if(lu_table[hidx].error >= 0) xed3_operand_set_error(xes,lu_table[hidx].error);
|
||
|
xed_encoder_request_iforms(xes)->x_EVEX_MAP_ENC=lu_table[hidx].emit;
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_EVEX_REXW_VVVV_ENC_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct { xed_uint32_t emit;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[1] = {
|
||
|
/*h(0)=0 DUMMY=0 REXW[w]=* VEXDEST3[u]=* VEXDEST210[ddd]=* -> emit w emit_type=letters nbits=1 emit u_ddd emit_type=letters nbits=4*/ {1}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_DUMMY(xes);
|
||
|
hidx = key - 0;
|
||
|
if(hidx == 0) {
|
||
|
xed_encoder_request_iforms(xes)->x_EVEX_REXW_VVVV_ENC=lu_table[hidx].emit;
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_EVEX_UPP_ENC_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct { xed_uint32_t emit;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[4] = {
|
||
|
/*h(0)=0 VEX_PREFIX=0 -> emit 0b100 emit_type=numeric value=0x4 nbits=3*/ {1},
|
||
|
/*h(1)=1 VEX_PREFIX=1 -> emit 0b101 emit_type=numeric value=0x5 nbits=3*/ {2},
|
||
|
/*h(2)=2 VEX_PREFIX=2 -> emit 0b111 emit_type=numeric value=0x7 nbits=3*/ {3},
|
||
|
/*h(3)=3 VEX_PREFIX=3 -> emit 0b110 emit_type=numeric value=0x6 nbits=3*/ {4}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_VEX_PREFIX(xes);
|
||
|
hidx = key - 0;
|
||
|
if(hidx <= 3) {
|
||
|
xed_encoder_request_iforms(xes)->x_EVEX_UPP_ENC=lu_table[hidx].emit;
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_EVEX_LL_ENC_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct {xed_uint32_t key; xed_int8_t bcrc ;xed_int8_t llrc;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[19] = {
|
||
|
/*h(0)=0 ROUNDC=0 SAE=0 VL=0 -> FB LLRC=0 value=0x0*/ {0, -1,0},
|
||
|
/*h(32)=1 ROUNDC=0 SAE=0 VL=2 -> FB LLRC=2 value=0x2*/ {32, -1,2},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*h(8)=5 ROUNDC=0 SAE=1 VL=0 -> FB LLRC=0 value=0x0 FB BCRC=1 value=0x1*/ {8, 1,0},
|
||
|
/*h(40)=6 ROUNDC=0 SAE=1 VL=2 -> FB LLRC=0 value=0x0 FB BCRC=1 value=0x1*/ {40, 1,0},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*h(9)=8 ROUNDC=1 SAE=1 VL=0 -> FB LLRC=0 value=0x0 FB BCRC=1 value=0x1*/ {9, 1,0},
|
||
|
/*h(41)=9 ROUNDC=1 SAE=1 VL=2 -> FB LLRC=0 value=0x0 FB BCRC=1 value=0x1*/ {41, 1,0},
|
||
|
/*h(16)=10 ROUNDC=0 SAE=0 VL=1 -> FB LLRC=1 value=0x1*/ {16, -1,1},
|
||
|
/*h(10)=11 ROUNDC=2 SAE=1 VL=0 -> FB LLRC=1 value=0x1 FB BCRC=1 value=0x1*/ {10, 1,1},
|
||
|
/*h(42)=12 ROUNDC=2 SAE=1 VL=2 -> FB LLRC=1 value=0x1 FB BCRC=1 value=0x1*/ {42, 1,1},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*h(11)=14 ROUNDC=3 SAE=1 VL=0 -> FB LLRC=2 value=0x2 FB BCRC=1 value=0x1*/ {11, 1,2},
|
||
|
/*h(43)=15 ROUNDC=3 SAE=1 VL=2 -> FB LLRC=2 value=0x2 FB BCRC=1 value=0x1*/ {43, 1,2},
|
||
|
/*empty slot1 */ {0,0,0},
|
||
|
/*h(12)=17 ROUNDC=4 SAE=1 VL=0 -> FB LLRC=3 value=0x3 FB BCRC=1 value=0x1*/ {12, 1,3},
|
||
|
/*h(44)=18 ROUNDC=4 SAE=1 VL=2 -> FB LLRC=3 value=0x3 FB BCRC=1 value=0x1*/ {44, 1,3}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_ROUNDC_SAE_VL(xes);
|
||
|
hidx = (3*key % 19);
|
||
|
if(lu_table[hidx].key == key) {
|
||
|
if(lu_table[hidx].bcrc >= 0) xed3_operand_set_bcrc(xes,lu_table[hidx].bcrc);
|
||
|
xed3_operand_set_llrc(xes,lu_table[hidx].llrc);
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_AVX512_EVEX_BYTE3_ENC_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct { xed_uint32_t emit;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[2] = {
|
||
|
/*h(0)=0 ZEROING[z]=* LLRC[nn]=* BCRC[b]=* VEXDEST4=0 MASK[aaa]=* -> emit z_nn_b emit_type=letters nbits=4 emit 0b1 emit_type=numeric value=0x1 nbits=1 emit aaa emit_type=letters nbits=3*/ {1},
|
||
|
/*h(1)=1 ZEROING[z]=* LLRC[nn]=* BCRC[b]=* VEXDEST4=1 MASK[aaa]=* -> emit z_nn_b emit_type=letters nbits=4 emit 0b0 emit_type=numeric value=0x0 nbits=1 emit aaa emit_type=letters nbits=3*/ {2}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_VEXDEST4(xes);
|
||
|
hidx = key - 0;
|
||
|
if(hidx <= 1) {
|
||
|
xed_encoder_request_iforms(xes)->x_AVX512_EVEX_BYTE3_ENC=lu_table[hidx].emit;
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
xed_uint32_t xed_encode_nonterminal_AVX512_ROUND_BIND(xed_encoder_request_t* xes)
|
||
|
{
|
||
|
typedef struct { xed_int8_t bcrc ;xed_int8_t llrc;} lu_entry_t;
|
||
|
static const lu_entry_t lu_table[4] = {
|
||
|
/*h(1)=0 ROUNDC=1 -> FB LLRC=0 value=0x0 FB BCRC=1 value=0x1*/ {1,0},
|
||
|
/*h(2)=1 ROUNDC=2 -> FB LLRC=1 value=0x1 FB BCRC=1 value=0x1*/ {1,1},
|
||
|
/*h(3)=2 ROUNDC=3 -> FB LLRC=2 value=0x2 FB BCRC=1 value=0x1*/ {1,2},
|
||
|
/*h(4)=3 ROUNDC=4 -> FB LLRC=3 value=0x3 FB BCRC=1 value=0x1*/ {1,3}
|
||
|
};
|
||
|
xed_uint64_t key = 0;
|
||
|
xed_uint64_t hidx = 0;
|
||
|
key = xed_enc_lu_ROUNDC(xes);
|
||
|
hidx = key - 1;
|
||
|
if(hidx <= 3) {
|
||
|
xed3_operand_set_bcrc(xes,lu_table[hidx].bcrc);
|
||
|
xed3_operand_set_llrc(xes,lu_table[hidx].llrc);
|
||
|
return 1;
|
||
|
}
|
||
|
else{
|
||
|
return 0;
|
||
|
}
|
||
|
}
|