mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-21 00:53:27 -06:00
tcg: Add type and flags arguments to tcg_op_supported
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
2ccf871ea5
commit
771a5925e8
2 changed files with 13 additions and 5 deletions
|
@ -834,7 +834,12 @@ typedef struct TCGTargetOpDef {
|
||||||
const char *args_ct_str[TCG_MAX_OP_ARGS];
|
const char *args_ct_str[TCG_MAX_OP_ARGS];
|
||||||
} TCGTargetOpDef;
|
} TCGTargetOpDef;
|
||||||
|
|
||||||
bool tcg_op_supported(TCGOpcode op);
|
/*
|
||||||
|
* tcg_op_supported:
|
||||||
|
* Query if @op, for @type and @flags, is supported by the host
|
||||||
|
* on which we are currently executing.
|
||||||
|
*/
|
||||||
|
bool tcg_op_supported(TCGOpcode op, TCGType type, unsigned flags);
|
||||||
|
|
||||||
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 *);
|
||||||
|
|
11
tcg/tcg.c
11
tcg/tcg.c
|
@ -1931,9 +1931,11 @@ TCGTemp *tcgv_i32_temp(TCGv_i32 v)
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_DEBUG_TCG */
|
#endif /* CONFIG_DEBUG_TCG */
|
||||||
|
|
||||||
/* Return true if OP may appear in the opcode stream.
|
/*
|
||||||
Test the runtime variable that controls each opcode. */
|
* Return true if OP may appear in the opcode stream with TYPE.
|
||||||
bool tcg_op_supported(TCGOpcode op)
|
* Test the runtime variable that controls each opcode.
|
||||||
|
*/
|
||||||
|
bool tcg_op_supported(TCGOpcode op, TCGType type, unsigned flags)
|
||||||
{
|
{
|
||||||
const bool have_vec
|
const bool have_vec
|
||||||
= TCG_TARGET_HAS_v64 | TCG_TARGET_HAS_v128 | TCG_TARGET_HAS_v256;
|
= TCG_TARGET_HAS_v64 | TCG_TARGET_HAS_v128 | TCG_TARGET_HAS_v256;
|
||||||
|
@ -6243,7 +6245,8 @@ int tcg_gen_code(TCGContext *s, TranslationBlock *tb, uint64_t pc_start)
|
||||||
/* fall through */
|
/* fall through */
|
||||||
default:
|
default:
|
||||||
/* Sanity check that we've not introduced any unhandled opcodes. */
|
/* Sanity check that we've not introduced any unhandled opcodes. */
|
||||||
tcg_debug_assert(tcg_op_supported(opc));
|
tcg_debug_assert(tcg_op_supported(opc, TCGOP_TYPE(op),
|
||||||
|
TCGOP_FLAGS(op)));
|
||||||
/* Note: in order to speed up the code, it would be much
|
/* Note: in order to speed up the code, it would be much
|
||||||
faster to have specialized register allocator functions for
|
faster to have specialized register allocator functions for
|
||||||
some common argument patterns */
|
some common argument patterns */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue