From patchwork Wed Jun 26 20:52:06 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 254865 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)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id CC06B2C008E for ; Thu, 27 Jun 2013 06:56:57 +1000 (EST) Received: from localhost ([::1]:53227 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Urwlr-0004bt-ER for incoming@patchwork.ozlabs.org; Wed, 26 Jun 2013 16:56:55 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35280) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Urwhb-000771-As for qemu-devel@nongnu.org; Wed, 26 Jun 2013 16:52:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UrwhY-0000mq-So for qemu-devel@nongnu.org; Wed, 26 Jun 2013 16:52:31 -0400 Received: from mail-pb0-x22f.google.com ([2607:f8b0:400e:c01::22f]:48536) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UrwhY-0000mc-Mm for qemu-devel@nongnu.org; Wed, 26 Jun 2013 16:52:28 -0400 Received: by mail-pb0-f47.google.com with SMTP id rr13so14613554pbb.6 for ; Wed, 26 Jun 2013 13:52:27 -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:x-mailer:in-reply-to :references; bh=SlBwKIBUurfhqS6DyEgRDnJw3z2LWYPNXL/HQY4Khz8=; b=voIGgaHfUUsqc9SuoyVTZmsMbNKYX/sB3sp7Y3EiyWX37FUoato54AHCuv32/x+2zi S6Bss7kmK4MFsLjXaJXPE85qJnrkxfqdc2o49zm49wjylZVFERN0JMP3FFgM0+tFOxVz lsVDbAD3Nu8nAV8ecqlOMPhe53/IwTkZQbm43djHbNKQ5jpprRRr/E/lXKebUgbd3oUN M5da8db+f/3NDwr8E/wjI65U+Nuy3JsDZKe64IXP3zLEuY9J3QcxK7RTPmtOVvSZH5FH PLbN+nL/3CCO5WQTtwFJWrJZUIbax0Y3wqV99C9HXZKU6kRdU9p/h8jOI6UEaWOny8IB 9s8Q== X-Received: by 10.68.143.73 with SMTP id sc9mr2574799pbb.2.1372279947793; Wed, 26 Jun 2013 13:52:27 -0700 (PDT) Received: from fremont.twiddle.net (50-194-63-110-static.hfc.comcastbusiness.net. [50.194.63.110]) by mx.google.com with ESMTPSA id ix3sm29805715pbc.37.2013.06.26.13.52.25 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Wed, 26 Jun 2013 13:52:26 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Wed, 26 Jun 2013 13:52:06 -0700 Message-Id: <1372279929-28836-7-git-send-email-rth@twiddle.net> X-Mailer: git-send-email 1.8.1.4 In-Reply-To: <1372279929-28836-1-git-send-email-rth@twiddle.net> References: <1372279929-28836-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:400e:c01::22f Cc: blauwirbel@gmail.com, claudio.fontana@huawei.com, aurelien@aurel32.net Subject: [Qemu-devel] [PATCH v2 6/9] tcg: Simplify logic using TCG_OPF_NOT_PRESENT 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 Expand the definition of "not present" to include "should not be present". This means we can simplify the logic surrounding the generic tcg opcodes for which the host backend ought not be providing definitions. Signed-off-by: Richard Henderson --- tcg/tcg-opc.h | 26 +++++++++++++++----------- tcg/tcg.c | 4 +--- tcg/tcg.h | 3 ++- 3 files changed, 18 insertions(+), 15 deletions(-) diff --git a/tcg/tcg-opc.h b/tcg/tcg-opc.h index c94e255..a8af5b9 100644 --- a/tcg/tcg-opc.h +++ b/tcg/tcg-opc.h @@ -27,17 +27,21 @@ */ /* predefined ops */ -DEF(end, 0, 0, 0, 0) /* must be kept first */ -DEF(nop, 0, 0, 0, 0) -DEF(nop1, 0, 0, 1, 0) -DEF(nop2, 0, 0, 2, 0) -DEF(nop3, 0, 0, 3, 0) -DEF(nopn, 0, 0, 1, 0) /* variable number of parameters */ +DEF(end, 0, 0, 0, TCG_OPF_NOT_PRESENT) /* must be kept first */ +DEF(nop, 0, 0, 0, TCG_OPF_NOT_PRESENT) +DEF(nop1, 0, 0, 1, TCG_OPF_NOT_PRESENT) +DEF(nop2, 0, 0, 2, TCG_OPF_NOT_PRESENT) +DEF(nop3, 0, 0, 3, TCG_OPF_NOT_PRESENT) -DEF(discard, 1, 0, 0, 0) +/* variable number of parameters */ +DEF(nopn, 0, 0, 1, TCG_OPF_NOT_PRESENT) + +DEF(discard, 1, 0, 0, TCG_OPF_NOT_PRESENT) +DEF(set_label, 0, 0, 1, TCG_OPF_BB_END | TCG_OPF_NOT_PRESENT) + +/* variable number of parameters */ +DEF(call, 0, 1, 2, TCG_OPF_CALL_CLOBBER) -DEF(set_label, 0, 0, 1, TCG_OPF_BB_END) -DEF(call, 0, 1, 2, TCG_OPF_CALL_CLOBBER) /* variable number of parameters */ DEF(br, 0, 0, 1, TCG_OPF_BB_END) #define IMPL(X) (__builtin_constant_p(X) && !(X) ? TCG_OPF_NOT_PRESENT : 0) @@ -166,9 +170,9 @@ DEF(muls2_i64, 2, 2, 0, IMPL64 | IMPL(TCG_TARGET_HAS_muls2_i64)) /* QEMU specific */ #if TARGET_LONG_BITS > TCG_TARGET_REG_BITS -DEF(debug_insn_start, 0, 0, 2, 0) +DEF(debug_insn_start, 0, 0, 2, TCG_OPF_NOT_PRESENT) #else -DEF(debug_insn_start, 0, 0, 1, 0) +DEF(debug_insn_start, 0, 0, 1, TCG_OPF_NOT_PRESENT) #endif DEF(exit_tb, 0, 0, 1, TCG_OPF_BB_END) DEF(goto_tb, 0, 0, 1, TCG_OPF_BB_END) diff --git a/tcg/tcg.c b/tcg/tcg.c index 1d8099c..c7e6567 100644 --- a/tcg/tcg.c +++ b/tcg/tcg.c @@ -1160,9 +1160,7 @@ void tcg_add_target_add_op_defs(const TCGTargetOpDef *tdefs) i = 0; for (op = 0; op < ARRAY_SIZE(tcg_op_defs); op++) { const TCGOpDef *def = &tcg_op_defs[op]; - if (op < INDEX_op_call - || op == INDEX_op_debug_insn_start - || (def->flags & TCG_OPF_NOT_PRESENT)) { + if (def->flags & TCG_OPF_NOT_PRESENT) { /* Wrong entry in op definitions? */ if (def->used) { fprintf(stderr, "Invalid op definition for %s\n", def->name); diff --git a/tcg/tcg.h b/tcg/tcg.h index 28ca1bd..f3f9889 100644 --- a/tcg/tcg.h +++ b/tcg/tcg.h @@ -596,7 +596,8 @@ enum { TCG_OPF_SIDE_EFFECTS = 0x04, /* Instruction operands are 64-bits (otherwise 32-bits). */ TCG_OPF_64BIT = 0x08, - /* Instruction is optional and not implemented by the host. */ + /* Instruction is optional and not implemented by the host, or insn + is generic and should not be implemened by the host. */ TCG_OPF_NOT_PRESENT = 0x10, };