summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tcg/tcg-op.h2
-rw-r--r--tcg/tcg.c16
-rw-r--r--tcg/tcg.h2
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
diff --git a/tcg/tcg.c b/tcg/tcg.c
index 1b7bf5ca3b..9d090f70da 100644
--- a/tcg/tcg.c
+++ b/tcg/tcg.c
@@ -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;
diff --git a/tcg/tcg.h b/tcg/tcg.h
index bc5b902699..1471ca34ac 100644
--- a/tcg/tcg.h
+++ b/tcg/tcg.h
@@ -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