Branch: Tag:

2014-08-31

2014-08-31 13:15:39 by Per Hedbor <ph@opera.com>

Fixed F_LSH_INT.

2912:    LABELS();    ins_debug_instr_prologue(b, 0, 0);    amd64_load_sp_reg(); -  mov_mem8_reg(sp_reg, -1*sizeof(struct svalue), P_REG_RAX ); +  mov_mem8_reg(sp_reg, SVAL(-1).type, P_REG_RAX );    test_reg32(P_REG_RAX);    jz(&label_B);    LABEL_A;
2921:    instrs[a-F_OFFSET].flags);    jmp(&label_C);    LABEL_B; -  mov_imm_mem(PIKE_T_INT,sp_reg,SVAL(-2).type); -  mov_mem_reg( sp_reg, SVAL(-2).value, P_REG_RBX); +  mov_imm_mem(PIKE_T_INT,sp_reg,SVAL(-1).type); +  mov_mem_reg( sp_reg, SVAL(-1).value, P_REG_RBX);    /* ok. It would have been nice is sal set a    bit that stayed set when you shifted out a 1 bit. :)    */
2932:    shr_reg_imm( P_REG_RDX, P_REG_RCX );    cmp_reg_reg( P_REG_RDX, P_REG_RAX );    jne( &label_A ); -  mov_reg_mem( P_REG_RBX, sp_reg, SVAL(-2).value); -  amd64_add_sp(-1); +  mov_reg_mem( P_REG_RBX, sp_reg, SVAL(-1).value);    LABEL_C; -  +  return;    }    if(!b) return;    if( b < 0 )
2946:    LABELS();    ins_debug_instr_prologue(b, 0, 0);    amd64_load_sp_reg(); -  mov_mem8_reg(sp_reg, -1*sizeof(struct svalue), P_REG_RAX ); +  mov_mem8_reg(sp_reg, SVAL(-1).type, P_REG_RAX );    test_reg(P_REG_RAX);    jnz(&label_A);    mov_mem_reg( sp_reg, SVAL(-1).value, P_REG_RAX);    /* FIXME: shr_mem_imm */    mov_imm_mem(PIKE_T_INT,sp_reg,SVAL(-1).type); -  shr_reg_imm( P_REG_RAX,b); +  shr_reg_imm( P_REG_RAX, b);    mov_reg_mem( P_REG_RAX, sp_reg, SVAL(-1).value);    jmp(&label_B);    LABEL_A;