From patchwork Wed Aug 17 21:11:47 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 110361 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [140.186.70.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 78FF3B6F8C for ; Thu, 18 Aug 2011 07:12:21 +1000 (EST) Received: from localhost ([::1]:60216 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QtnPO-0006jJ-15 for incoming@patchwork.ozlabs.org; Wed, 17 Aug 2011 17:12:18 -0400 Received: from eggs.gnu.org ([140.186.70.92]:34134) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QtnP6-0006Ur-Ni for qemu-devel@nongnu.org; Wed, 17 Aug 2011 17:12:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QtnP4-0003d1-QJ for qemu-devel@nongnu.org; Wed, 17 Aug 2011 17:12:00 -0400 Received: from mail-pz0-f42.google.com ([209.85.210.42]:49843) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QtnP4-0003a7-H7 for qemu-devel@nongnu.org; Wed, 17 Aug 2011 17:11:58 -0400 Received: by mail-pz0-f42.google.com with SMTP id 37so2031357pzk.29 for ; Wed, 17 Aug 2011 14:11:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=sender:from:to:subject:date:message-id:x-mailer:in-reply-to :references; bh=D/l++PCl7a3rGzDHCx0DOXQXmSTwwzh4riqfN4psXhw=; b=tB/H9bYFU9/KpEu+mDGOe1N2qI5B5OKpLz1XUPgDRkoChTuSn+ztD5gHmQb7fhcUgi ytFG1hR01Q94Zibq4vJ7oWVtumVklzzmmM5XpdrBViXg7YXSfK3xl75GwPQ/h1uoMa8j 0Wjo1j2MdDxiIECObYe691TsvVbrNGClE184Q= Received: by 10.142.140.18 with SMTP id n18mr356529wfd.61.1313615518147; Wed, 17 Aug 2011 14:11:58 -0700 (PDT) Received: from localhost.localdomain (c-71-227-161-214.hsd1.wa.comcast.net [71.227.161.214]) by mx.google.com with ESMTPS id g4sm901648pbj.9.2011.08.17.14.11.57 (version=TLSv1/SSLv3 cipher=OTHER); Wed, 17 Aug 2011 14:11:57 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Wed, 17 Aug 2011 14:11:47 -0700 Message-Id: <1313615510-10615-4-git-send-email-rth@twiddle.net> X-Mailer: git-send-email 1.7.4.4 In-Reply-To: <1313615510-10615-1-git-send-email-rth@twiddle.net> References: <1313615510-10615-1-git-send-email-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 209.85.210.42 Subject: [Qemu-devel] [PATCH 3/6] tcg: Constant fold neg, andc, orc, eqv, nand, nor. 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 Signed-off-by: Richard Henderson --- tcg/optimize.c | 27 +++++++++++++++++++++++++++ 1 files changed, 27 insertions(+), 0 deletions(-) diff --git a/tcg/optimize.c b/tcg/optimize.c index 32f928f..7e7f2b2 100644 --- a/tcg/optimize.c +++ b/tcg/optimize.c @@ -215,6 +215,24 @@ static TCGArg do_constant_folding_2(int op, TCGArg x, TCGArg y) CASE_OP_32_64(not): return ~x; + CASE_OP_32_64(neg): + return -x; + + CASE_OP_32_64(andc): + return x & ~y; + + CASE_OP_32_64(orc): + return x | ~y; + + CASE_OP_32_64(eqv): + return ~(x ^ y); + + CASE_OP_32_64(nand): + return ~(x & y); + + CASE_OP_32_64(nor): + return ~(x | y); + CASE_OP_32_64(ext8s): return (int8_t)x; @@ -290,6 +308,9 @@ static TCGArg *tcg_constant_folding(TCGContext *s, uint16_t *tcg_opc_ptr, CASE_OP_32_64(and): CASE_OP_32_64(or): CASE_OP_32_64(xor): + CASE_OP_32_64(eqv): + CASE_OP_32_64(nand): + CASE_OP_32_64(nor): if (temps[args[1]].state == TCG_TEMP_CONST) { tmp = args[1]; args[1] = args[2]; @@ -389,6 +410,7 @@ static TCGArg *tcg_constant_folding(TCGContext *s, uint16_t *tcg_opc_ptr, args += 2; break; CASE_OP_32_64(not): + CASE_OP_32_64(neg): CASE_OP_32_64(ext8s): CASE_OP_32_64(ext8u): CASE_OP_32_64(ext16s): @@ -421,6 +443,11 @@ static TCGArg *tcg_constant_folding(TCGContext *s, uint16_t *tcg_opc_ptr, CASE_OP_32_64(sar): CASE_OP_32_64(rotl): CASE_OP_32_64(rotr): + CASE_OP_32_64(andc): + CASE_OP_32_64(orc): + CASE_OP_32_64(eqv): + CASE_OP_32_64(nand): + CASE_OP_32_64(nor): if (temps[args[1]].state == TCG_TEMP_CONST && temps[args[2]].state == TCG_TEMP_CONST) { gen_opc_buf[op_index] = op_to_movi(op);