void HELPER(cas2w)(CPUM68KState *env, uint32_t regs, uint32_t a1, uint32_t a2)

{

    uint32_t Dc1 = extract32(regs, 9, 3);

    uint32_t Dc2 = extract32(regs, 6, 3);

    uint32_t Du1 = extract32(regs, 3, 3);

    uint32_t Du2 = extract32(regs, 0, 3);

    int16_t c1 = env->dregs[Dc1];

    int16_t c2 = env->dregs[Dc2];

    int16_t u1 = env->dregs[Du1];

    int16_t u2 = env->dregs[Du2];

    int16_t l1, l2;

    uintptr_t ra = GETPC();



    if (parallel_cpus) {

        /* Tell the main loop we need to serialize this insn.  */

        cpu_loop_exit_atomic(ENV_GET_CPU(env), ra);

    } else {

        /* We're executing in a serial context -- no need to be atomic.  */

        l1 = cpu_lduw_data_ra(env, a1, ra);

        l2 = cpu_lduw_data_ra(env, a2, ra);

        if (l1 == c1 && l2 == c2) {

            cpu_stw_data_ra(env, a1, u1, ra);

            cpu_stw_data_ra(env, a2, u2, ra);

        }

    }



    if (c1 != l1) {

        env->cc_n = l1;

        env->cc_v = c1;

    } else {

        env->cc_n = l2;

        env->cc_v = c2;

    }

    env->cc_op = CC_OP_CMPW;

    env->dregs[Dc1] = deposit32(env->dregs[Dc1], 0, 16, l1);

    env->dregs[Dc2] = deposit32(env->dregs[Dc2], 0, 16, l2);

}

void HELPER(cas2w)(CPUM68KState *env, uint32_t regs, uint32_t a1, uint32_t a2)

{

    uint32_t Dc1 = extract32(regs, 9, 3);

    uint32_t Dc2 = extract32(regs, 6, 3);

    uint32_t Du1 = extract32(regs, 3, 3);

    uint32_t Du2 = extract32(regs, 0, 3);

    int16_t c1 = env->dregs[Dc1];

    int16_t c2 = env->dregs[Dc2];

    int16_t u1 = env->dregs[Du1];

    int16_t u2 = env->dregs[Du2];

    int16_t l1, l2;

    uintptr_t ra = GETPC();



    if (parallel_cpus) {

        

        cpu_loop_exit_atomic(ENV_GET_CPU(env), ra);

    } else {

        

        l1 = cpu_lduw_data_ra(env, a1, ra);

        l2 = cpu_lduw_data_ra(env, a2, ra);

        if (l1 == c1 && l2 == c2) {

            cpu_stw_data_ra(env, a1, u1, ra);

            cpu_stw_data_ra(env, a2, u2, ra);

        }

    }



    if (c1 != l1) {

        env->cc_n = l1;

        env->cc_v = c1;

    } else {

        env->cc_n = l2;

        env->cc_v = c2;

    }

    env->cc_op = CC_OP_CMPW;

    env->dregs[Dc1] = deposit32(env->dregs[Dc1], 0, 16, l1);

    env->dregs[Dc2] = deposit32(env->dregs[Dc2], 0, 16, l2);

}

void FUNC_0(cas2w)(CPUM68KState *env, uint32_t regs, uint32_t a1, uint32_t a2)

{

    uint32_t Dc1 = extract32(regs, 9, 3);

    uint32_t Dc2 = extract32(regs, 6, 3);

    uint32_t Du1 = extract32(regs, 3, 3);

    uint32_t Du2 = extract32(regs, 0, 3);

    int16_t c1 = env->dregs[Dc1];

    int16_t c2 = env->dregs[Dc2];

    int16_t u1 = env->dregs[Du1];

    int16_t u2 = env->dregs[Du2];

    int16_t l1, l2;

    uintptr_t ra = GETPC();



    if (parallel_cpus) {

        

        cpu_loop_exit_atomic(ENV_GET_CPU(env), ra);

    } else {

        

        l1 = cpu_lduw_data_ra(env, a1, ra);

        l2 = cpu_lduw_data_ra(env, a2, ra);

        if (l1 == c1 && l2 == c2) {

            cpu_stw_data_ra(env, a1, u1, ra);

            cpu_stw_data_ra(env, a2, u2, ra);

        }

    }



    if (c1 != l1) {

        env->cc_n = l1;

        env->cc_v = c1;

    } else {

        env->cc_n = l2;

        env->cc_v = c2;

    }

    env->cc_op = CC_OP_CMPW;

    env->dregs[Dc1] = deposit32(env->dregs[Dc1], 0, 16, l1);

    env->dregs[Dc2] = deposit32(env->dregs[Dc2], 0, 16, l2);

}

void FUNC_0(cas2w)(CPUM68KState *env, uint32_t regs, uint32_t a1, uint32_t a2)
{ uint32_t Dc1 = extract32(regs, 9, 3); uint32_t Dc2 = extract32(regs, 6, 3); uint32_t Du1 = extract32(regs, 3, 3); uint32_t Du2 = extract32(regs, 0, 3); int16_t c1 = env->dregs[Dc1]; int16_t c2 = env->dregs[Dc2]; int16_t u1 = env->dregs[Du1]; int16_t u2 = env->dregs[Du2]; int16_t l1, l2; uintptr_t ra = GETPC(); if (parallel_cpus) { cpu_loop_exit_atomic(ENV_GET_CPU(env), ra); } else { l1 = cpu_lduw_data_ra(env, a1, ra); l2 = cpu_lduw_data_ra(env, a2, ra); if (l1 == c1 && l2 == c2) { cpu_stw_data_ra(env, a1, u1, ra); cpu_stw_data_ra(env, a2, u2, ra); } } if (c1 != l1) { env->cc_n = l1; env->cc_v = c1; } else { env->cc_n = l2; env->cc_v = c2; } env->cc_op = CC_OP_CMPW; env->dregs[Dc1] = deposit32(env->dregs[Dc1], 0, 16, l1); env->dregs[Dc2] = deposit32(env->dregs[Dc2], 0, 16, l2); }