From patchwork Sat Dec 7 01:52:34 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 298596 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 9AA3C2C00A6 for ; Sat, 7 Dec 2013 12:53:56 +1100 (EST) Received: from localhost ([::1]:34239 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vp75c-0002Bb-Pq for incoming@patchwork.ozlabs.org; Fri, 06 Dec 2013 20:53:52 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34972) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vp75H-0002BQ-SG for qemu-devel@nongnu.org; Fri, 06 Dec 2013 20:53:37 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Vp75C-0007k8-2S for qemu-devel@nongnu.org; Fri, 06 Dec 2013 20:53:31 -0500 Received: from mail-qc0-x235.google.com ([2607:f8b0:400d:c01::235]:47166) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vp75B-0007k2-Tg for qemu-devel@nongnu.org; Fri, 06 Dec 2013 20:53:25 -0500 Received: by mail-qc0-f181.google.com with SMTP id e9so1053555qcy.40 for ; Fri, 06 Dec 2013 17:53:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:date:message-id; bh=zftBdRu6H61BvvkDfARWM1EmIDmWIPNhpA4a39SQqgA=; b=JQ77e1hPw/b3KmK+y/B7V0V2ZXFaR72cadg1dvgBFernD1zJbhH7AhfsumIsKISKY3 BDJKsW3sS4g7pOzzzlcOcjQnwPSLA4zOgV13HO9rKeINX8BCDP5BAAemz6YQzqbHxQmN XGw21xdUHbC72+LomiqgHIvvpWoq50Vr8m1mH4Bt84gbxZjB1ApoTvuZYa0/CqpjSBkv 4WtWjehSDIz8TF6zlqVTdiNDW3vUtj/A/D0UUYn4sVjt14m+wb5SoptkwRfoZMA8Crzm YXm9etGxGY5koQHJMPh7KV6ieBa5YONxVDR8J+tJh1eJy0UPV/gvlhFQMD/Q5HR4KwlR p/Hw== X-Received: by 10.49.12.102 with SMTP id x6mr11982170qeb.5.1386381205335; Fri, 06 Dec 2013 17:53:25 -0800 (PST) Received: from pebble.com ([202.180.67.114]) by mx.google.com with ESMTPSA id g10sm2043540qaf.9.2013.12.06.17.53.22 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 06 Dec 2013 17:53:24 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sat, 7 Dec 2013 14:52:34 +1300 Message-Id: <1386381154-29682-1-git-send-email-rth@twiddle.net> X-Mailer: git-send-email 1.8.3.1 X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2607:f8b0:400d:c01::235 Cc: "Edgar E. Iglesias" Subject: [Qemu-devel] [PATCH] target-cris: Use new qemu_ld/st opcodes 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 Using the new opcodes we can reduce if/else trees to a single statement. Cc: Edgar E. Iglesias Signed-off-by: Richard Henderson --- target-cris/translate.c | 29 ++++------------------------- 1 file changed, 4 insertions(+), 25 deletions(-) diff --git a/target-cris/translate.c b/target-cris/translate.c index 5faa44c..f990d59 100644 --- a/target-cris/translate.c +++ b/target-cris/translate.c @@ -1133,7 +1133,7 @@ static void gen_load64(DisasContext *dc, TCGv_i64 dst, TCGv addr) cris_store_direct_jmp(dc); } - tcg_gen_qemu_ld64(dst, addr, mem_index); + tcg_gen_qemu_ld_i64(dst, addr, mem_index, MO_TEQ); } static void gen_load(DisasContext *dc, TCGv dst, TCGv addr, @@ -1147,23 +1147,8 @@ static void gen_load(DisasContext *dc, TCGv dst, TCGv addr, cris_store_direct_jmp(dc); } - if (size == 1) { - if (sign) { - tcg_gen_qemu_ld8s(dst, addr, mem_index); - } else { - tcg_gen_qemu_ld8u(dst, addr, mem_index); - } - } else if (size == 2) { - if (sign) { - tcg_gen_qemu_ld16s(dst, addr, mem_index); - } else { - tcg_gen_qemu_ld16u(dst, addr, mem_index); - } - } else if (size == 4) { - tcg_gen_qemu_ld32u(dst, addr, mem_index); - } else { - abort(); - } + tcg_gen_qemu_ld_tl(dst, addr, mem_index, + MO_TE + ctz32(size) + (sign ? MO_SIGN : 0)); } static void gen_store (DisasContext *dc, TCGv addr, TCGv val, @@ -1187,13 +1172,7 @@ static void gen_store (DisasContext *dc, TCGv addr, TCGv val, return; } - if (size == 1) { - tcg_gen_qemu_st8(val, addr, mem_index); - } else if (size == 2) { - tcg_gen_qemu_st16(val, addr, mem_index); - } else { - tcg_gen_qemu_st32(val, addr, mem_index); - } + tcg_gen_qemu_st_tl(val, addr, mem_index, MO_TE + ctz32(size)); if (dc->flagx_known && dc->flags_x) { cris_evaluate_flags(dc);