#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));
}
