コード例 #1
0
ファイル: gspecial.c プロジェクト: derselbst/lazyusf2
void gendsll(usf_state_t * state)
{
#ifdef INTERPRET_DSLL
   gencallinterp(state, (unsigned int)state->current_instruction_table.DSLL, 0);
#else
   int rt1 = allocate_64_register1(state, (unsigned int *)state->dst->f.r.rt);
   int rt2 = allocate_64_register2(state, (unsigned int *)state->dst->f.r.rt);
   int rd1 = allocate_64_register1_w(state, (unsigned int *)state->dst->f.r.rd);
   int rd2 = allocate_64_register2_w(state, (unsigned int *)state->dst->f.r.rd);
   
   mov_reg32_reg32(state, rd1, rt1);
   mov_reg32_reg32(state, rd2, rt2);
   shld_reg32_reg32_imm8(state, rd2, rd1, state->dst->f.r.sa);
   shl_reg32_imm8(state, rd1, state->dst->f.r.sa);
   if (state->dst->f.r.sa & 0x20)
     {
    mov_reg32_reg32(state, rd2, rd1);
    xor_reg32_reg32(state, rd1, rd1);
     }
#endif
}
コード例 #2
0
ファイル: gspecial.c プロジェクト: GPDP2/mupen64
void gendsll()
{
#ifdef INTERPRET_DSLL
   gencallinterp((unsigned long)DSLL, 0);
#else
   int rt1 = allocate_64_register1((unsigned long *)dst->f.r.rt);
   int rt2 = allocate_64_register2((unsigned long *)dst->f.r.rt);
   int rd1 = allocate_64_register1_w((unsigned long *)dst->f.r.rd);
   int rd2 = allocate_64_register2_w((unsigned long *)dst->f.r.rd);
   
   mov_reg32_reg32(rd1, rt1);
   mov_reg32_reg32(rd2, rt2);
   shld_reg32_reg32_imm8(rd2, rd1, dst->f.r.sa);
   shl_reg32_imm8(rd1, dst->f.r.sa);
   if (dst->f.r.sa & 0x20)
     {
	mov_reg32_reg32(rd2, rd1);
	xor_reg32_reg32(rd1, rd1);
     }
#endif
}
コード例 #3
0
ファイル: gspecial.c プロジェクト: krnlyng/mupen64plus-core
void gendsll(void)
{
#ifdef INTERPRET_DSLL
   gencallinterp((unsigned int)cached_interpreter_table.DSLL, 0);
#else
   int rt1 = allocate_64_register1((unsigned int *)g_dev.r4300.recomp.dst->f.r.rt);
   int rt2 = allocate_64_register2((unsigned int *)g_dev.r4300.recomp.dst->f.r.rt);
   int rd1 = allocate_64_register1_w((unsigned int *)g_dev.r4300.recomp.dst->f.r.rd);
   int rd2 = allocate_64_register2_w((unsigned int *)g_dev.r4300.recomp.dst->f.r.rd);
   
   mov_reg32_reg32(rd1, rt1);
   mov_reg32_reg32(rd2, rt2);
   shld_reg32_reg32_imm8(rd2, rd1, g_dev.r4300.recomp.dst->f.r.sa);
   shl_reg32_imm8(rd1, g_dev.r4300.recomp.dst->f.r.sa);
   if (g_dev.r4300.recomp.dst->f.r.sa & 0x20)
     {
    mov_reg32_reg32(rd2, rd1);
    xor_reg32_reg32(rd1, rd1);
     }
#endif
}