diff options
-rw-r--r-- | tcg/tcg-op.h | 2 | ||||
-rw-r--r-- | tcg/tcg.c | 16 | ||||
-rw-r--r-- | tcg/tcg.h | 2 |
3 files changed, 20 insertions, 0 deletions
diff --git a/tcg/tcg-op.h b/tcg/tcg-op.h index 8ddaf0b40e..18be6412d8 100644 --- a/tcg/tcg-op.h +++ b/tcg/tcg-op.h @@ -1774,6 +1774,7 @@ static inline void tcg_gen_qemu_st64(TCGv arg, TCGv addr, int mem_index) #define tcg_gen_nor_tl tcg_gen_nor_i64 #define tcg_gen_orc_tl tcg_gen_orc_i64 #define tcg_const_tl tcg_const_i64 +#define tcg_const_local_tl tcg_const_local_i64 #else #define TCG_TYPE_TL TCG_TYPE_I32 #define tcg_gen_movi_tl tcg_gen_movi_i32 @@ -1831,6 +1832,7 @@ static inline void tcg_gen_qemu_st64(TCGv arg, TCGv addr, int mem_index) #define tcg_gen_nor_tl tcg_gen_nor_i32 #define tcg_gen_orc_tl tcg_gen_orc_i32 #define tcg_const_tl tcg_const_i32 +#define tcg_const_local_tl tcg_const_local_i32 #endif #if TCG_TARGET_REG_BITS == 32 @@ -475,6 +475,22 @@ TCGv tcg_const_i64(int64_t val) return t0; } +TCGv tcg_const_local_i32(int32_t val) +{ + TCGv t0; + t0 = tcg_temp_local_new(TCG_TYPE_I32); + tcg_gen_movi_i32(t0, val); + return t0; +} + +TCGv tcg_const_local_i64(int64_t val) +{ + TCGv t0; + t0 = tcg_temp_local_new(TCG_TYPE_I64); + tcg_gen_movi_i64(t0, val); + return t0; +} + void tcg_register_helper(void *func, const char *name) { TCGContext *s = &tcg_ctx; @@ -385,6 +385,8 @@ void tcg_dump_ops(TCGContext *s, FILE *outfile); void dump_ops(const uint16_t *opc_buf, const TCGArg *opparam_buf); TCGv tcg_const_i32(int32_t val); TCGv tcg_const_i64(int64_t val); +TCGv tcg_const_local_i32(int32_t val); +TCGv tcg_const_local_i64(int64_t val); #if TCG_TARGET_REG_BITS == 32 #define tcg_const_ptr tcg_const_i32 |