tcg: add negsetcondi
This can be useful to write a shift bit extraction that does not depend on TARGET_LONG_BITS. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Message-Id: <20231019104648.389942-15-pbonzini@redhat.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
46c684c862
commit
93c86ecd77
@ -346,6 +346,8 @@ void tcg_gen_setcondi_i32(TCGCond cond, TCGv_i32 ret,
|
||||
TCGv_i32 arg1, int32_t arg2);
|
||||
void tcg_gen_negsetcond_i32(TCGCond cond, TCGv_i32 ret,
|
||||
TCGv_i32 arg1, TCGv_i32 arg2);
|
||||
void tcg_gen_negsetcondi_i32(TCGCond cond, TCGv_i32 ret,
|
||||
TCGv_i32 arg1, int32_t arg2);
|
||||
void tcg_gen_movcond_i32(TCGCond cond, TCGv_i32 ret, TCGv_i32 c1,
|
||||
TCGv_i32 c2, TCGv_i32 v1, TCGv_i32 v2);
|
||||
void tcg_gen_add2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i32 al,
|
||||
@ -544,6 +546,8 @@ void tcg_gen_setcondi_i64(TCGCond cond, TCGv_i64 ret,
|
||||
TCGv_i64 arg1, int64_t arg2);
|
||||
void tcg_gen_negsetcond_i64(TCGCond cond, TCGv_i64 ret,
|
||||
TCGv_i64 arg1, TCGv_i64 arg2);
|
||||
void tcg_gen_negsetcondi_i64(TCGCond cond, TCGv_i64 ret,
|
||||
TCGv_i64 arg1, int64_t arg2);
|
||||
void tcg_gen_movcond_i64(TCGCond cond, TCGv_i64 ret, TCGv_i64 c1,
|
||||
TCGv_i64 c2, TCGv_i64 v1, TCGv_i64 v2);
|
||||
void tcg_gen_add2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 al,
|
||||
|
@ -199,6 +199,7 @@ DEF_ATOMIC2(tcg_gen_atomic_umax_fetch, i64)
|
||||
#define tcg_gen_setcond_tl tcg_gen_setcond_i64
|
||||
#define tcg_gen_setcondi_tl tcg_gen_setcondi_i64
|
||||
#define tcg_gen_negsetcond_tl tcg_gen_negsetcond_i64
|
||||
#define tcg_gen_negsetcondi_tl tcg_gen_negsetcondi_i64
|
||||
#define tcg_gen_mul_tl tcg_gen_mul_i64
|
||||
#define tcg_gen_muli_tl tcg_gen_muli_i64
|
||||
#define tcg_gen_div_tl tcg_gen_div_i64
|
||||
@ -317,6 +318,7 @@ DEF_ATOMIC2(tcg_gen_atomic_umax_fetch, i64)
|
||||
#define tcg_gen_setcond_tl tcg_gen_setcond_i32
|
||||
#define tcg_gen_setcondi_tl tcg_gen_setcondi_i32
|
||||
#define tcg_gen_negsetcond_tl tcg_gen_negsetcond_i32
|
||||
#define tcg_gen_negsetcondi_tl tcg_gen_negsetcondi_i32
|
||||
#define tcg_gen_mul_tl tcg_gen_mul_i32
|
||||
#define tcg_gen_muli_tl tcg_gen_muli_i32
|
||||
#define tcg_gen_div_tl tcg_gen_div_i32
|
||||
|
12
tcg/tcg-op.c
12
tcg/tcg-op.c
@ -291,6 +291,12 @@ void tcg_gen_negsetcond_i32(TCGCond cond, TCGv_i32 ret,
|
||||
}
|
||||
}
|
||||
|
||||
void tcg_gen_negsetcondi_i32(TCGCond cond, TCGv_i32 ret,
|
||||
TCGv_i32 arg1, int32_t arg2)
|
||||
{
|
||||
tcg_gen_negsetcond_i32(cond, ret, arg1, tcg_constant_i32(arg2));
|
||||
}
|
||||
|
||||
void tcg_gen_muli_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2)
|
||||
{
|
||||
if (arg2 == 0) {
|
||||
@ -1602,6 +1608,12 @@ void tcg_gen_setcondi_i64(TCGCond cond, TCGv_i64 ret,
|
||||
}
|
||||
}
|
||||
|
||||
void tcg_gen_negsetcondi_i64(TCGCond cond, TCGv_i64 ret,
|
||||
TCGv_i64 arg1, int64_t arg2)
|
||||
{
|
||||
tcg_gen_negsetcond_i64(cond, ret, arg1, tcg_constant_i64(arg2));
|
||||
}
|
||||
|
||||
void tcg_gen_negsetcond_i64(TCGCond cond, TCGv_i64 ret,
|
||||
TCGv_i64 arg1, TCGv_i64 arg2)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user