static void gen_conditional_store(DisasContext *ctx, TCGv EA,

                                  int reg, int size)

{

    int l1;



    tcg_gen_trunc_tl_i32(cpu_crf[0], cpu_so);

    l1 = gen_new_label();

    tcg_gen_brcond_tl(TCG_COND_NE, EA, cpu_reserve, l1);

    tcg_gen_ori_i32(cpu_crf[0], cpu_crf[0], 1 << CRF_EQ);

#if defined(TARGET_PPC64)

    if (size == 8) {

        gen_qemu_st64(ctx, cpu_gpr[reg], EA);

    } else

#endif

    if (size == 4) {

        gen_qemu_st32(ctx, cpu_gpr[reg], EA);

    } else if (size == 2) {

        gen_qemu_st16(ctx, cpu_gpr[reg], EA);

#if defined(TARGET_PPC64)

    } else if (size == 16) {

        TCGv gpr1, gpr2 , EA8;

        if (unlikely(ctx->le_mode)) {

            gpr1 = cpu_gpr[reg+1];

            gpr2 = cpu_gpr[reg];

        } else {

            gpr1 = cpu_gpr[reg];

            gpr2 = cpu_gpr[reg+1];

        }

        gen_qemu_st64(ctx, gpr1, EA);

        EA8 = tcg_temp_local_new();

        gen_addr_add(ctx, EA8, EA, 8);

        gen_qemu_st64(ctx, gpr2, EA8);

        tcg_temp_free(EA8);

#endif

    } else {

        gen_qemu_st8(ctx, cpu_gpr[reg], EA);

    }

    gen_set_label(l1);

    tcg_gen_movi_tl(cpu_reserve, -1);

}

static void gen_conditional_store(DisasContext *ctx, TCGv EA,

                                  int reg, int size)

{

    int l1;



    tcg_gen_trunc_tl_i32(cpu_crf[0], cpu_so);

    l1 = gen_new_label();

    tcg_gen_brcond_tl(TCG_COND_NE, EA, cpu_reserve, l1);

    tcg_gen_ori_i32(cpu_crf[0], cpu_crf[0], 1 << CRF_EQ);

#if defined(TARGET_PPC64)

    if (size == 8) {

        gen_qemu_st64(ctx, cpu_gpr[reg], EA);

    } else

#endif

    if (size == 4) {

        gen_qemu_st32(ctx, cpu_gpr[reg], EA);

    } else if (size == 2) {

        gen_qemu_st16(ctx, cpu_gpr[reg], EA);

#if defined(TARGET_PPC64)

    } else if (size == 16) {

        TCGv gpr1, gpr2 , EA8;

        if (unlikely(ctx->le_mode)) {

            gpr1 = cpu_gpr[reg+1];

            gpr2 = cpu_gpr[reg];

        } else {

            gpr1 = cpu_gpr[reg];

            gpr2 = cpu_gpr[reg+1];

        }

        gen_qemu_st64(ctx, gpr1, EA);

        EA8 = tcg_temp_local_new();

        gen_addr_add(ctx, EA8, EA, 8);

        gen_qemu_st64(ctx, gpr2, EA8);

        tcg_temp_free(EA8);

#endif

    } else {

        gen_qemu_st8(ctx, cpu_gpr[reg], EA);

    }

    gen_set_label(l1);

    tcg_gen_movi_tl(cpu_reserve, -1);

}

static void FUNC_0(DisasContext *VAR_0, TCGv VAR_1,

                                  int VAR_2, int VAR_3)

{

    int VAR_4;



    tcg_gen_trunc_tl_i32(cpu_crf[0], cpu_so);

    VAR_4 = gen_new_label();

    tcg_gen_brcond_tl(TCG_COND_NE, VAR_1, cpu_reserve, VAR_4);

    tcg_gen_ori_i32(cpu_crf[0], cpu_crf[0], 1 << CRF_EQ);

#if defined(TARGET_PPC64)

    if (VAR_3 == 8) {

        gen_qemu_st64(VAR_0, cpu_gpr[VAR_2], VAR_1);

    } else

#endif

    if (VAR_3 == 4) {

        gen_qemu_st32(VAR_0, cpu_gpr[VAR_2], VAR_1);

    } else if (VAR_3 == 2) {

        gen_qemu_st16(VAR_0, cpu_gpr[VAR_2], VAR_1);

#if defined(TARGET_PPC64)

    } else if (VAR_3 == 16) {

        TCGv gpr1, gpr2 , EA8;

        if (unlikely(VAR_0->le_mode)) {

            gpr1 = cpu_gpr[VAR_2+1];

            gpr2 = cpu_gpr[VAR_2];

        } else {

            gpr1 = cpu_gpr[VAR_2];

            gpr2 = cpu_gpr[VAR_2+1];

        }

        gen_qemu_st64(VAR_0, gpr1, VAR_1);

        EA8 = tcg_temp_local_new();

        gen_addr_add(VAR_0, EA8, VAR_1, 8);

        gen_qemu_st64(VAR_0, gpr2, EA8);

        tcg_temp_free(EA8);

#endif

    } else {

        gen_qemu_st8(VAR_0, cpu_gpr[VAR_2], VAR_1);

    }

    gen_set_label(VAR_4);

    tcg_gen_movi_tl(cpu_reserve, -1);

}

static void FUNC_0(DisasContext *VAR_0, TCGv VAR_1,
int VAR_2, int VAR_3)
{ int VAR_4; tcg_gen_trunc_tl_i32(cpu_crf[0], cpu_so); VAR_4 = gen_new_label(); tcg_gen_brcond_tl(TCG_COND_NE, VAR_1, cpu_reserve, VAR_4); tcg_gen_ori_i32(cpu_crf[0], cpu_crf[0], 1 << CRF_EQ); #if defined(TARGET_PPC64)
if (VAR_3 == 8) { gen_qemu_st64(VAR_0, cpu_gpr[VAR_2], VAR_1); } else #endif
if (VAR_3 == 4) { gen_qemu_st32(VAR_0, cpu_gpr[VAR_2], VAR_1); } else if (VAR_3 == 2) { gen_qemu_st16(VAR_0, cpu_gpr[VAR_2], VAR_1); #if defined(TARGET_PPC64)
} else if (VAR_3 == 16) { TCGv gpr1, gpr2 , EA8; if (unlikely(VAR_0->le_mode)) { gpr1 = cpu_gpr[VAR_2+1]; gpr2 = cpu_gpr[VAR_2]; } else { gpr1 = cpu_gpr[VAR_2]; gpr2 = cpu_gpr[VAR_2+1]; } gen_qemu_st64(VAR_0, gpr1, VAR_1); EA8 = tcg_temp_local_new(); gen_addr_add(VAR_0, EA8, VAR_1, 8); gen_qemu_st64(VAR_0, gpr2, EA8); tcg_temp_free(EA8); #endif
} else { gen_qemu_st8(VAR_0, cpu_gpr[VAR_2], VAR_1); } gen_set_label(VAR_4); tcg_gen_movi_tl(cpu_reserve, -1); }