We'll need these for other generic expansions.
Signed-off-by: Richard Henderson <[email protected]>
---
tcg/tcg-internal.h | 20 ++++++++++++++++++++
tcg/tcg-op.c | 12 ++++--------
2 files changed, 24 insertions(+), 8 deletions(-)
diff --git a/tcg/tcg-internal.h b/tcg/tcg-internal.h
index cd5028104a8..a0edf112927 100644
--- a/tcg/tcg-internal.h
+++ b/tcg/tcg-internal.h
@@ -183,4 +183,24 @@ bool tcg_op_imm_match(TCGOpcode op, TCGType type,
tcg_target_ulong imm);
#undef DEF4
#undef DEF6
+static inline void tcg_gen_extrh(TCGTemp *dst, TCGTemp *src)
+{
+ tcg_gen_op_tt(INDEX_op_extrh_i64_i32, TCG_TYPE_I32, dst, src);
+}
+
+static inline void tcg_gen_extrl(TCGTemp *dst, TCGTemp *src)
+{
+ tcg_gen_op_tt(INDEX_op_extrl_i64_i32, TCG_TYPE_I32, dst, src);
+}
+
+static inline void tcg_gen_exts(TCGTemp *dst, TCGTemp *src)
+{
+ tcg_gen_op_tt(INDEX_op_ext_i32_i64, TCG_TYPE_I64, dst, src);
+}
+
+static inline void tcg_gen_extu(TCGTemp *dst, TCGTemp *src)
+{
+ tcg_gen_op_tt(INDEX_op_extu_i32_i64, TCG_TYPE_I64, dst, src);
+}
+
#endif /* TCG_INTERNAL_H */
diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c
index 35cffc6447a..6a5f77e9977 100644
--- a/tcg/tcg-op.c
+++ b/tcg/tcg-op.c
@@ -2200,26 +2200,22 @@ void tcg_gen_abs_i64(TCGv_i64 ret, TCGv_i64 a)
void tcg_gen_extrl_i64_i32(TCGv_i32 ret, TCGv_i64 arg)
{
- tcg_gen_op2(INDEX_op_extrl_i64_i32, TCG_TYPE_I32,
- tcgv_i32_arg(ret), tcgv_i64_arg(arg));
+ tcg_gen_extrl(tcgv_i32_temp(ret), tcgv_i64_temp(arg));
}
void tcg_gen_extrh_i64_i32(TCGv_i32 ret, TCGv_i64 arg)
{
- tcg_gen_op2(INDEX_op_extrh_i64_i32, TCG_TYPE_I32,
- tcgv_i32_arg(ret), tcgv_i64_arg(arg));
+ tcg_gen_extrh(tcgv_i32_temp(ret), tcgv_i64_temp(arg));
}
void tcg_gen_extu_i32_i64(TCGv_i64 ret, TCGv_i32 arg)
{
- tcg_gen_op2(INDEX_op_extu_i32_i64, TCG_TYPE_I64,
- tcgv_i64_arg(ret), tcgv_i32_arg(arg));
+ tcg_gen_extu(tcgv_i64_temp(ret), tcgv_i32_temp(arg));
}
void tcg_gen_ext_i32_i64(TCGv_i64 ret, TCGv_i32 arg)
{
- tcg_gen_op2(INDEX_op_ext_i32_i64, TCG_TYPE_I64,
- tcgv_i64_arg(ret), tcgv_i32_arg(arg));
+ tcg_gen_exts(tcgv_i64_temp(ret), tcgv_i32_temp(arg));
}
void tcg_gen_concat_i32_i64(TCGv_i64 dest, TCGv_i32 low, TCGv_i32 high)
--
2.53.0