From patchwork Mon Apr 29 15:08:23 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 240395 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 17CF32C009D for ; Tue, 30 Apr 2013 01:11:05 +1000 (EST) Received: from localhost ([::1]:45030 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UWpjK-0003aj-E6 for incoming@patchwork.ozlabs.org; Mon, 29 Apr 2013 11:11:02 -0400 Received: from eggs.gnu.org ([208.118.235.92]:53790) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UWphT-0001JS-3n for qemu-devel@nongnu.org; Mon, 29 Apr 2013 11:09:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UWphM-00084u-8O for qemu-devel@nongnu.org; Mon, 29 Apr 2013 11:09:07 -0400 Received: from mail-wi0-x230.google.com ([2a00:1450:400c:c05::230]:49453) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UWphM-00084Z-1t for qemu-devel@nongnu.org; Mon, 29 Apr 2013 11:09:00 -0400 Received: by mail-wi0-f176.google.com with SMTP id hi8so619517wib.9 for ; Mon, 29 Apr 2013 08:08:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:sender:from:to:cc:subject:date:message-id:x-mailer :in-reply-to:references; bh=FD6LLhOpsZfMAARN9rVPGUQcQ5yT3rreU244DEiB9kg=; b=FtRHyjSdz53vEQArJ/0TenQRYk3d8F+a2sWzbdrRAJaNbL9xZaqiJSdsqQo5zmP7gj llyYR15pDwbCEnBJEP9+++XFM3NZtaiUUL5Uwv7MbceUcp6janl/BM9O6IdpvfOlyKYE QQOLew/vxhyy8cnI6HTgZhKi5l4lZ3pa9CPThbl4eDimkJ8uOIxAX7pJ1bwh6CWYyyRV Waehqyeykq1pRDubLCaFbZ1LCCpmmLTcRIASggTS2nNsXjbwqkD3p2zMeKzqqcFRjo4G RcpJGdjw7iprnImDCcNNXXKObsBiQnK3EPg5OrJ5ZyVpbFnsK+qQ2dWwV2t4aMKT8qNu B4yQ== X-Received: by 10.180.24.69 with SMTP id s5mr18510337wif.34.1367248139370; Mon, 29 Apr 2013 08:08:59 -0700 (PDT) Received: from fremont.twiddle.net (host217-43-57-145.range217-43.btcentralplus.com. [217.43.57.145]) by mx.google.com with ESMTPSA id e8sm15113079wic.5.2013.04.29.08.08.53 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Mon, 29 Apr 2013 08:08:58 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Mon, 29 Apr 2013 08:08:23 -0700 Message-Id: <1367248103-1492-3-git-send-email-rth@twiddle.net> X-Mailer: git-send-email 1.8.1.4 In-Reply-To: <1367248103-1492-1-git-send-email-rth@twiddle.net> References: <1367248103-1492-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: 2a00:1450:400c:c05::230 Cc: aliguori@us.ibm.com, aurelien@aurel32.net Subject: [Qemu-devel] [PATCH for-1.5 2/2] tcg-arm: Use movi32 in exit_tb 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 Avoid the mini constant pool for armv7, and avoid replicating the test for pre-v7. Signed-off-by: Richard Henderson --- tcg/arm/tcg-target.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/tcg/arm/tcg-target.c b/tcg/arm/tcg-target.c index 12edad4..3d43412 100644 --- a/tcg/arm/tcg-target.c +++ b/tcg/arm/tcg-target.c @@ -1611,17 +1611,15 @@ static inline void tcg_out_op(TCGContext *s, TCGOpcode opc, switch (opc) { case INDEX_op_exit_tb: - { + if (use_armv7_instructions || check_fit_imm(args[0])) { + tcg_out_movi32(s, COND_AL, TCG_REG_R0, args[0]); + tcg_out_goto(s, COND_AL, (tcg_target_ulong) tb_ret_addr); + } else { uint8_t *ld_ptr = s->code_ptr; - if (args[0] >> 8) - tcg_out_ld32_12(s, COND_AL, TCG_REG_R0, TCG_REG_PC, 0); - else - tcg_out_dat_imm(s, COND_AL, ARITH_MOV, TCG_REG_R0, 0, args[0]); + tcg_out_ld32_12(s, COND_AL, TCG_REG_R0, TCG_REG_PC, 0); tcg_out_goto(s, COND_AL, (tcg_target_ulong) tb_ret_addr); - if (args[0] >> 8) { - *ld_ptr = (uint8_t) (s->code_ptr - ld_ptr) - 8; - tcg_out32(s, args[0]); - } + *ld_ptr = (uint8_t) (s->code_ptr - ld_ptr) - 8; + tcg_out32(s, args[0]); } break; case INDEX_op_goto_tb: