From bc9fdf67bf658b3e23ba9096e0322c09994ac3d3 Mon Sep 17 00:00:00 2001 From: Matt Borgerson Date: Mon, 6 Jan 2025 04:08:54 -0700 Subject: [PATCH] tcg: Move tcg_gen_* FP helpers to tcg-op-fp.c --- include/tcg/tcg-op-common.h | 43 +++++++ include/tcg/tcg-op.h | 215 ---------------------------------- tcg/meson.build | 1 + tcg/tcg-op-fp.c | 227 ++++++++++++++++++++++++++++++++++++ 4 files changed, 271 insertions(+), 215 deletions(-) create mode 100644 tcg/tcg-op-fp.c diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index f5c0c662a3..e8e9657986 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -562,4 +562,47 @@ static inline void tcg_gen_trunc_ptr_i32(TCGv_i32 r, TCGv_ptr a) #undef PTR #undef NAT +/* FP */ +void tcg_gen_flcr(TCGv_i32 arg); +void tcg_gen_st80f_f32(TCGv_f32 arg, TCGv_ptr dst); +void tcg_gen_st80f_f64(TCGv_f64 arg, TCGv_ptr dst); +void tcg_gen_ld80f_f32(TCGv_f32 ret, TCGv_ptr src); +void tcg_gen_ld80f_f64(TCGv_f64 ret, TCGv_ptr src); +void tcg_gen_abs_f32(TCGv_f32 ret, TCGv_f32 src); +void tcg_gen_abs_f64(TCGv_f64 ret, TCGv_f64 src); +void tcg_gen_add_f32(TCGv_f32 ret, TCGv_f32 arg1, TCGv_f32 arg2); +void tcg_gen_add_f64(TCGv_f64 ret, TCGv_f64 arg1, TCGv_f64 arg2); +void tcg_gen_chs_f32(TCGv_f32 ret, TCGv_f32 src); +void tcg_gen_chs_f64(TCGv_f64 ret, TCGv_f64 src); +void tcg_gen_com_f32(TCGv_i64 ret, TCGv_f32 arg1, TCGv_f32 arg2); +void tcg_gen_com_f64(TCGv_i64 ret, TCGv_f64 arg1, TCGv_f64 arg2); +void tcg_gen_cos_f32(TCGv_f32 ret, TCGv_f32 arg); +void tcg_gen_cos_f64(TCGv_f64 ret, TCGv_f64 arg); +void tcg_gen_cvt32f_f64(TCGv_f64 ret, TCGv_f32 arg); +void tcg_gen_cvt32f_i32(TCGv_i32 ret, TCGv_f32 arg); +void tcg_gen_cvt32f_i64(TCGv_i64 ret, TCGv_f32 arg); +void tcg_gen_cvt32i_f32(TCGv_f32 ret, TCGv_i32 arg); +void tcg_gen_cvt32i_f64(TCGv_f64 ret, TCGv_i32 arg); +void tcg_gen_cvt64f_f32(TCGv_f32 ret, TCGv_f64 arg); +void tcg_gen_cvt64f_i32(TCGv_i32 ret, TCGv_f64 src); +void tcg_gen_cvt64f_i64(TCGv_i64 ret, TCGv_f64 src); +void tcg_gen_cvt64i_f32(TCGv_f32 ret, TCGv_i64 arg); +void tcg_gen_cvt64i_f64(TCGv_f64 ret, TCGv_i64 arg); +void tcg_gen_div_f32(TCGv_f32 ret, TCGv_f32 arg1, TCGv_f32 arg2); +void tcg_gen_div_f64(TCGv_f64 ret, TCGv_f64 arg1, TCGv_f64 arg2); +void tcg_gen_mov32f_i32(TCGv_i32 ret, TCGv_f32 src); +void tcg_gen_mov32i_f32(TCGv_f32 ret, TCGv_i32 arg); +void tcg_gen_mov64f_i64(TCGv_i64 ret, TCGv_f64 src); +void tcg_gen_mov64i_f64(TCGv_f64 ret, TCGv_i64 arg); +void tcg_gen_mov_f32(TCGv_f32 ret, TCGv_f32 src); +void tcg_gen_mov_f64(TCGv_f64 ret, TCGv_f64 src); +void tcg_gen_mul_f32(TCGv_f32 ret, TCGv_f32 arg1, TCGv_f32 arg2); +void tcg_gen_mul_f64(TCGv_f64 ret, TCGv_f64 arg1, TCGv_f64 arg2); +void tcg_gen_sin_f32(TCGv_f32 ret, TCGv_f32 arg); +void tcg_gen_sin_f64(TCGv_f64 ret, TCGv_f64 arg); +void tcg_gen_sqrt_f32(TCGv_f32 ret, TCGv_f32 arg); +void tcg_gen_sqrt_f64(TCGv_f64 ret, TCGv_f64 arg); +void tcg_gen_sub_f32(TCGv_f32 ret, TCGv_f32 arg1, TCGv_f32 arg2); +void tcg_gen_sub_f64(TCGv_f64 ret, TCGv_f64 arg1, TCGv_f64 arg2); + #endif /* TCG_TCG_OP_COMMON_H */ diff --git a/include/tcg/tcg-op.h b/include/tcg/tcg-op.h index 148a324989..a02850583b 100644 --- a/include/tcg/tcg-op.h +++ b/include/tcg/tcg-op.h @@ -10,221 +10,6 @@ #include "tcg/tcg-op-common.h" -static inline void tcg_gen_flcr(TCGv_i32 arg) -{ - tcg_gen_op1_i32(INDEX_op_flcr, arg); -} - -static inline void tcg_gen_st80f_f32(TCGv_f32 arg, TCGv_ptr dst) -{ - tcg_gen_op2(INDEX_op_st80f_f32, tcgv_f32_arg(arg), tcgv_ptr_arg(dst)); -} - -static inline void tcg_gen_st80f_f64(TCGv_f64 arg, TCGv_ptr dst) -{ - tcg_gen_op2(INDEX_op_st80f_f64, tcgv_f64_arg(arg), tcgv_ptr_arg(dst)); -} - -static inline void tcg_gen_ld80f_f32(TCGv_f32 ret, TCGv_ptr src) -{ - tcg_gen_op2(INDEX_op_ld80f_f32, tcgv_f32_arg(ret), tcgv_ptr_arg(src)); -} - -static inline void tcg_gen_ld80f_f64(TCGv_f64 ret, TCGv_ptr src) -{ - tcg_gen_op2(INDEX_op_ld80f_f64, tcgv_f64_arg(ret), tcgv_ptr_arg(src)); -} - -static inline void tcg_gen_abs_f32(TCGv_f32 ret, TCGv_f32 src) -{ - tcg_gen_op2(INDEX_op_abs_f32, tcgv_f32_arg(ret), tcgv_f32_arg(src)); -} - -static inline void tcg_gen_abs_f64(TCGv_f64 ret, TCGv_f64 src) -{ - tcg_gen_op2(INDEX_op_abs_f64, tcgv_f64_arg(ret), tcgv_f64_arg(src)); -} - -static inline void tcg_gen_add_f32(TCGv_f32 ret, TCGv_f32 arg1, TCGv_f32 arg2) -{ - tcg_gen_op3(INDEX_op_add_f32, - tcgv_f32_arg(ret), tcgv_f32_arg(arg1), tcgv_f32_arg(arg2)); -} - -static inline void tcg_gen_add_f64(TCGv_f64 ret, TCGv_f64 arg1, TCGv_f64 arg2) -{ - tcg_gen_op3(INDEX_op_add_f64, - tcgv_f64_arg(ret), tcgv_f64_arg(arg1), tcgv_f64_arg(arg2)); -} - -static inline void tcg_gen_chs_f32(TCGv_f32 ret, TCGv_f32 src) -{ - tcg_gen_op2(INDEX_op_chs_f32, tcgv_f32_arg(ret), tcgv_f32_arg(src)); -} - -static inline void tcg_gen_chs_f64(TCGv_f64 ret, TCGv_f64 src) -{ - tcg_gen_op2(INDEX_op_chs_f64, tcgv_f64_arg(ret), tcgv_f64_arg(src)); -} - -static inline void tcg_gen_com_f32(TCGv_i64 ret, TCGv_f32 arg1, TCGv_f32 arg2) -{ - tcg_gen_op3(INDEX_op_com_f32, - tcgv_i64_arg(ret), tcgv_f32_arg(arg1), tcgv_f32_arg(arg2)); -} - -static inline void tcg_gen_com_f64(TCGv_i64 ret, TCGv_f64 arg1, TCGv_f64 arg2) -{ - tcg_gen_op3(INDEX_op_com_f64, - tcgv_i64_arg(ret), tcgv_f64_arg(arg1), tcgv_f64_arg(arg2)); -} - -static inline void tcg_gen_cos_f32(TCGv_f32 ret, TCGv_f32 arg) -{ - tcg_gen_op2(INDEX_op_cos_f32, tcgv_f32_arg(ret), tcgv_f32_arg(arg)); -} - -static inline void tcg_gen_cos_f64(TCGv_f64 ret, TCGv_f64 arg) -{ - tcg_gen_op2(INDEX_op_cos_f64, tcgv_f64_arg(ret), tcgv_f64_arg(arg)); -} - -static inline void tcg_gen_cvt32f_f64(TCGv_f64 ret, TCGv_f32 arg) -{ - tcg_gen_op2(INDEX_op_cvt32f_f64, tcgv_f64_arg(ret), tcgv_f32_arg(arg)); -} - -static inline void tcg_gen_cvt32f_i32(TCGv_i32 ret, TCGv_f32 arg) -{ - tcg_gen_op2(INDEX_op_cvt32f_i32, tcgv_i32_arg(ret), tcgv_f32_arg(arg)); -} - -static inline void tcg_gen_cvt32f_i64(TCGv_i64 ret, TCGv_f32 arg) -{ - tcg_gen_op2(INDEX_op_cvt32f_i64, tcgv_i64_arg(ret), tcgv_f32_arg(arg)); -} - -static inline void tcg_gen_cvt32i_f32(TCGv_f32 ret, TCGv_i32 arg) -{ - tcg_gen_op2(INDEX_op_cvt32i_f32, tcgv_f32_arg(ret), tcgv_i32_arg(arg)); -} - -static inline void tcg_gen_cvt32i_f64(TCGv_f64 ret, TCGv_i32 arg) -{ - tcg_gen_op2(INDEX_op_cvt32i_f64, tcgv_f64_arg(ret), tcgv_i32_arg(arg)); -} - -static inline void tcg_gen_cvt64f_f32(TCGv_f32 ret, TCGv_f64 arg) -{ - tcg_gen_op2(INDEX_op_cvt64f_f32, tcgv_f32_arg(ret), tcgv_f64_arg(arg)); -} - -static inline void tcg_gen_cvt64f_i32(TCGv_i32 ret, TCGv_f64 src) -{ - tcg_gen_op2(INDEX_op_cvt64f_i32, tcgv_i32_arg(ret), tcgv_f64_arg(src)); -} - -static inline void tcg_gen_cvt64f_i64(TCGv_i64 ret, TCGv_f64 src) -{ - tcg_gen_op2(INDEX_op_cvt64f_i64, tcgv_i64_arg(ret), tcgv_f64_arg(src)); -} - -static inline void tcg_gen_cvt64i_f32(TCGv_f32 ret, TCGv_i64 arg) -{ - tcg_gen_op2(INDEX_op_cvt64i_f32, tcgv_f32_arg(ret), tcgv_i64_arg(arg)); -} - -static inline void tcg_gen_cvt64i_f64(TCGv_f64 ret, TCGv_i64 arg) -{ - tcg_gen_op2(INDEX_op_cvt64i_f64, tcgv_f64_arg(ret), tcgv_i64_arg(arg)); -} - -static inline void tcg_gen_div_f32(TCGv_f32 ret, TCGv_f32 arg1, TCGv_f32 arg2) -{ - tcg_gen_op3(INDEX_op_div_f32, - tcgv_f32_arg(ret), tcgv_f32_arg(arg1), tcgv_f32_arg(arg2)); -} - -static inline void tcg_gen_div_f64(TCGv_f64 ret, TCGv_f64 arg1, TCGv_f64 arg2) -{ - tcg_gen_op3(INDEX_op_div_f64, - tcgv_f64_arg(ret), tcgv_f64_arg(arg1), tcgv_f64_arg(arg2)); -} - -static inline void tcg_gen_mov32f_i32(TCGv_i32 ret, TCGv_f32 src) -{ - tcg_gen_op2(INDEX_op_mov32f_i32, tcgv_i32_arg(ret), tcgv_f32_arg(src)); -} - -static inline void tcg_gen_mov32i_f32(TCGv_f32 ret, TCGv_i32 arg) -{ - tcg_gen_op2(INDEX_op_mov32i_f32, tcgv_f32_arg(ret), tcgv_i32_arg(arg)); -} - -static inline void tcg_gen_mov64f_i64(TCGv_i64 ret, TCGv_f64 src) -{ - tcg_gen_op2(INDEX_op_mov64f_i64, tcgv_i64_arg(ret), tcgv_f64_arg(src)); -} - -static inline void tcg_gen_mov64i_f64(TCGv_f64 ret, TCGv_i64 arg) -{ - tcg_gen_op2(INDEX_op_mov64i_f64, tcgv_f64_arg(ret), tcgv_i64_arg(arg)); -} - -static inline void tcg_gen_mov_f32(TCGv_f32 ret, TCGv_f32 src) -{ - tcg_gen_op2(INDEX_op_mov_f32, tcgv_f32_arg(ret), tcgv_f32_arg(src)); -} - -static inline void tcg_gen_mov_f64(TCGv_f64 ret, TCGv_f64 src) -{ - tcg_gen_op2(INDEX_op_mov_f64, tcgv_f64_arg(ret), tcgv_f64_arg(src)); -} - -static inline void tcg_gen_mul_f32(TCGv_f32 ret, TCGv_f32 arg1, TCGv_f32 arg2) -{ - tcg_gen_op3(INDEX_op_mul_f32, - tcgv_f32_arg(ret), tcgv_f32_arg(arg1), tcgv_f32_arg(arg2)); -} - -static inline void tcg_gen_mul_f64(TCGv_f64 ret, TCGv_f64 arg1, TCGv_f64 arg2) -{ - tcg_gen_op3(INDEX_op_mul_f64, - tcgv_f64_arg(ret), tcgv_f64_arg(arg1), tcgv_f64_arg(arg2)); -} - -static inline void tcg_gen_sin_f32(TCGv_f32 ret, TCGv_f32 arg) -{ - tcg_gen_op2(INDEX_op_sin_f32, tcgv_f32_arg(ret), tcgv_f32_arg(arg)); -} - -static inline void tcg_gen_sin_f64(TCGv_f64 ret, TCGv_f64 arg) -{ - tcg_gen_op2(INDEX_op_sin_f64, tcgv_f64_arg(ret), tcgv_f64_arg(arg)); -} - -static inline void tcg_gen_sqrt_f32(TCGv_f32 ret, TCGv_f32 arg) -{ - tcg_gen_op2(INDEX_op_sqrt_f32, tcgv_f32_arg(ret), tcgv_f32_arg(arg)); -} - -static inline void tcg_gen_sqrt_f64(TCGv_f64 ret, TCGv_f64 arg) -{ - tcg_gen_op2(INDEX_op_sqrt_f64, tcgv_f64_arg(ret), tcgv_f64_arg(arg)); -} - -static inline void tcg_gen_sub_f32(TCGv_f32 ret, TCGv_f32 arg1, TCGv_f32 arg2) -{ - tcg_gen_op3(INDEX_op_sub_f32, - tcgv_f32_arg(ret), tcgv_f32_arg(arg1), tcgv_f32_arg(arg2)); -} - -static inline void tcg_gen_sub_f64(TCGv_f64 ret, TCGv_f64 arg1, TCGv_f64 arg2) -{ - tcg_gen_op3(INDEX_op_sub_f64, - tcgv_f64_arg(ret), tcgv_f64_arg(arg1), tcgv_f64_arg(arg2)); -} - #ifndef TARGET_LONG_BITS #error must include QEMU headers #endif diff --git a/tcg/meson.build b/tcg/meson.build index 69ebb4908a..79e72223a8 100644 --- a/tcg/meson.build +++ b/tcg/meson.build @@ -13,6 +13,7 @@ tcg_ss.add(files( 'tcg-op-ldst.c', 'tcg-op-gvec.c', 'tcg-op-vec.c', + 'tcg-op-fp.c', )) if get_option('tcg_interpreter') diff --git a/tcg/tcg-op-fp.c b/tcg/tcg-op-fp.c new file mode 100644 index 0000000000..2abbbd295d --- /dev/null +++ b/tcg/tcg-op-fp.c @@ -0,0 +1,227 @@ +#include "qemu/osdep.h" +#include "tcg/tcg.h" +#include "tcg/tcg-temp-internal.h" +#include "tcg/tcg-op-common.h" +#include "exec/translation-block.h" +#include "exec/plugin-gen.h" +#include "tcg-internal.h" + +static void tcg_gen_op1_i32(TCGOpcode opc, TCGv_i32 a1) +{ + tcg_gen_op1(opc, tcgv_i32_arg(a1)); +} + +void tcg_gen_flcr(TCGv_i32 arg) +{ + tcg_gen_op1_i32(INDEX_op_flcr, arg); +} + +void tcg_gen_st80f_f32(TCGv_f32 arg, TCGv_ptr dst) +{ + tcg_gen_op2(INDEX_op_st80f_f32, tcgv_f32_arg(arg), tcgv_ptr_arg(dst)); +} + +void tcg_gen_st80f_f64(TCGv_f64 arg, TCGv_ptr dst) +{ + tcg_gen_op2(INDEX_op_st80f_f64, tcgv_f64_arg(arg), tcgv_ptr_arg(dst)); +} + +void tcg_gen_ld80f_f32(TCGv_f32 ret, TCGv_ptr src) +{ + tcg_gen_op2(INDEX_op_ld80f_f32, tcgv_f32_arg(ret), tcgv_ptr_arg(src)); +} + +void tcg_gen_ld80f_f64(TCGv_f64 ret, TCGv_ptr src) +{ + tcg_gen_op2(INDEX_op_ld80f_f64, tcgv_f64_arg(ret), tcgv_ptr_arg(src)); +} + +void tcg_gen_abs_f32(TCGv_f32 ret, TCGv_f32 src) +{ + tcg_gen_op2(INDEX_op_abs_f32, tcgv_f32_arg(ret), tcgv_f32_arg(src)); +} + +void tcg_gen_abs_f64(TCGv_f64 ret, TCGv_f64 src) +{ + tcg_gen_op2(INDEX_op_abs_f64, tcgv_f64_arg(ret), tcgv_f64_arg(src)); +} + +void tcg_gen_add_f32(TCGv_f32 ret, TCGv_f32 arg1, TCGv_f32 arg2) +{ + tcg_gen_op3(INDEX_op_add_f32, + tcgv_f32_arg(ret), tcgv_f32_arg(arg1), tcgv_f32_arg(arg2)); +} + +void tcg_gen_add_f64(TCGv_f64 ret, TCGv_f64 arg1, TCGv_f64 arg2) +{ + tcg_gen_op3(INDEX_op_add_f64, + tcgv_f64_arg(ret), tcgv_f64_arg(arg1), tcgv_f64_arg(arg2)); +} + +void tcg_gen_chs_f32(TCGv_f32 ret, TCGv_f32 src) +{ + tcg_gen_op2(INDEX_op_chs_f32, tcgv_f32_arg(ret), tcgv_f32_arg(src)); +} + +void tcg_gen_chs_f64(TCGv_f64 ret, TCGv_f64 src) +{ + tcg_gen_op2(INDEX_op_chs_f64, tcgv_f64_arg(ret), tcgv_f64_arg(src)); +} + +void tcg_gen_com_f32(TCGv_i64 ret, TCGv_f32 arg1, TCGv_f32 arg2) +{ + tcg_gen_op3(INDEX_op_com_f32, + tcgv_i64_arg(ret), tcgv_f32_arg(arg1), tcgv_f32_arg(arg2)); +} + +void tcg_gen_com_f64(TCGv_i64 ret, TCGv_f64 arg1, TCGv_f64 arg2) +{ + tcg_gen_op3(INDEX_op_com_f64, + tcgv_i64_arg(ret), tcgv_f64_arg(arg1), tcgv_f64_arg(arg2)); +} + +void tcg_gen_cos_f32(TCGv_f32 ret, TCGv_f32 arg) +{ + tcg_gen_op2(INDEX_op_cos_f32, tcgv_f32_arg(ret), tcgv_f32_arg(arg)); +} + +void tcg_gen_cos_f64(TCGv_f64 ret, TCGv_f64 arg) +{ + tcg_gen_op2(INDEX_op_cos_f64, tcgv_f64_arg(ret), tcgv_f64_arg(arg)); +} + +void tcg_gen_cvt32f_f64(TCGv_f64 ret, TCGv_f32 arg) +{ + tcg_gen_op2(INDEX_op_cvt32f_f64, tcgv_f64_arg(ret), tcgv_f32_arg(arg)); +} + +void tcg_gen_cvt32f_i32(TCGv_i32 ret, TCGv_f32 arg) +{ + tcg_gen_op2(INDEX_op_cvt32f_i32, tcgv_i32_arg(ret), tcgv_f32_arg(arg)); +} + +void tcg_gen_cvt32f_i64(TCGv_i64 ret, TCGv_f32 arg) +{ + tcg_gen_op2(INDEX_op_cvt32f_i64, tcgv_i64_arg(ret), tcgv_f32_arg(arg)); +} + +void tcg_gen_cvt32i_f32(TCGv_f32 ret, TCGv_i32 arg) +{ + tcg_gen_op2(INDEX_op_cvt32i_f32, tcgv_f32_arg(ret), tcgv_i32_arg(arg)); +} + +void tcg_gen_cvt32i_f64(TCGv_f64 ret, TCGv_i32 arg) +{ + tcg_gen_op2(INDEX_op_cvt32i_f64, tcgv_f64_arg(ret), tcgv_i32_arg(arg)); +} + +void tcg_gen_cvt64f_f32(TCGv_f32 ret, TCGv_f64 arg) +{ + tcg_gen_op2(INDEX_op_cvt64f_f32, tcgv_f32_arg(ret), tcgv_f64_arg(arg)); +} + +void tcg_gen_cvt64f_i32(TCGv_i32 ret, TCGv_f64 src) +{ + tcg_gen_op2(INDEX_op_cvt64f_i32, tcgv_i32_arg(ret), tcgv_f64_arg(src)); +} + +void tcg_gen_cvt64f_i64(TCGv_i64 ret, TCGv_f64 src) +{ + tcg_gen_op2(INDEX_op_cvt64f_i64, tcgv_i64_arg(ret), tcgv_f64_arg(src)); +} + +void tcg_gen_cvt64i_f32(TCGv_f32 ret, TCGv_i64 arg) +{ + tcg_gen_op2(INDEX_op_cvt64i_f32, tcgv_f32_arg(ret), tcgv_i64_arg(arg)); +} + +void tcg_gen_cvt64i_f64(TCGv_f64 ret, TCGv_i64 arg) +{ + tcg_gen_op2(INDEX_op_cvt64i_f64, tcgv_f64_arg(ret), tcgv_i64_arg(arg)); +} + +void tcg_gen_div_f32(TCGv_f32 ret, TCGv_f32 arg1, TCGv_f32 arg2) +{ + tcg_gen_op3(INDEX_op_div_f32, + tcgv_f32_arg(ret), tcgv_f32_arg(arg1), tcgv_f32_arg(arg2)); +} + +void tcg_gen_div_f64(TCGv_f64 ret, TCGv_f64 arg1, TCGv_f64 arg2) +{ + tcg_gen_op3(INDEX_op_div_f64, + tcgv_f64_arg(ret), tcgv_f64_arg(arg1), tcgv_f64_arg(arg2)); +} + +void tcg_gen_mov32f_i32(TCGv_i32 ret, TCGv_f32 src) +{ + tcg_gen_op2(INDEX_op_mov32f_i32, tcgv_i32_arg(ret), tcgv_f32_arg(src)); +} + +void tcg_gen_mov32i_f32(TCGv_f32 ret, TCGv_i32 arg) +{ + tcg_gen_op2(INDEX_op_mov32i_f32, tcgv_f32_arg(ret), tcgv_i32_arg(arg)); +} + +void tcg_gen_mov64f_i64(TCGv_i64 ret, TCGv_f64 src) +{ + tcg_gen_op2(INDEX_op_mov64f_i64, tcgv_i64_arg(ret), tcgv_f64_arg(src)); +} + +void tcg_gen_mov64i_f64(TCGv_f64 ret, TCGv_i64 arg) +{ + tcg_gen_op2(INDEX_op_mov64i_f64, tcgv_f64_arg(ret), tcgv_i64_arg(arg)); +} + +void tcg_gen_mov_f32(TCGv_f32 ret, TCGv_f32 src) +{ + tcg_gen_op2(INDEX_op_mov_f32, tcgv_f32_arg(ret), tcgv_f32_arg(src)); +} + +void tcg_gen_mov_f64(TCGv_f64 ret, TCGv_f64 src) +{ + tcg_gen_op2(INDEX_op_mov_f64, tcgv_f64_arg(ret), tcgv_f64_arg(src)); +} + +void tcg_gen_mul_f32(TCGv_f32 ret, TCGv_f32 arg1, TCGv_f32 arg2) +{ + tcg_gen_op3(INDEX_op_mul_f32, + tcgv_f32_arg(ret), tcgv_f32_arg(arg1), tcgv_f32_arg(arg2)); +} + +void tcg_gen_mul_f64(TCGv_f64 ret, TCGv_f64 arg1, TCGv_f64 arg2) +{ + tcg_gen_op3(INDEX_op_mul_f64, + tcgv_f64_arg(ret), tcgv_f64_arg(arg1), tcgv_f64_arg(arg2)); +} + +void tcg_gen_sin_f32(TCGv_f32 ret, TCGv_f32 arg) +{ + tcg_gen_op2(INDEX_op_sin_f32, tcgv_f32_arg(ret), tcgv_f32_arg(arg)); +} + +void tcg_gen_sin_f64(TCGv_f64 ret, TCGv_f64 arg) +{ + tcg_gen_op2(INDEX_op_sin_f64, tcgv_f64_arg(ret), tcgv_f64_arg(arg)); +} + +void tcg_gen_sqrt_f32(TCGv_f32 ret, TCGv_f32 arg) +{ + tcg_gen_op2(INDEX_op_sqrt_f32, tcgv_f32_arg(ret), tcgv_f32_arg(arg)); +} + +void tcg_gen_sqrt_f64(TCGv_f64 ret, TCGv_f64 arg) +{ + tcg_gen_op2(INDEX_op_sqrt_f64, tcgv_f64_arg(ret), tcgv_f64_arg(arg)); +} + +void tcg_gen_sub_f32(TCGv_f32 ret, TCGv_f32 arg1, TCGv_f32 arg2) +{ + tcg_gen_op3(INDEX_op_sub_f32, + tcgv_f32_arg(ret), tcgv_f32_arg(arg1), tcgv_f32_arg(arg2)); +} + +void tcg_gen_sub_f64(TCGv_f64 ret, TCGv_f64 arg1, TCGv_f64 arg2) +{ + tcg_gen_op3(INDEX_op_sub_f64, + tcgv_f64_arg(ret), tcgv_f64_arg(arg1), tcgv_f64_arg(arg2)); +}