tcg: Add tcg_op_deposit_valid
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
80a3a9423a
commit
0e4c6424d6
@ -840,6 +840,12 @@ typedef struct TCGTargetOpDef {
|
|||||||
* on which we are currently executing.
|
* on which we are currently executing.
|
||||||
*/
|
*/
|
||||||
bool tcg_op_supported(TCGOpcode op, TCGType type, unsigned flags);
|
bool tcg_op_supported(TCGOpcode op, TCGType type, unsigned flags);
|
||||||
|
/*
|
||||||
|
* tcg_op_deposit_valid:
|
||||||
|
* Query if a deposit into (ofs, len) is supported for @type by
|
||||||
|
* the host on which we are currently executing.
|
||||||
|
*/
|
||||||
|
bool tcg_op_deposit_valid(TCGType type, unsigned ofs, unsigned len);
|
||||||
|
|
||||||
void tcg_gen_call0(void *func, TCGHelperInfo *, TCGTemp *ret);
|
void tcg_gen_call0(void *func, TCGHelperInfo *, TCGTemp *ret);
|
||||||
void tcg_gen_call1(void *func, TCGHelperInfo *, TCGTemp *ret, TCGTemp *);
|
void tcg_gen_call1(void *func, TCGHelperInfo *, TCGTemp *ret, TCGTemp *);
|
||||||
|
21
tcg/tcg.c
21
tcg/tcg.c
@ -2238,6 +2238,27 @@ bool tcg_op_supported(TCGOpcode op, TCGType type, unsigned flags)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool tcg_op_deposit_valid(TCGType type, unsigned ofs, unsigned len)
|
||||||
|
{
|
||||||
|
tcg_debug_assert(len > 0);
|
||||||
|
switch (type) {
|
||||||
|
case TCG_TYPE_I32:
|
||||||
|
tcg_debug_assert(ofs < 32);
|
||||||
|
tcg_debug_assert(len <= 32);
|
||||||
|
tcg_debug_assert(ofs + len <= 32);
|
||||||
|
return TCG_TARGET_HAS_deposit_i32 &&
|
||||||
|
TCG_TARGET_deposit_i32_valid(ofs, len);
|
||||||
|
case TCG_TYPE_I64:
|
||||||
|
tcg_debug_assert(ofs < 64);
|
||||||
|
tcg_debug_assert(len <= 64);
|
||||||
|
tcg_debug_assert(ofs + len <= 64);
|
||||||
|
return TCG_TARGET_HAS_deposit_i64 &&
|
||||||
|
TCG_TARGET_deposit_i64_valid(ofs, len);
|
||||||
|
default:
|
||||||
|
g_assert_not_reached();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static TCGOp *tcg_op_alloc(TCGOpcode opc, unsigned nargs);
|
static TCGOp *tcg_op_alloc(TCGOpcode opc, unsigned nargs);
|
||||||
|
|
||||||
static void tcg_gen_callN(void *func, TCGHelperInfo *info,
|
static void tcg_gen_callN(void *func, TCGHelperInfo *info,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user