From patchwork Wed Oct 21 21:42:52 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 534098 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 71F68140D7F for ; Thu, 22 Oct 2015 08:46:16 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b=nd5pG/6j; dkim-atps=neutral Received: from localhost ([::1]:54546 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zp1D4-0003Ln-7x for incoming@patchwork.ozlabs.org; Wed, 21 Oct 2015 17:46:14 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58970) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zp1Ai-0000mE-JI for qemu-devel@nongnu.org; Wed, 21 Oct 2015 17:43:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Zp1Ah-0001OK-JU for qemu-devel@nongnu.org; Wed, 21 Oct 2015 17:43:48 -0400 Received: from mail-qk0-x230.google.com ([2607:f8b0:400d:c09::230]:36734) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zp1Ah-0001OG-Fx for qemu-devel@nongnu.org; Wed, 21 Oct 2015 17:43:47 -0400 Received: by qkca6 with SMTP id a6so45765403qkc.3 for ; Wed, 21 Oct 2015 14:43:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=jy4nqlKZG7J5un/DJVai1dPPSXGEkqI2J4g3KAu9E5E=; b=nd5pG/6jesjD+WH69pou5p3HYcpoJRFLkeqBAGhQzgEXqjHmxpFPMjy5HX7wQ5IdBP vW2DYOLMKWF6iAmIXQc/xmBulB9WD9VSZYVSHfPVca3kADZH7U8dOO0u4SmG4z4DnpVm KL8KxnwxvfkyVlbSlhA6W6xOALqYufXSjY/f+r0R8Di9Zw5wTkUW+nqRv5yj0pq0uJYe ebaMD6dXd7yG6GFLIHEK3HEvjKV3QNK3YMLXhEb5Cfl6e57bbul6w4bBVbti80Q7dlQs 65J/esKaxMV4TI0ETU+OcT/SySbS/dbxoHvd2wl8jiyiy19rurAnQVRlFGWGmLkc9BOw 6qXw== X-Received: by 10.55.26.170 with SMTP id l42mr14181314qkh.40.1445463827208; Wed, 21 Oct 2015 14:43:47 -0700 (PDT) Received: from bigtime.com (cpe-50-113-10-46.hawaii.res.rr.com. [50.113.10.46]) by smtp.gmail.com with ESMTPSA id n48sm4071482qgd.35.2015.10.21.14.43.44 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 21 Oct 2015 14:43:46 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Wed, 21 Oct 2015 11:42:52 -1000 Message-Id: <1445463779-5823-4-git-send-email-rth@twiddle.net> X-Mailer: git-send-email 2.4.3 In-Reply-To: <1445463779-5823-1-git-send-email-rth@twiddle.net> References: <1445463779-5823-1-git-send-email-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2607:f8b0:400d:c09::230 Cc: peter.maydell@linaro.org Subject: [Qemu-devel] [PULL 03/10] tcg/ppc: Prefer mask over andi. X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Prefer the instruction that isn't required to modify cr0. Signed-off-by: Richard Henderson --- tcg/ppc/tcg-target.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/tcg/ppc/tcg-target.c b/tcg/ppc/tcg-target.c index cee13e0..2c72565 100644 --- a/tcg/ppc/tcg-target.c +++ b/tcg/ppc/tcg-target.c @@ -700,14 +700,14 @@ static void tcg_out_andi32(TCGContext *s, TCGReg dst, TCGReg src, uint32_t c) { int mb, me; - if ((c & 0xffff) == c) { + if (mask_operand(c, &mb, &me)) { + tcg_out_rlw(s, RLWINM, dst, src, 0, mb, me); + } else if ((c & 0xffff) == c) { tcg_out32(s, ANDI | SAI(src, dst, c)); return; } else if ((c & 0xffff0000) == c) { tcg_out32(s, ANDIS | SAI(src, dst, c >> 16)); return; - } else if (mask_operand(c, &mb, &me)) { - tcg_out_rlw(s, RLWINM, dst, src, 0, mb, me); } else { tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_R0, c); tcg_out32(s, AND | SAB(src, dst, TCG_REG_R0)); @@ -719,18 +719,18 @@ static void tcg_out_andi64(TCGContext *s, TCGReg dst, TCGReg src, uint64_t c) int mb, me; assert(TCG_TARGET_REG_BITS == 64); - if ((c & 0xffff) == c) { - tcg_out32(s, ANDI | SAI(src, dst, c)); - return; - } else if ((c & 0xffff0000) == c) { - tcg_out32(s, ANDIS | SAI(src, dst, c >> 16)); - return; - } else if (mask64_operand(c, &mb, &me)) { + if (mask64_operand(c, &mb, &me)) { if (mb == 0) { tcg_out_rld(s, RLDICR, dst, src, 0, me); } else { tcg_out_rld(s, RLDICL, dst, src, 0, mb); } + } else if ((c & 0xffff) == c) { + tcg_out32(s, ANDI | SAI(src, dst, c)); + return; + } else if ((c & 0xffff0000) == c) { + tcg_out32(s, ANDIS | SAI(src, dst, c >> 16)); + return; } else { tcg_out_movi(s, TCG_TYPE_I64, TCG_REG_R0, c); tcg_out32(s, AND | SAB(src, dst, TCG_REG_R0));