提交 8a56e840 编写于 作者: R Richard Henderson 提交者: Aurelien Jarno

tcg: Use TCGCond where appropriate.

Use the TCGCond enumeration type in the brcond and setcond
related prototypes in tcg-op.h and each code generator.
Signed-off-by: NRichard Henderson <rth@twiddle.net>
Signed-off-by: NAurelien Jarno <aurelien@aurel32.net>
上级 a9751609
...@@ -376,7 +376,7 @@ static void tcg_out_cmp(TCGContext *s, TCGArg arg1, TCGArg arg2, ...@@ -376,7 +376,7 @@ static void tcg_out_cmp(TCGContext *s, TCGArg arg1, TCGArg arg2,
} }
} }
static void tcg_out_brcond(TCGContext *s, int cond, static void tcg_out_brcond(TCGContext *s, TCGCond cond,
TCGArg arg1, TCGArg arg2, int const_arg2, TCGArg arg1, TCGArg arg2, int const_arg2,
int label_index, int small) int label_index, int small)
{ {
...@@ -466,7 +466,7 @@ static void tcg_out_brcond2(TCGContext *s, const TCGArg *args, ...@@ -466,7 +466,7 @@ static void tcg_out_brcond2(TCGContext *s, const TCGArg *args,
tcg_out_label(s, label_next, (tcg_target_long)s->code_ptr); tcg_out_label(s, label_next, (tcg_target_long)s->code_ptr);
} }
static void tcg_out_setcond(TCGContext *s, int cond, TCGArg dest, static void tcg_out_setcond(TCGContext *s, TCGCond cond, TCGArg dest,
TCGArg arg1, TCGArg arg2, int const_arg2) TCGArg arg1, TCGArg arg2, int const_arg2)
{ {
tcg_out_cmp(s, arg1, arg2, const_arg2); tcg_out_cmp(s, arg1, arg2, const_arg2);
......
...@@ -464,7 +464,7 @@ static inline void tcg_out_addi(TCGContext *s, int reg, tcg_target_long val) ...@@ -464,7 +464,7 @@ static inline void tcg_out_addi(TCGContext *s, int reg, tcg_target_long val)
} }
} }
static void tcg_out_brcond(TCGContext *s, int cond, int arg1, static void tcg_out_brcond(TCGContext *s, TCGCond cond, int arg1,
int arg2, int label_index) int arg2, int label_index)
{ {
TCGLabel *l = &s->labels[label_index]; TCGLabel *l = &s->labels[label_index];
...@@ -522,7 +522,7 @@ static void tcg_out_brcond(TCGContext *s, int cond, int arg1, ...@@ -522,7 +522,7 @@ static void tcg_out_brcond(TCGContext *s, int cond, int arg1,
/* XXX: we implement it at the target level to avoid having to /* XXX: we implement it at the target level to avoid having to
handle cross basic blocks temporaries */ handle cross basic blocks temporaries */
static void tcg_out_brcond2(TCGContext *s, int cond, int arg1, static void tcg_out_brcond2(TCGContext *s, TCGCond cond, int arg1,
int arg2, int arg3, int arg4, int label_index) int arg2, int arg3, int arg4, int label_index)
{ {
void *label_ptr; void *label_ptr;
...@@ -585,7 +585,7 @@ static void tcg_out_brcond2(TCGContext *s, int cond, int arg1, ...@@ -585,7 +585,7 @@ static void tcg_out_brcond2(TCGContext *s, int cond, int arg1,
reloc_pc16(label_ptr, (tcg_target_long) s->code_ptr); reloc_pc16(label_ptr, (tcg_target_long) s->code_ptr);
} }
static void tcg_out_setcond(TCGContext *s, int cond, int ret, static void tcg_out_setcond(TCGContext *s, TCGCond cond, int ret,
int arg1, int arg2) int arg1, int arg2)
{ {
switch (cond) { switch (cond) {
...@@ -645,7 +645,7 @@ static void tcg_out_setcond(TCGContext *s, int cond, int ret, ...@@ -645,7 +645,7 @@ static void tcg_out_setcond(TCGContext *s, int cond, int ret,
/* XXX: we implement it at the target level to avoid having to /* XXX: we implement it at the target level to avoid having to
handle cross basic blocks temporaries */ handle cross basic blocks temporaries */
static void tcg_out_setcond2(TCGContext *s, int cond, int ret, static void tcg_out_setcond2(TCGContext *s, TCGCond cond, int ret,
int arg1, int arg2, int arg3, int arg4) int arg1, int arg2, int arg3, int arg4)
{ {
switch (cond) { switch (cond) {
......
...@@ -1080,7 +1080,8 @@ static void tcg_out_bc (TCGContext *s, int bc, int label_index) ...@@ -1080,7 +1080,8 @@ static void tcg_out_bc (TCGContext *s, int bc, int label_index)
static void tcg_out_cr7eq_from_cond (TCGContext *s, const TCGArg *args, static void tcg_out_cr7eq_from_cond (TCGContext *s, const TCGArg *args,
const int *const_args) const int *const_args)
{ {
int cond = args[4], op; TCGCond cond = args[4];
int op;
struct { int bit1; int bit2; int cond2; } bits[] = { struct { int bit1; int bit2; int cond2; } bits[] = {
[TCG_COND_LT ] = { CR_LT, CR_LT, TCG_COND_LT }, [TCG_COND_LT ] = { CR_LT, CR_LT, TCG_COND_LT },
[TCG_COND_LE ] = { CR_LT, CR_GT, TCG_COND_LT }, [TCG_COND_LE ] = { CR_LT, CR_GT, TCG_COND_LT },
...@@ -1120,7 +1121,7 @@ static void tcg_out_cr7eq_from_cond (TCGContext *s, const TCGArg *args, ...@@ -1120,7 +1121,7 @@ static void tcg_out_cr7eq_from_cond (TCGContext *s, const TCGArg *args,
} }
} }
static void tcg_out_setcond (TCGContext *s, int cond, TCGArg arg0, static void tcg_out_setcond (TCGContext *s, TCGCond cond, TCGArg arg0,
TCGArg arg1, TCGArg arg2, int const_arg2) TCGArg arg1, TCGArg arg2, int const_arg2)
{ {
int crop, sh, arg; int crop, sh, arg;
...@@ -1244,7 +1245,7 @@ static void tcg_out_setcond2 (TCGContext *s, const TCGArg *args, ...@@ -1244,7 +1245,7 @@ static void tcg_out_setcond2 (TCGContext *s, const TCGArg *args,
); );
} }
static void tcg_out_brcond (TCGContext *s, int cond, static void tcg_out_brcond (TCGContext *s, TCGCond cond,
TCGArg arg1, TCGArg arg2, int const_arg2, TCGArg arg1, TCGArg arg2, int const_arg2,
int label_index) int label_index)
{ {
......
...@@ -1051,8 +1051,9 @@ static void tcg_out_cmp (TCGContext *s, int cond, TCGArg arg1, TCGArg arg2, ...@@ -1051,8 +1051,9 @@ static void tcg_out_cmp (TCGContext *s, int cond, TCGArg arg1, TCGArg arg2,
} }
static void tcg_out_setcond (TCGContext *s, TCGType type, int cond, TCGArg arg0, static void tcg_out_setcond (TCGContext *s, TCGType type, TCGCond cond,
TCGArg arg1, TCGArg arg2, int const_arg2) TCGArg arg0, TCGArg arg1, TCGArg arg2,
int const_arg2)
{ {
int crop, sh, arg; int crop, sh, arg;
...@@ -1182,7 +1183,7 @@ static void tcg_out_bc (TCGContext *s, int bc, int label_index) ...@@ -1182,7 +1183,7 @@ static void tcg_out_bc (TCGContext *s, int bc, int label_index)
} }
} }
static void tcg_out_brcond (TCGContext *s, int cond, static void tcg_out_brcond (TCGContext *s, TCGCond cond,
TCGArg arg1, TCGArg arg2, int const_arg2, TCGArg arg1, TCGArg arg2, int const_arg2,
int label_index, int arch64) int label_index, int arch64)
{ {
......
...@@ -520,7 +520,7 @@ static void tcg_out_cmp(TCGContext *s, TCGArg c1, TCGArg c2, int c2const) ...@@ -520,7 +520,7 @@ static void tcg_out_cmp(TCGContext *s, TCGArg c1, TCGArg c2, int c2const)
tcg_out_arithc(s, TCG_REG_G0, c1, c2, c2const, ARITH_SUBCC); tcg_out_arithc(s, TCG_REG_G0, c1, c2, c2const, ARITH_SUBCC);
} }
static void tcg_out_brcond_i32(TCGContext *s, int cond, static void tcg_out_brcond_i32(TCGContext *s, TCGCond cond,
TCGArg arg1, TCGArg arg2, int const_arg2, TCGArg arg1, TCGArg arg2, int const_arg2,
int label_index) int label_index)
{ {
...@@ -530,7 +530,7 @@ static void tcg_out_brcond_i32(TCGContext *s, int cond, ...@@ -530,7 +530,7 @@ static void tcg_out_brcond_i32(TCGContext *s, int cond,
} }
#if TCG_TARGET_REG_BITS == 64 #if TCG_TARGET_REG_BITS == 64
static void tcg_out_brcond_i64(TCGContext *s, int cond, static void tcg_out_brcond_i64(TCGContext *s, TCGCond cond,
TCGArg arg1, TCGArg arg2, int const_arg2, TCGArg arg1, TCGArg arg2, int const_arg2,
int label_index) int label_index)
{ {
...@@ -539,7 +539,7 @@ static void tcg_out_brcond_i64(TCGContext *s, int cond, ...@@ -539,7 +539,7 @@ static void tcg_out_brcond_i64(TCGContext *s, int cond,
tcg_out_nop(s); tcg_out_nop(s);
} }
#else #else
static void tcg_out_brcond2_i32(TCGContext *s, int cond, static void tcg_out_brcond2_i32(TCGContext *s, TCGCond cond,
TCGArg al, TCGArg ah, TCGArg al, TCGArg ah,
TCGArg bl, int blconst, TCGArg bl, int blconst,
TCGArg bh, int bhconst, int label_dest) TCGArg bh, int bhconst, int label_dest)
...@@ -587,7 +587,7 @@ static void tcg_out_brcond2_i32(TCGContext *s, int cond, ...@@ -587,7 +587,7 @@ static void tcg_out_brcond2_i32(TCGContext *s, int cond,
} }
#endif #endif
static void tcg_out_setcond_i32(TCGContext *s, int cond, TCGArg ret, static void tcg_out_setcond_i32(TCGContext *s, TCGCond cond, TCGArg ret,
TCGArg c1, TCGArg c2, int c2const) TCGArg c1, TCGArg c2, int c2const)
{ {
TCGArg t; TCGArg t;
...@@ -643,7 +643,7 @@ static void tcg_out_setcond_i32(TCGContext *s, int cond, TCGArg ret, ...@@ -643,7 +643,7 @@ static void tcg_out_setcond_i32(TCGContext *s, int cond, TCGArg ret,
} }
#if TCG_TARGET_REG_BITS == 64 #if TCG_TARGET_REG_BITS == 64
static void tcg_out_setcond_i64(TCGContext *s, int cond, TCGArg ret, static void tcg_out_setcond_i64(TCGContext *s, TCGCond cond, TCGArg ret,
TCGArg c1, TCGArg c2, int c2const) TCGArg c1, TCGArg c2, int c2const)
{ {
tcg_out_cmp(s, c1, c2, c2const); tcg_out_cmp(s, c1, c2, c2const);
...@@ -653,7 +653,7 @@ static void tcg_out_setcond_i64(TCGContext *s, int cond, TCGArg ret, ...@@ -653,7 +653,7 @@ static void tcg_out_setcond_i64(TCGContext *s, int cond, TCGArg ret,
| MOVCC_XCC | INSN_IMM11(1)); | MOVCC_XCC | INSN_IMM11(1));
} }
#else #else
static void tcg_out_setcond2_i32(TCGContext *s, int cond, TCGArg ret, static void tcg_out_setcond2_i32(TCGContext *s, TCGCond cond, TCGArg ret,
TCGArg al, TCGArg ah, TCGArg al, TCGArg ah,
TCGArg bl, int blconst, TCGArg bl, int blconst,
TCGArg bh, int bhconst) TCGArg bh, int bhconst)
......
...@@ -593,28 +593,28 @@ static inline void tcg_gen_sari_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2) ...@@ -593,28 +593,28 @@ static inline void tcg_gen_sari_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2)
} }
} }
static inline void tcg_gen_brcond_i32(int cond, TCGv_i32 arg1, TCGv_i32 arg2, static inline void tcg_gen_brcond_i32(TCGCond cond, TCGv_i32 arg1,
int label_index) TCGv_i32 arg2, int label_index)
{ {
tcg_gen_op4ii_i32(INDEX_op_brcond_i32, arg1, arg2, cond, label_index); tcg_gen_op4ii_i32(INDEX_op_brcond_i32, arg1, arg2, cond, label_index);
} }
static inline void tcg_gen_brcondi_i32(int cond, TCGv_i32 arg1, int32_t arg2, static inline void tcg_gen_brcondi_i32(TCGCond cond, TCGv_i32 arg1,
int label_index) int32_t arg2, int label_index)
{ {
TCGv_i32 t0 = tcg_const_i32(arg2); TCGv_i32 t0 = tcg_const_i32(arg2);
tcg_gen_brcond_i32(cond, arg1, t0, label_index); tcg_gen_brcond_i32(cond, arg1, t0, label_index);
tcg_temp_free_i32(t0); tcg_temp_free_i32(t0);
} }
static inline void tcg_gen_setcond_i32(int cond, TCGv_i32 ret, static inline void tcg_gen_setcond_i32(TCGCond cond, TCGv_i32 ret,
TCGv_i32 arg1, TCGv_i32 arg2) TCGv_i32 arg1, TCGv_i32 arg2)
{ {
tcg_gen_op4i_i32(INDEX_op_setcond_i32, ret, arg1, arg2, cond); tcg_gen_op4i_i32(INDEX_op_setcond_i32, ret, arg1, arg2, cond);
} }
static inline void tcg_gen_setcondi_i32(int cond, TCGv_i32 ret, TCGv_i32 arg1, static inline void tcg_gen_setcondi_i32(TCGCond cond, TCGv_i32 ret,
int32_t arg2) TCGv_i32 arg1, int32_t arg2)
{ {
TCGv_i32 t0 = tcg_const_i32(arg2); TCGv_i32 t0 = tcg_const_i32(arg2);
tcg_gen_setcond_i32(cond, ret, arg1, t0); tcg_gen_setcond_i32(cond, ret, arg1, t0);
...@@ -895,15 +895,15 @@ static inline void tcg_gen_sari_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) ...@@ -895,15 +895,15 @@ static inline void tcg_gen_sari_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2)
tcg_gen_shifti_i64(ret, arg1, arg2, 1, 1); tcg_gen_shifti_i64(ret, arg1, arg2, 1, 1);
} }
static inline void tcg_gen_brcond_i64(int cond, TCGv_i64 arg1, TCGv_i64 arg2, static inline void tcg_gen_brcond_i64(TCGCond cond, TCGv_i64 arg1,
int label_index) TCGv_i64 arg2, int label_index)
{ {
tcg_gen_op6ii_i32(INDEX_op_brcond2_i32, tcg_gen_op6ii_i32(INDEX_op_brcond2_i32,
TCGV_LOW(arg1), TCGV_HIGH(arg1), TCGV_LOW(arg2), TCGV_LOW(arg1), TCGV_HIGH(arg1), TCGV_LOW(arg2),
TCGV_HIGH(arg2), cond, label_index); TCGV_HIGH(arg2), cond, label_index);
} }
static inline void tcg_gen_setcond_i64(int cond, TCGv_i64 ret, static inline void tcg_gen_setcond_i64(TCGCond cond, TCGv_i64 ret,
TCGv_i64 arg1, TCGv_i64 arg2) TCGv_i64 arg1, TCGv_i64 arg2)
{ {
tcg_gen_op6i_i32(INDEX_op_setcond2_i32, TCGV_LOW(ret), tcg_gen_op6i_i32(INDEX_op_setcond2_i32, TCGV_LOW(ret),
...@@ -1136,13 +1136,13 @@ static inline void tcg_gen_sari_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) ...@@ -1136,13 +1136,13 @@ static inline void tcg_gen_sari_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2)
} }
} }
static inline void tcg_gen_brcond_i64(int cond, TCGv_i64 arg1, TCGv_i64 arg2, static inline void tcg_gen_brcond_i64(TCGCond cond, TCGv_i64 arg1,
int label_index) TCGv_i64 arg2, int label_index)
{ {
tcg_gen_op4ii_i64(INDEX_op_brcond_i64, arg1, arg2, cond, label_index); tcg_gen_op4ii_i64(INDEX_op_brcond_i64, arg1, arg2, cond, label_index);
} }
static inline void tcg_gen_setcond_i64(int cond, TCGv_i64 ret, static inline void tcg_gen_setcond_i64(TCGCond cond, TCGv_i64 ret,
TCGv_i64 arg1, TCGv_i64 arg2) TCGv_i64 arg1, TCGv_i64 arg2)
{ {
tcg_gen_op4i_i64(INDEX_op_setcond_i64, ret, arg1, arg2, cond); tcg_gen_op4i_i64(INDEX_op_setcond_i64, ret, arg1, arg2, cond);
...@@ -1263,16 +1263,16 @@ static inline void tcg_gen_subi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2) ...@@ -1263,16 +1263,16 @@ static inline void tcg_gen_subi_i64(TCGv_i64 ret, TCGv_i64 arg1, int64_t arg2)
tcg_temp_free_i64(t0); tcg_temp_free_i64(t0);
} }
} }
static inline void tcg_gen_brcondi_i64(int cond, TCGv_i64 arg1, int64_t arg2, static inline void tcg_gen_brcondi_i64(TCGCond cond, TCGv_i64 arg1,
int label_index) int64_t arg2, int label_index)
{ {
TCGv_i64 t0 = tcg_const_i64(arg2); TCGv_i64 t0 = tcg_const_i64(arg2);
tcg_gen_brcond_i64(cond, arg1, t0, label_index); tcg_gen_brcond_i64(cond, arg1, t0, label_index);
tcg_temp_free_i64(t0); tcg_temp_free_i64(t0);
} }
static inline void tcg_gen_setcondi_i64(int cond, TCGv_i64 ret, TCGv_i64 arg1, static inline void tcg_gen_setcondi_i64(TCGCond cond, TCGv_i64 ret,
int64_t arg2) TCGv_i64 arg1, int64_t arg2)
{ {
TCGv_i64 t0 = tcg_const_i64(arg2); TCGv_i64 t0 = tcg_const_i64(arg2);
tcg_gen_setcond_i64(cond, ret, arg1, t0); tcg_gen_setcond_i64(cond, ret, arg1, t0);
......
...@@ -518,7 +518,7 @@ static void tcg_out_cmp(TCGContext *s, TCGArg arg1, TCGArg arg2, ...@@ -518,7 +518,7 @@ static void tcg_out_cmp(TCGContext *s, TCGArg arg1, TCGArg arg2,
} }
} }
static void tcg_out_brcond(TCGContext *s, int cond, static void tcg_out_brcond(TCGContext *s, TCGCond cond,
TCGArg arg1, TCGArg arg2, int const_arg2, TCGArg arg1, TCGArg arg2, int const_arg2,
int label_index, int rexw) int label_index, int rexw)
{ {
...@@ -526,7 +526,7 @@ static void tcg_out_brcond(TCGContext *s, int cond, ...@@ -526,7 +526,7 @@ static void tcg_out_brcond(TCGContext *s, int cond,
tcg_out_jxx(s, tcg_cond_to_jcc[cond], label_index); tcg_out_jxx(s, tcg_cond_to_jcc[cond], label_index);
} }
static void tcg_out_setcond(TCGContext *s, int cond, TCGArg dest, static void tcg_out_setcond(TCGContext *s, TCGCond cond, TCGArg dest,
TCGArg arg1, TCGArg arg2, int const_arg2, int rexw) TCGArg arg1, TCGArg arg2, int const_arg2, int rexw)
{ {
tcg_out_cmp(s, arg1, arg2, const_arg2, rexw); tcg_out_cmp(s, arg1, arg2, const_arg2, rexw);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册