From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36108) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Y9h2R-00071G-Id for qemu-devel@nongnu.org; Fri, 09 Jan 2015 16:24:16 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Y9h2Q-0007Ex-MT for qemu-devel@nongnu.org; Fri, 09 Jan 2015 16:24:11 -0500 Received: from mail-qc0-x230.google.com ([2607:f8b0:400d:c01::230]:58344) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Y9h2Q-0007Et-JB for qemu-devel@nongnu.org; Fri, 09 Jan 2015 16:24:10 -0500 Received: by mail-qc0-f176.google.com with SMTP id i17so11282907qcy.7 for ; Fri, 09 Jan 2015 13:24:10 -0800 (PST) Sender: Richard Henderson From: Richard Henderson Date: Fri, 9 Jan 2015 13:23:19 -0800 Message-Id: <1420838600-22369-10-git-send-email-rth@twiddle.net> In-Reply-To: <1420838600-22369-1-git-send-email-rth@twiddle.net> References: <1420838600-22369-1-git-send-email-rth@twiddle.net> Subject: [Qemu-devel] [PULL 09/10] tcg: Optimize muls2_i32 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org Signed-off-by: Richard Henderson --- tcg/optimize.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tcg/optimize.c b/tcg/optimize.c index 067917c..c674fe2 100644 --- a/tcg/optimize.c +++ b/tcg/optimize.c @@ -1160,15 +1160,22 @@ static void tcg_constant_folding(TCGContext *s) goto do_default; case INDEX_op_mulu2_i32: + case INDEX_op_muls2_i32: if (temps[args[2]].state == TCG_TEMP_CONST && temps[args[3]].state == TCG_TEMP_CONST) { uint32_t a = temps[args[2]].val; uint32_t b = temps[args[3]].val; - uint64_t r = (uint64_t)a * b; + uint64_t r; TCGArg rl, rh; TCGOp *op2 = insert_op_before(s, op, INDEX_op_movi_i32, 2); TCGArg *args2 = &s->gen_opparam_buf[op2->args]; + if (opc == INDEX_op_mulu2_i32) { + r = (uint64_t)a * b; + } else { + r = (uint64_t)(int32_t)a * (int32_t)b; + } + rl = args[0]; rh = args[1]; tcg_opt_gen_movi(s, op, args, opc, rl, (uint32_t)r); -- 2.1.0