From patchwork Thu Sep 10 18:18:15 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 516370 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 EA7D414030C for ; Fri, 11 Sep 2015 04:19:43 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b=lqdtnOLR; dkim-atps=neutral Received: from localhost ([::1]:51055 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Za6Ri-0001LA-35 for incoming@patchwork.ozlabs.org; Thu, 10 Sep 2015 14:19:42 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52860) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Za6R3-0000J0-4N for qemu-devel@nongnu.org; Thu, 10 Sep 2015 14:19:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Za6R2-0001nJ-3T for qemu-devel@nongnu.org; Thu, 10 Sep 2015 14:19:01 -0400 Received: from mail-qk0-x22c.google.com ([2607:f8b0:400d:c09::22c]:35288) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Za6R1-0001nE-Nd for qemu-devel@nongnu.org; Thu, 10 Sep 2015 14:19:00 -0400 Received: by qkap81 with SMTP id p81so22061936qka.2 for ; Thu, 10 Sep 2015 11:18:59 -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=G9eQn8CfbfZ7lqoPVBbW9UD+qmG5o1JAJL9fN6bfROI=; b=lqdtnOLR+GF2Mtx3BSxXpJK8MppJpRBHvPW4d+NiV0t6IgXFDo7PQqAk3nog3TbKiy XNJxcNH9CAw4DeG3QNfKGwqHCBl7ZI5KGEwahjOowPlx2/DFfLcMSa0DZGdnq0ilZjF2 usl7P3RRgjAEWnObYT3O1QTqImWg24yoHR66VJqQZAVKnzfIuzdLruvVtXTr2puViGoF OXvoSd+1x+DBJa2u5FliiFcxtob+E02WyCGMR2Z5I+zz7GdkzLCPPqTjXB1EoDFt/dp0 33HKDDXgozZIoB1TghxYDEH3S91BVYF7QFkpblaxnB6XkubnaR2mvAI5ZzdlVcF8Xnx4 J5VA== X-Received: by 10.55.209.90 with SMTP id s87mr55927709qki.26.1441909139066; Thu, 10 Sep 2015 11:18:59 -0700 (PDT) Received: from anchor.com (50-194-63-110-static.hfc.comcastbusiness.net. [50.194.63.110]) by smtp.gmail.com with ESMTPSA id v75sm6415184qgd.37.2015.09.10.11.18.58 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 10 Sep 2015 11:18:58 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Thu, 10 Sep 2015 11:18:15 -0700 Message-Id: <1441909103-24666-4-git-send-email-rth@twiddle.net> X-Mailer: git-send-email 2.4.3 In-Reply-To: <1441909103-24666-1-git-send-email-rth@twiddle.net> References: <1441909103-24666-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::22c Cc: peter.maydell@linaro.org Subject: [Qemu-devel] [PATCH v3 03/11] target-arm: Handle always condition codes within arm_test_cc 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 Handling this with TCG_COND_ALWAYS will allow these unlikely cases to be handled without special cases in the rest of the translator. The TCG optimizer ought to be able to reduce these ALWAYS conditions completely. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target-arm/translate.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/target-arm/translate.c b/target-arm/translate.c index 52452cf..3e7c367 100644 --- a/target-arm/translate.c +++ b/target-arm/translate.c @@ -804,6 +804,14 @@ void arm_test_cc(DisasCompare *cmp, int cc) tcg_gen_andc_i32(value, cpu_ZF, value); break; + case 14: /* always */ + case 15: /* always */ + /* Use the ALWAYS condition, which will fold early. + * It doesn't matter what we use for the value. */ + cond = TCG_COND_ALWAYS; + value = cpu_ZF; + goto no_invert; + default: fprintf(stderr, "Bad condition code 0x%x\n", cc); abort(); @@ -813,6 +821,7 @@ void arm_test_cc(DisasCompare *cmp, int cc) cond = tcg_invert_cond(cond); } + no_invert: cmp->cond = cond; cmp->value = value; cmp->value_global = global;