Commit d285bf78 authored by Stefan Weil's avatar Stefan Weil
Browse files

tci: Add implementation of rotl_i64, rotr_i64



It is used by qemu-ppc64 when running Debian's busybox-static.

Cc: qemu-stable <qemu-stable@nongnu.org>
Signed-off-by: default avatarStefan Weil <sw@weilnetz.de>
Reviewed-by: default avatarRichard Henderson <rth@twiddle.net>
parent f828a4c8
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -670,7 +670,6 @@ static void tcg_out_op(TCGContext *s, TCGOpcode opc, const TCGArg *args,
    case INDEX_op_shl_i64:
    case INDEX_op_shr_i64:
    case INDEX_op_sar_i64:
        /* TODO: Implementation of rotl_i64, rotr_i64 missing in tci.c. */
    case INDEX_op_rotl_i64:     /* Optional (TCG_TARGET_HAS_rot_i64). */
    case INDEX_op_rotr_i64:     /* Optional (TCG_TARGET_HAS_rot_i64). */
        tcg_out_r(s, args[0]);
+9 −1
Original line number Diff line number Diff line
@@ -952,8 +952,16 @@ uintptr_t tcg_qemu_tb_exec(CPUArchState *env, uint8_t *tb_ptr)
            break;
#if TCG_TARGET_HAS_rot_i64
        case INDEX_op_rotl_i64:
            t0 = *tb_ptr++;
            t1 = tci_read_ri64(&tb_ptr);
            t2 = tci_read_ri64(&tb_ptr);
            tci_write_reg64(t0, (t1 << t2) | (t1 >> (64 - t2)));
            break;
        case INDEX_op_rotr_i64:
            TODO();
            t0 = *tb_ptr++;
            t1 = tci_read_ri64(&tb_ptr);
            t2 = tci_read_ri64(&tb_ptr);
            tci_write_reg64(t0, (t1 >> t2) | (t1 << (64 - t2)));
            break;
#endif
#if TCG_TARGET_HAS_deposit_i64