.. -1(%rsp) should now be regarded as uninitialised.
*/
static
-void make_redzone_AbiHint ( VexAbiInfo* vbi,
+void make_redzone_AbiHint ( const VexAbiInfo* vbi,
IRTemp new_rsp, IRTemp nia, const HChar* who )
{
Int szB = vbi->guest_stack_redzone_size;
by sorb, and also dealing with any address size override
present. */
static
-IRExpr* handleAddrOverrides ( VexAbiInfo* vbi,
+IRExpr* handleAddrOverrides ( const VexAbiInfo* vbi,
Prefix pfx, IRExpr* virtual )
{
/* --- segment overrides --- */
static
IRTemp disAMode ( /*OUT*/Int* len,
- VexAbiInfo* vbi, Prefix pfx, Long delta,
+ const VexAbiInfo* vbi, Prefix pfx, Long delta,
/*OUT*/HChar* buf, Int extra_bytes )
{
UChar mod_reg_rm = getUChar(delta);
index and its multiplicand. */
static
IRTemp disAVSIBMode ( /*OUT*/Int* len,
- VexAbiInfo* vbi, Prefix pfx, Long delta,
+ const VexAbiInfo* vbi, Prefix pfx, Long delta,
/*OUT*/HChar* buf, /*OUT*/UInt* rI,
IRType ty, /*OUT*/Int* vscale )
{
PUT tmpa, %G
*/
static
-ULong dis_op2_E_G ( VexAbiInfo* vbi,
+ULong dis_op2_E_G ( const VexAbiInfo* vbi,
Prefix pfx,
Bool addSubCarry,
IROp op8,
ST tmpv, (tmpa)
*/
static
-ULong dis_op2_G_E ( VexAbiInfo* vbi,
+ULong dis_op2_G_E ( const VexAbiInfo* vbi,
Prefix pfx,
Bool addSubCarry,
IROp op8,
PUT tmpb, %G
*/
static
-ULong dis_mov_E_G ( VexAbiInfo* vbi,
+ULong dis_mov_E_G ( const VexAbiInfo* vbi,
Prefix pfx,
Int size,
Long delta0 )
ST tmpv, (tmpa)
*/
static
-ULong dis_mov_G_E ( VexAbiInfo* vbi,
+ULong dis_mov_G_E ( const VexAbiInfo* vbi,
Prefix pfx,
Int size,
Long delta0,
/* Sign- and Zero-extending moves. */
static
-ULong dis_movx_E_G ( VexAbiInfo* vbi,
+ULong dis_movx_E_G ( const VexAbiInfo* vbi,
Prefix pfx,
Long delta, Int szs, Int szd, Bool sign_extend )
{
}
static
-ULong dis_Grp1 ( VexAbiInfo* vbi,
+ULong dis_Grp1 ( const VexAbiInfo* vbi,
Prefix pfx,
Long delta, UChar modrm,
Int am_sz, Int d_sz, Int sz, Long d64 )
expression. */
static
-ULong dis_Grp2 ( VexAbiInfo* vbi,
+ULong dis_Grp2 ( const VexAbiInfo* vbi,
Prefix pfx,
Long delta, UChar modrm,
Int am_sz, Int d_sz, Int sz, IRExpr* shift_expr,
/* Group 8 extended opcodes (but BT/BTS/BTC/BTR only). */
static
-ULong dis_Grp8_Imm ( VexAbiInfo* vbi,
+ULong dis_Grp8_Imm ( const VexAbiInfo* vbi,
Prefix pfx,
Long delta, UChar modrm,
Int am_sz, Int sz, ULong src_val,
/* Group 3 extended opcodes. We have to decide here whether F2 and F3
might be valid.*/
static
-ULong dis_Grp3 ( VexAbiInfo* vbi,
+ULong dis_Grp3 ( const VexAbiInfo* vbi,
Prefix pfx, Int sz, Long delta, Bool* decode_OK )
{
Long d64;
/* Group 4 extended opcodes. We have to decide here whether F2 and F3
might be valid. */
static
-ULong dis_Grp4 ( VexAbiInfo* vbi,
+ULong dis_Grp4 ( const VexAbiInfo* vbi,
Prefix pfx, Long delta, Bool* decode_OK )
{
Int alen;
/* Group 5 extended opcodes. We have to decide here whether F2 and F3
might be valid. */
static
-ULong dis_Grp5 ( VexAbiInfo* vbi,
+ULong dis_Grp5 ( const VexAbiInfo* vbi,
Prefix pfx, Int sz, Long delta,
/*MOD*/DisResult* dres, /*OUT*/Bool* decode_OK )
{
/* IMUL E, G. Supplied eip points to the modR/M byte. */
static
-ULong dis_mul_E_G ( VexAbiInfo* vbi,
+ULong dis_mul_E_G ( const VexAbiInfo* vbi,
Prefix pfx,
Int size,
Long delta0 )
/* IMUL I * E -> G. Supplied rip points to the modR/M byte. */
static
-ULong dis_imul_I_E_G ( VexAbiInfo* vbi,
+ULong dis_imul_I_E_G ( const VexAbiInfo* vbi,
Prefix pfx,
Int size,
Long delta,
static
ULong dis_FPU ( /*OUT*/Bool* decode_ok,
- VexAbiInfo* vbi, Prefix pfx, Long delta )
+ const VexAbiInfo* vbi, Prefix pfx, Long delta )
{
Int len;
UInt r_src, r_dst;
responsibility of its caller. */
static
-ULong dis_MMXop_regmem_to_reg ( VexAbiInfo* vbi,
+ULong dis_MMXop_regmem_to_reg ( const VexAbiInfo* vbi,
Prefix pfx,
Long delta,
UChar opc,
/* Vector by scalar shift of G by the amount specified at the bottom
of E. This is a straight copy of dis_SSE_shiftG_byE. */
-static ULong dis_MMX_shiftG_byE ( VexAbiInfo* vbi,
+static ULong dis_MMX_shiftG_byE ( const VexAbiInfo* vbi,
Prefix pfx, Long delta,
const HChar* opname, IROp op )
{
static
ULong dis_MMX ( Bool* decode_ok,
- VexAbiInfo* vbi, Prefix pfx, Int sz, Long delta )
+ const VexAbiInfo* vbi, Prefix pfx, Int sz, Long delta )
{
Int len;
UChar modrm;
/* Double length left and right shifts. Apparently only required in
v-size (no b- variant). */
static
-ULong dis_SHLRD_Gv_Ev ( VexAbiInfo* vbi,
+ULong dis_SHLRD_Gv_Ev ( const VexAbiInfo* vbi,
Prefix pfx,
Long delta, UChar modrm,
Int sz,
static
-ULong dis_bt_G_E ( VexAbiInfo* vbi,
+ULong dis_bt_G_E ( const VexAbiInfo* vbi,
Prefix pfx, Int sz, Long delta, BtOp op,
/*OUT*/Bool* decode_OK )
{
/* Handle BSF/BSR. Only v-size seems necessary. */
static
-ULong dis_bs_E_G ( VexAbiInfo* vbi,
+ULong dis_bs_E_G ( const VexAbiInfo* vbi,
Prefix pfx, Int sz, Long delta, Bool fwds )
{
Bool isReg;
static
ULong dis_cmpxchg_G_E ( /*OUT*/Bool* ok,
- VexAbiInfo* vbi,
+ const VexAbiInfo* vbi,
Prefix pfx,
Int size,
Long delta0 )
PUT tmpd, %G
*/
static
-ULong dis_cmov_E_G ( VexAbiInfo* vbi,
+ULong dis_cmov_E_G ( const VexAbiInfo* vbi,
Prefix pfx,
Int sz,
AMD64Condcode cond,
static
ULong dis_xadd_G_E ( /*OUT*/Bool* decode_ok,
- VexAbiInfo* vbi,
+ const VexAbiInfo* vbi,
Prefix pfx, Int sz, Long delta0 )
{
Int len;
//.. }
static
-void dis_ret ( /*MOD*/DisResult* dres, VexAbiInfo* vbi, ULong d64 )
+void dis_ret ( /*MOD*/DisResult* dres, const VexAbiInfo* vbi, ULong d64 )
{
IRTemp t1 = newTemp(Ity_I64);
IRTemp t2 = newTemp(Ity_I64);
*/
static ULong dis_SSE_E_to_G_all_wrk (
- VexAbiInfo* vbi,
+ const VexAbiInfo* vbi,
Prefix pfx, Long delta,
const HChar* opname, IROp op,
Bool invertG
/* All lanes SSE binary operation, G = G `op` E. */
static
-ULong dis_SSE_E_to_G_all ( VexAbiInfo* vbi,
+ULong dis_SSE_E_to_G_all ( const VexAbiInfo* vbi,
Prefix pfx, Long delta,
const HChar* opname, IROp op )
{
/* All lanes SSE binary operation, G = (not G) `op` E. */
static
-ULong dis_SSE_E_to_G_all_invG ( VexAbiInfo* vbi,
+ULong dis_SSE_E_to_G_all_invG ( const VexAbiInfo* vbi,
Prefix pfx, Long delta,
const HChar* opname, IROp op )
{
/* Lowest 32-bit lane only SSE binary operation, G = G `op` E. */
-static ULong dis_SSE_E_to_G_lo32 ( VexAbiInfo* vbi,
+static ULong dis_SSE_E_to_G_lo32 ( const VexAbiInfo* vbi,
Prefix pfx, Long delta,
const HChar* opname, IROp op )
{
/* Lower 64-bit lane only SSE binary operation, G = G `op` E. */
-static ULong dis_SSE_E_to_G_lo64 ( VexAbiInfo* vbi,
+static ULong dis_SSE_E_to_G_lo64 ( const VexAbiInfo* vbi,
Prefix pfx, Long delta,
const HChar* opname, IROp op )
{
/* All lanes unary SSE operation, G = op(E). */
static ULong dis_SSE_E_to_G_unary_all (
- VexAbiInfo* vbi,
+ const VexAbiInfo* vbi,
Prefix pfx, Long delta,
const HChar* opname, IROp op
)
/* Lowest 32-bit lane only unary SSE operation, G = op(E). */
static ULong dis_SSE_E_to_G_unary_lo32 (
- VexAbiInfo* vbi,
+ const VexAbiInfo* vbi,
Prefix pfx, Long delta,
const HChar* opname, IROp op
)
/* Lowest 64-bit lane only unary SSE operation, G = op(E). */
static ULong dis_SSE_E_to_G_unary_lo64 (
- VexAbiInfo* vbi,
+ const VexAbiInfo* vbi,
Prefix pfx, Long delta,
const HChar* opname, IROp op
)
G = E `op` G (eLeft == True)
*/
static ULong dis_SSEint_E_to_G(
- VexAbiInfo* vbi,
+ const VexAbiInfo* vbi,
Prefix pfx, Long delta,
const HChar* opname, IROp op,
Bool eLeft
/* Handles SSE 32F/64F comparisons. It can fail, in which case it
returns the original delta to indicate failure. */
-static Long dis_SSE_cmp_E_to_G ( VexAbiInfo* vbi,
+static Long dis_SSE_cmp_E_to_G ( const VexAbiInfo* vbi,
Prefix pfx, Long delta,
const HChar* opname, Bool all_lanes, Int sz )
{
/* Vector by scalar shift of G by the amount specified at the bottom
of E. */
-static ULong dis_SSE_shiftG_byE ( VexAbiInfo* vbi,
+static ULong dis_SSE_shiftG_byE ( const VexAbiInfo* vbi,
Prefix pfx, Long delta,
const HChar* opname, IROp op )
{
/*--- ---*/
/*------------------------------------------------------------*/
-static Long dis_COMISD ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_COMISD ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool isAvx, UChar opc )
{
vassert(opc == 0x2F/*COMISD*/ || opc == 0x2E/*UCOMISD*/);
}
-static Long dis_COMISS ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_COMISS ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool isAvx, UChar opc )
{
vassert(opc == 0x2F/*COMISS*/ || opc == 0x2E/*UCOMISS*/);
}
-static Long dis_PSHUFD_32x4 ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_PSHUFD_32x4 ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool writesYmm )
{
Int order;
}
-static Long dis_PSHUFD_32x8 ( VexAbiInfo* vbi, Prefix pfx, Long delta )
+static Long dis_PSHUFD_32x8 ( const VexAbiInfo* vbi, Prefix pfx, Long delta )
{
Int order;
Int alen = 0;
}
-static Long dis_CVTxSD2SI ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_CVTxSD2SI ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool isAvx, UChar opc, Int sz )
{
vassert(opc == 0x2D/*CVTSD2SI*/ || opc == 0x2C/*CVTTSD2SI*/);
}
-static Long dis_CVTxSS2SI ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_CVTxSS2SI ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool isAvx, UChar opc, Int sz )
{
vassert(opc == 0x2D/*CVTSS2SI*/ || opc == 0x2C/*CVTTSS2SI*/);
}
-static Long dis_CVTPS2PD_128 ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_CVTPS2PD_128 ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool isAvx )
{
IRTemp addr = IRTemp_INVALID;
}
-static Long dis_CVTPS2PD_256 ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_CVTPS2PD_256 ( const VexAbiInfo* vbi, Prefix pfx,
Long delta )
{
IRTemp addr = IRTemp_INVALID;
}
-static Long dis_CVTPD2PS_128 ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_CVTPD2PS_128 ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool isAvx )
{
IRTemp addr = IRTemp_INVALID;
}
-static Long dis_CVTxPS2DQ_128 ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_CVTxPS2DQ_128 ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool isAvx, Bool r2zero )
{
IRTemp addr = IRTemp_INVALID;
}
-static Long dis_CVTxPS2DQ_256 ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_CVTxPS2DQ_256 ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool r2zero )
{
IRTemp addr = IRTemp_INVALID;
}
-static Long dis_CVTxPD2DQ_128 ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_CVTxPD2DQ_128 ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool isAvx, Bool r2zero )
{
IRTemp addr = IRTemp_INVALID;
}
-static Long dis_CVTxPD2DQ_256 ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_CVTxPD2DQ_256 ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool r2zero )
{
IRTemp addr = IRTemp_INVALID;
}
-static Long dis_CVTDQ2PS_128 ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_CVTDQ2PS_128 ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool isAvx )
{
IRTemp addr = IRTemp_INVALID;
return delta;
}
-static Long dis_CVTDQ2PS_256 ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_CVTDQ2PS_256 ( const VexAbiInfo* vbi, Prefix pfx,
Long delta )
{
IRTemp addr = IRTemp_INVALID;
}
-static Long dis_PMOVMSKB_128 ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_PMOVMSKB_128 ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool isAvx )
{
UChar modrm = getUChar(delta);
}
-static Long dis_PMOVMSKB_256 ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_PMOVMSKB_256 ( const VexAbiInfo* vbi, Prefix pfx,
Long delta )
{
UChar modrm = getUChar(delta);
/* Handle 128 bit PSHUFLW and PSHUFHW. */
-static Long dis_PSHUFxW_128 ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_PSHUFxW_128 ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool isAvx, Bool xIsH )
{
IRTemp addr = IRTemp_INVALID;
/* Handle 256 bit PSHUFLW and PSHUFHW. */
-static Long dis_PSHUFxW_256 ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_PSHUFxW_256 ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool xIsH )
{
IRTemp addr = IRTemp_INVALID;
}
-static Long dis_PEXTRW_128_EregOnly_toG ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_PEXTRW_128_EregOnly_toG ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool isAvx )
{
Long deltaIN = delta;
}
-static Long dis_CVTDQ2PD_128 ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_CVTDQ2PD_128 ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool isAvx )
{
IRTemp addr = IRTemp_INVALID;
}
-static Long dis_STMXCSR ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_STMXCSR ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool isAvx )
{
IRTemp addr = IRTemp_INVALID;
}
-static Long dis_LDMXCSR ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_LDMXCSR ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool isAvx )
{
IRTemp addr = IRTemp_INVALID;
}
-static Long dis_MASKMOVDQU ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_MASKMOVDQU ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool isAvx )
{
IRTemp regD = newTemp(Ity_V128);
}
-static Long dis_MOVMSKPS_128 ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_MOVMSKPS_128 ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool isAvx )
{
UChar modrm = getUChar(delta);
}
-static Long dis_MOVMSKPS_256 ( VexAbiInfo* vbi, Prefix pfx, Long delta )
+static Long dis_MOVMSKPS_256 ( const VexAbiInfo* vbi, Prefix pfx, Long delta )
{
UChar modrm = getUChar(delta);
UInt rG = gregOfRexRM(pfx,modrm);
}
-static Long dis_MOVMSKPD_128 ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_MOVMSKPD_128 ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool isAvx )
{
UChar modrm = getUChar(delta);
}
-static Long dis_MOVMSKPD_256 ( VexAbiInfo* vbi, Prefix pfx, Long delta )
+static Long dis_MOVMSKPD_256 ( const VexAbiInfo* vbi, Prefix pfx, Long delta )
{
UChar modrm = getUChar(delta);
UInt rG = gregOfRexRM(pfx,modrm);
__attribute__((noinline))
static
Long dis_ESC_0F__SSE2 ( Bool* decode_OK,
- VexAbiInfo* vbi,
+ const VexAbiInfo* vbi,
Prefix pfx, Int sz, Long deltaIN,
DisResult* dres )
{
/*--- ---*/
/*------------------------------------------------------------*/
-static Long dis_MOVDDUP_128 ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_MOVDDUP_128 ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool isAvx )
{
IRTemp addr = IRTemp_INVALID;
}
-static Long dis_MOVDDUP_256 ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_MOVDDUP_256 ( const VexAbiInfo* vbi, Prefix pfx,
Long delta )
{
IRTemp addr = IRTemp_INVALID;
}
-static Long dis_MOVSxDUP_128 ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_MOVSxDUP_128 ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool isAvx, Bool isL )
{
IRTemp addr = IRTemp_INVALID;
}
-static Long dis_MOVSxDUP_256 ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_MOVSxDUP_256 ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool isL )
{
IRTemp addr = IRTemp_INVALID;
__attribute__((noinline))
static
Long dis_ESC_0F__SSE3 ( Bool* decode_OK,
- VexAbiInfo* vbi,
+ const VexAbiInfo* vbi,
Prefix pfx, Int sz, Long deltaIN )
{
IRTemp addr = IRTemp_INVALID;
}
-static Long dis_PHADD_128 ( VexAbiInfo* vbi, Prefix pfx, Long delta,
+static Long dis_PHADD_128 ( const VexAbiInfo* vbi, Prefix pfx, Long delta,
Bool isAvx, UChar opc )
{
IRTemp addr = IRTemp_INVALID;
}
-static Long dis_PHADD_256 ( VexAbiInfo* vbi, Prefix pfx, Long delta, UChar opc )
+static Long dis_PHADD_256 ( const VexAbiInfo* vbi, Prefix pfx, Long delta,
+ UChar opc )
{
IRTemp addr = IRTemp_INVALID;
Int alen = 0;
__attribute__((noinline))
static
Long dis_ESC_0F38__SupSSE3 ( Bool* decode_OK,
- VexAbiInfo* vbi,
+ const VexAbiInfo* vbi,
Prefix pfx, Int sz, Long deltaIN )
{
IRTemp addr = IRTemp_INVALID;
__attribute__((noinline))
static
Long dis_ESC_0F3A__SupSSE3 ( Bool* decode_OK,
- VexAbiInfo* vbi,
+ const VexAbiInfo* vbi,
Prefix pfx, Int sz, Long deltaIN )
{
Long d64 = 0;
__attribute__((noinline))
static
Long dis_ESC_0F__SSE4 ( Bool* decode_OK,
- VexArchInfo* archinfo,
- VexAbiInfo* vbi,
+ const VexArchInfo* archinfo,
+ const VexAbiInfo* vbi,
Prefix pfx, Int sz, Long deltaIN )
{
IRTemp addr = IRTemp_INVALID;
return res;
}
-static Long dis_VBLENDV_128 ( VexAbiInfo* vbi, Prefix pfx, Long delta,
+static Long dis_VBLENDV_128 ( const VexAbiInfo* vbi, Prefix pfx, Long delta,
const HChar *name, UInt gran, IROp opSAR )
{
IRTemp addr = IRTemp_INVALID;
return delta;
}
-static Long dis_VBLENDV_256 ( VexAbiInfo* vbi, Prefix pfx, Long delta,
+static Long dis_VBLENDV_256 ( const VexAbiInfo* vbi, Prefix pfx, Long delta,
const HChar *name, UInt gran, IROp opSAR128 )
{
IRTemp addr = IRTemp_INVALID;
/* Handles 128 bit versions of PTEST, VTESTPS or VTESTPD.
sign is 0 for PTEST insn, 32 for VTESTPS and 64 for VTESTPD. */
-static Long dis_xTESTy_128 ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_xTESTy_128 ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool isAvx, Int sign )
{
IRTemp addr = IRTemp_INVALID;
/* Handles 256 bit versions of PTEST, VTESTPS or VTESTPD.
sign is 0 for PTEST insn, 32 for VTESTPS and 64 for VTESTPD. */
-static Long dis_xTESTy_256 ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_xTESTy_256 ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Int sign )
{
IRTemp addr = IRTemp_INVALID;
/* Handles 128 bit versions of PMOVZXBW and PMOVSXBW. */
-static Long dis_PMOVxXBW_128 ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_PMOVxXBW_128 ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool isAvx, Bool xIsZ )
{
IRTemp addr = IRTemp_INVALID;
/* Handles 256 bit versions of PMOVZXBW and PMOVSXBW. */
-static Long dis_PMOVxXBW_256 ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_PMOVxXBW_256 ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool xIsZ )
{
IRTemp addr = IRTemp_INVALID;
}
-static Long dis_PMOVxXWD_128 ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_PMOVxXWD_128 ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool isAvx, Bool xIsZ )
{
IRTemp addr = IRTemp_INVALID;
}
-static Long dis_PMOVxXWD_256 ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_PMOVxXWD_256 ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool xIsZ )
{
IRTemp addr = IRTemp_INVALID;
}
-static Long dis_PMOVSXWQ_128 ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_PMOVSXWQ_128 ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool isAvx )
{
IRTemp addr = IRTemp_INVALID;
}
-static Long dis_PMOVSXWQ_256 ( VexAbiInfo* vbi, Prefix pfx, Long delta )
+static Long dis_PMOVSXWQ_256 ( const VexAbiInfo* vbi, Prefix pfx, Long delta )
{
IRTemp addr = IRTemp_INVALID;
Int alen = 0;
}
-static Long dis_PMOVZXWQ_128 ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_PMOVZXWQ_128 ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool isAvx )
{
IRTemp addr = IRTemp_INVALID;
}
-static Long dis_PMOVZXWQ_256 ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_PMOVZXWQ_256 ( const VexAbiInfo* vbi, Prefix pfx,
Long delta )
{
IRTemp addr = IRTemp_INVALID;
/* Handles 128 bit versions of PMOVZXDQ and PMOVSXDQ. */
-static Long dis_PMOVxXDQ_128 ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_PMOVxXDQ_128 ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool isAvx, Bool xIsZ )
{
IRTemp addr = IRTemp_INVALID;
/* Handles 256 bit versions of PMOVZXDQ and PMOVSXDQ. */
-static Long dis_PMOVxXDQ_256 ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_PMOVxXDQ_256 ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool xIsZ )
{
IRTemp addr = IRTemp_INVALID;
/* Handles 128 bit versions of PMOVZXBD and PMOVSXBD. */
-static Long dis_PMOVxXBD_128 ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_PMOVxXBD_128 ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool isAvx, Bool xIsZ )
{
IRTemp addr = IRTemp_INVALID;
/* Handles 256 bit versions of PMOVZXBD and PMOVSXBD. */
-static Long dis_PMOVxXBD_256 ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_PMOVxXBD_256 ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool xIsZ )
{
IRTemp addr = IRTemp_INVALID;
/* Handles 128 bit versions of PMOVSXBQ. */
-static Long dis_PMOVSXBQ_128 ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_PMOVSXBQ_128 ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool isAvx )
{
IRTemp addr = IRTemp_INVALID;
/* Handles 256 bit versions of PMOVSXBQ. */
-static Long dis_PMOVSXBQ_256 ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_PMOVSXBQ_256 ( const VexAbiInfo* vbi, Prefix pfx,
Long delta )
{
IRTemp addr = IRTemp_INVALID;
/* Handles 128 bit versions of PMOVZXBQ. */
-static Long dis_PMOVZXBQ_128 ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_PMOVZXBQ_128 ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool isAvx )
{
IRTemp addr = IRTemp_INVALID;
/* Handles 256 bit versions of PMOVZXBQ. */
-static Long dis_PMOVZXBQ_256 ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_PMOVZXBQ_256 ( const VexAbiInfo* vbi, Prefix pfx,
Long delta )
{
IRTemp addr = IRTemp_INVALID;
}
-static Long dis_PHMINPOSUW_128 ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_PHMINPOSUW_128 ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool isAvx )
{
IRTemp addr = IRTemp_INVALID;
}
-static Long dis_AESx ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_AESx ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool isAvx, UChar opc )
{
IRTemp addr = IRTemp_INVALID;
return delta;
}
-static Long dis_AESKEYGENASSIST ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_AESKEYGENASSIST ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool isAvx )
{
IRTemp addr = IRTemp_INVALID;
__attribute__((noinline))
static
Long dis_ESC_0F38__SSE4 ( Bool* decode_OK,
- VexAbiInfo* vbi,
+ const VexAbiInfo* vbi,
Prefix pfx, Int sz, Long deltaIN )
{
IRTemp addr = IRTemp_INVALID;
/*--- ---*/
/*------------------------------------------------------------*/
-static Long dis_PEXTRW ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_PEXTRW ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool isAvx )
{
IRTemp addr = IRTemp_INVALID;
}
-static Long dis_PEXTRD ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_PEXTRD ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool isAvx )
{
IRTemp addr = IRTemp_INVALID;
}
-static Long dis_PEXTRQ ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_PEXTRQ ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool isAvx )
{
IRTemp addr = IRTemp_INVALID;
/* This can fail, in which case it returns the original (unchanged)
delta. */
-static Long dis_PCMPxSTRx ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_PCMPxSTRx ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool isAvx, UChar opc )
{
Long delta0 = delta;
}
-static Long dis_PEXTRB_128_GtoE ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_PEXTRB_128_GtoE ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool isAvx )
{
IRTemp addr = IRTemp_INVALID;
return res;
}
-static Long dis_EXTRACTPS ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_EXTRACTPS ( const VexAbiInfo* vbi, Prefix pfx,
Long delta, Bool isAvx )
{
IRTemp addr = IRTemp_INVALID;
__attribute__((noinline))
static
Long dis_ESC_0F3A__SSE4 ( Bool* decode_OK,
- VexAbiInfo* vbi,
+ const VexAbiInfo* vbi,
Prefix pfx, Int sz, Long deltaIN )
{
IRTemp addr = IRTemp_INVALID;
Bool (*resteerOkFn) ( /*opaque*/void*, Addr64 ),
Bool resteerCisOk,
void* callback_opaque,
- VexArchInfo* archinfo,
- VexAbiInfo* vbi,
+ const VexArchInfo* archinfo,
+ const VexAbiInfo* vbi,
Prefix pfx, Int sz, Long deltaIN
)
{
Bool (*resteerOkFn) ( /*opaque*/void*, Addr64 ),
Bool resteerCisOk,
void* callback_opaque,
- VexArchInfo* archinfo,
- VexAbiInfo* vbi,
+ const VexArchInfo* archinfo,
+ const VexAbiInfo* vbi,
Prefix pfx, Int sz, Long deltaIN
)
{
Bool (*resteerOkFn) ( /*opaque*/void*, Addr64 ),
Bool resteerCisOk,
void* callback_opaque,
- VexArchInfo* archinfo,
- VexAbiInfo* vbi,
+ const VexArchInfo* archinfo,
+ const VexAbiInfo* vbi,
Prefix pfx, Int sz, Long deltaIN
)
{
Bool (*resteerOkFn) ( /*opaque*/void*, Addr64 ),
Bool resteerCisOk,
void* callback_opaque,
- VexArchInfo* archinfo,
- VexAbiInfo* vbi,
+ const VexArchInfo* archinfo,
+ const VexAbiInfo* vbi,
Prefix pfx, Int sz, Long deltaIN
)
{
/* FIXME: common up with the _256_ version below? */
static
Long dis_VEX_NDS_128_AnySimdPfx_0F_WIG (
- /*OUT*/Bool* uses_vvvv, VexAbiInfo* vbi,
+ /*OUT*/Bool* uses_vvvv, const VexAbiInfo* vbi,
Prefix pfx, Long delta, const HChar* name,
/* The actual operation. Use either 'op' or 'opfn',
but not both. */
args. */
static
Long dis_VEX_NDS_128_AnySimdPfx_0F_WIG_simple (
- /*OUT*/Bool* uses_vvvv, VexAbiInfo* vbi,
+ /*OUT*/Bool* uses_vvvv, const VexAbiInfo* vbi,
Prefix pfx, Long delta, const HChar* name,
IROp op
)
arg, and no swapping of args. */
static
Long dis_VEX_NDS_128_AnySimdPfx_0F_WIG_complex (
- /*OUT*/Bool* uses_vvvv, VexAbiInfo* vbi,
+ /*OUT*/Bool* uses_vvvv, const VexAbiInfo* vbi,
Prefix pfx, Long delta, const HChar* name,
IRTemp(*opFn)(IRTemp,IRTemp)
)
/* Vector by scalar shift of V by the amount specified at the bottom
of E. */
-static ULong dis_AVX128_shiftV_byE ( VexAbiInfo* vbi,
+static ULong dis_AVX128_shiftV_byE ( const VexAbiInfo* vbi,
Prefix pfx, Long delta,
const HChar* opname, IROp op )
{
/* Vector by scalar shift of V by the amount specified at the bottom
of E. */
-static ULong dis_AVX256_shiftV_byE ( VexAbiInfo* vbi,
+static ULong dis_AVX256_shiftV_byE ( const VexAbiInfo* vbi,
Prefix pfx, Long delta,
const HChar* opname, IROp op )
{
of E. Vector by vector shifts are defined for all shift amounts,
so not using Iop_S*x* here (and SSE2 doesn't support variable shifts
anyway). */
-static ULong dis_AVX_var_shiftV_byE ( VexAbiInfo* vbi,
+static ULong dis_AVX_var_shiftV_byE ( const VexAbiInfo* vbi,
Prefix pfx, Long delta,
const HChar* opname, IROp op, Bool isYMM )
{
copies the upper half of the left operand to the result.
*/
static Long dis_AVX128_E_V_to_G_lo64 ( /*OUT*/Bool* uses_vvvv,
- VexAbiInfo* vbi,
+ const VexAbiInfo* vbi,
Prefix pfx, Long delta,
const HChar* opname, IROp op )
{
copies the upper half of the operand to the result.
*/
static Long dis_AVX128_E_V_to_G_lo64_unary ( /*OUT*/Bool* uses_vvvv,
- VexAbiInfo* vbi,
+ const VexAbiInfo* vbi,
Prefix pfx, Long delta,
const HChar* opname, IROp op )
{
copies the upper 3/4 of the operand to the result.
*/
static Long dis_AVX128_E_V_to_G_lo32_unary ( /*OUT*/Bool* uses_vvvv,
- VexAbiInfo* vbi,
+ const VexAbiInfo* vbi,
Prefix pfx, Long delta,
const HChar* opname, IROp op )
{
copies the upper 3/4 of the left operand to the result.
*/
static Long dis_AVX128_E_V_to_G_lo32 ( /*OUT*/Bool* uses_vvvv,
- VexAbiInfo* vbi,
+ const VexAbiInfo* vbi,
Prefix pfx, Long delta,
const HChar* opname, IROp op )
{
G[255:128] = 0.
*/
static Long dis_AVX128_E_V_to_G ( /*OUT*/Bool* uses_vvvv,
- VexAbiInfo* vbi,
+ const VexAbiInfo* vbi,
Prefix pfx, Long delta,
const HChar* opname, IROp op )
{
original delta to indicate failure. */
static
Long dis_AVX128_cmp_V_E_to_G ( /*OUT*/Bool* uses_vvvv,
- VexAbiInfo* vbi,
+ const VexAbiInfo* vbi,
Prefix pfx, Long delta,
const HChar* opname, Bool all_lanes, Int sz )
{
original delta to indicate failure. */
static
Long dis_AVX256_cmp_V_E_to_G ( /*OUT*/Bool* uses_vvvv,
- VexAbiInfo* vbi,
+ const VexAbiInfo* vbi,
Prefix pfx, Long delta,
const HChar* opname, Int sz )
{
/* Handles AVX128 unary E-to-G all-lanes operations. */
static
Long dis_AVX128_E_to_G_unary ( /*OUT*/Bool* uses_vvvv,
- VexAbiInfo* vbi,
+ const VexAbiInfo* vbi,
Prefix pfx, Long delta,
const HChar* opname,
IRTemp (*opFn)(IRTemp) )
/* Handles AVX128 unary E-to-G all-lanes operations. */
static
Long dis_AVX128_E_to_G_unary_all ( /*OUT*/Bool* uses_vvvv,
- VexAbiInfo* vbi,
+ const VexAbiInfo* vbi,
Prefix pfx, Long delta,
const HChar* opname, IROp op )
{
/* FIXME: common up with the _128_ version above? */
static
Long dis_VEX_NDS_256_AnySimdPfx_0F_WIG (
- /*OUT*/Bool* uses_vvvv, VexAbiInfo* vbi,
+ /*OUT*/Bool* uses_vvvv, const VexAbiInfo* vbi,
Prefix pfx, Long delta, const HChar* name,
/* The actual operation. Use either 'op' or 'opfn',
but not both. */
G[255:0] = V[255:0] `op` E[255:0]
*/
static Long dis_AVX256_E_V_to_G ( /*OUT*/Bool* uses_vvvv,
- VexAbiInfo* vbi,
+ const VexAbiInfo* vbi,
Prefix pfx, Long delta,
const HChar* opname, IROp op )
{
args. */
static
Long dis_VEX_NDS_256_AnySimdPfx_0F_WIG_simple (
- /*OUT*/Bool* uses_vvvv, VexAbiInfo* vbi,
+ /*OUT*/Bool* uses_vvvv, const VexAbiInfo* vbi,
Prefix pfx, Long delta, const HChar* name,
IROp op
)
arg, and no swapping of args. */
static
Long dis_VEX_NDS_256_AnySimdPfx_0F_WIG_complex (
- /*OUT*/Bool* uses_vvvv, VexAbiInfo* vbi,
+ /*OUT*/Bool* uses_vvvv, const VexAbiInfo* vbi,
Prefix pfx, Long delta, const HChar* name,
IRTemp(*opFn)(IRTemp,IRTemp)
)
/* Handles AVX256 unary E-to-G all-lanes operations. */
static
Long dis_AVX256_E_to_G_unary ( /*OUT*/Bool* uses_vvvv,
- VexAbiInfo* vbi,
+ const VexAbiInfo* vbi,
Prefix pfx, Long delta,
const HChar* opname,
IRTemp (*opFn)(IRTemp) )
/* Handles AVX256 unary E-to-G all-lanes operations. */
static
Long dis_AVX256_E_to_G_unary_all ( /*OUT*/Bool* uses_vvvv,
- VexAbiInfo* vbi,
+ const VexAbiInfo* vbi,
Prefix pfx, Long delta,
const HChar* opname, IROp op )
{
/* The use of ReinterpF64asI64 is ugly. Surely could do better if we
had a variant of Iop_64x4toV256 that took F64s as args instead. */
-static Long dis_CVTDQ2PD_256 ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_CVTDQ2PD_256 ( const VexAbiInfo* vbi, Prefix pfx,
Long delta )
{
IRTemp addr = IRTemp_INVALID;
}
-static Long dis_CVTPD2PS_256 ( VexAbiInfo* vbi, Prefix pfx,
+static Long dis_CVTPD2PS_256 ( const VexAbiInfo* vbi, Prefix pfx,
Long delta )
{
IRTemp addr = IRTemp_INVALID;
Bool (*resteerOkFn) ( /*opaque*/void*, Addr64 ),
Bool resteerCisOk,
void* callback_opaque,
- VexArchInfo* archinfo,
- VexAbiInfo* vbi,
+ const VexArchInfo* archinfo,
+ const VexAbiInfo* vbi,
Prefix pfx, Int sz, Long deltaIN
)
{
}
static Long dis_SHIFTX ( /*OUT*/Bool* uses_vvvv,
- VexAbiInfo* vbi, Prefix pfx, Long delta,
+ const VexAbiInfo* vbi, Prefix pfx, Long delta,
const HChar* opname, IROp op8 )
{
HChar dis_buf[50];
}
-static Long dis_FMA ( VexAbiInfo* vbi, Prefix pfx, Long delta, UChar opc )
+static Long dis_FMA ( const VexAbiInfo* vbi, Prefix pfx, Long delta, UChar opc )
{
UChar modrm = getUChar(delta);
UInt rG = gregOfRexRM(pfx, modrm);
/* Masked load. */
-static ULong dis_VMASKMOV_load ( Bool *uses_vvvv, VexAbiInfo* vbi,
+static ULong dis_VMASKMOV_load ( Bool *uses_vvvv, const VexAbiInfo* vbi,
Prefix pfx, Long delta,
const HChar* opname, Bool isYMM, IRType ty )
{
/* Gather. */
-static ULong dis_VGATHER ( Bool *uses_vvvv, VexAbiInfo* vbi,
+static ULong dis_VGATHER ( Bool *uses_vvvv, const VexAbiInfo* vbi,
Prefix pfx, Long delta,
const HChar* opname, Bool isYMM,
Bool isVM64x, IRType ty )
Bool (*resteerOkFn) ( /*opaque*/void*, Addr64 ),
Bool resteerCisOk,
void* callback_opaque,
- VexArchInfo* archinfo,
- VexAbiInfo* vbi,
+ const VexArchInfo* archinfo,
+ const VexAbiInfo* vbi,
Prefix pfx, Int sz, Long deltaIN
)
{
Bool (*resteerOkFn) ( /*opaque*/void*, Addr64 ),
Bool resteerCisOk,
void* callback_opaque,
- VexArchInfo* archinfo,
- VexAbiInfo* vbi,
+ const VexArchInfo* archinfo,
+ const VexAbiInfo* vbi,
Prefix pfx, Int sz, Long deltaIN
)
{
Bool resteerCisOk,
void* callback_opaque,
Long delta64,
- VexArchInfo* archinfo,
- VexAbiInfo* vbi,
+ const VexArchInfo* archinfo,
+ const VexAbiInfo* vbi,
Bool sigill_diag
)
{
Long delta,
Addr64 guest_IP,
VexArch guest_arch,
- VexArchInfo* archinfo,
- VexAbiInfo* abiinfo,
+ const VexArchInfo* archinfo,
+ const VexAbiInfo* abiinfo,
VexEndness host_endness_IN,
Bool sigill_diag_IN )
{