From patchwork Tue Feb 23 21:11:54 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 587083 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 08C2814076E for ; Wed, 24 Feb 2016 08:22:55 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b=Z6FrOyiW; dkim-atps=neutral Received: from localhost ([::1]:60013 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aYKPz-0006dJ-RI for incoming@patchwork.ozlabs.org; Tue, 23 Feb 2016 16:22:51 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51002) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aYKGC-0006Gv-5J for qemu-devel@nongnu.org; Tue, 23 Feb 2016 16:12:45 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aYKG6-0001Ln-5E for qemu-devel@nongnu.org; Tue, 23 Feb 2016 16:12:44 -0500 Received: from mail-qg0-x22b.google.com ([2607:f8b0:400d:c04::22b]:33489) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aYKG5-0001Lf-98 for qemu-devel@nongnu.org; Tue, 23 Feb 2016 16:12:38 -0500 Received: by mail-qg0-x22b.google.com with SMTP id b35so146959234qge.0 for ; Tue, 23 Feb 2016 13:12:37 -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:in-reply-to:references; bh=P+gAjkexUYpmHAnuYjJGeEIQzvsOJk/PpsyN/Bfbnz4=; b=Z6FrOyiWQOMGPVF0gZGmdE1LLC+Kjock0bemZdUfBYlALR6+hjHi1J7MIDUITCG/fk vZOXCM4UDRIt3jwDOBI1A5PYzo57tpRXI+yXoZZcZjAC6QPCeo0JSv5Ta2Imr5k7zLi8 GNrO+lkH+UoN668sjB7m5Hd7XOJLiPbLNqsPlFYjXqINCTYpzXaiYXHU4LLEjG9agTyt jnI5txMBdwZbQ57qh42lyAMj3kK4mOpc5RMfYvDGhdMl0x28g37mflzDXW4DG8sEKcrg UQkwwVwQOmF6r+BibCcdWwITBOE74moVuS2yPBHFR7kV5OunFD2xiPF8AjlXTpLJhKOG 6XGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=P+gAjkexUYpmHAnuYjJGeEIQzvsOJk/PpsyN/Bfbnz4=; b=LYUGPjNXHywLX+YFv+CLGzHwroGkrbnVAd08zQwrKhFLOSh+AGuJJ7dXvy1S+na3CK D2tLVNUoUkeE1LIJo9r8eOu8wYuLOC0Szv8GoE1P62igFOMOpIZ9vDXyyFIYkj9ul68u epgD7PqDQn76kkrwF7GmImz+d9WHPVMbAWhT2379ols3RR1m8VwRqrQFZ1YbQDVH1/RP WurkBBMsgN6Fw9ICO6xjNfE5NiHcC6awfdo2vQXpML50HoxUiG9J8I5hRZ4b9i9WrO1M ekz/mn32hXNZUkViwIcrn76JHekj41N48P7gBWa54S3wFLwozo0aazpz2nNT7EcflR75 Jqvw== X-Gm-Message-State: AG10YOQnHTXGm6FaXE2SAgSgGCOXs4U+jBiNhOCiSdBeq3ifIFRrdEuCVMUEsiZvMHY0ig== X-Received: by 10.140.157.214 with SMTP id d205mr47401991qhd.3.1456261956965; Tue, 23 Feb 2016 13:12:36 -0800 (PST) Received: from anchor.com (50-194-63-110-static.hfc.comcastbusiness.net. [50.194.63.110]) by smtp.gmail.com with ESMTPSA id 200sm12775546qhm.47.2016.02.23.13.12.35 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 23 Feb 2016 13:12:36 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 23 Feb 2016 13:11:54 -0800 Message-Id: <1456261920-29900-19-git-send-email-rth@twiddle.net> X-Mailer: git-send-email 2.5.0 In-Reply-To: <1456261920-29900-1-git-send-email-rth@twiddle.net> References: <1456261920-29900-1-git-send-email-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400d:c04::22b Cc: mark.cave-ayland@ilande.co.uk, atar4qemu@gmail.com Subject: [Qemu-devel] [PATCH v2 18/24] target-sparc: Directly implement easy ldf/stf asis 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 --- target-sparc/translate.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/target-sparc/translate.c b/target-sparc/translate.c index a023754..0621c06 100644 --- a/target-sparc/translate.c +++ b/target-sparc/translate.c @@ -2268,10 +2268,32 @@ static void gen_ldf_asi(DisasContext *dc, TCGv addr, int insn, int size, int rd) { DisasASI da = get_asi(dc, insn, (size == 4 ? MO_TEUL : MO_TEQ)); + TCGv_i32 d32; switch (da.type) { case GET_ASI_EXCP: break; + + case GET_ASI_DIRECT: + switch (size) { + case 4: + d32 = gen_dest_fpr_F(dc); + tcg_gen_qemu_ld_i32(d32, addr, da.mem_idx, da.memop); + gen_store_fpr_F(dc, rd, d32); + break; + case 8: + tcg_gen_qemu_ld_i64(cpu_fpr[rd / 2], addr, da.mem_idx, da.memop); + break; + case 16: + tcg_gen_qemu_ld_i64(cpu_fpr[rd / 2], addr, da.mem_idx, da.memop); + tcg_gen_addi_tl(addr, addr, 8); + tcg_gen_qemu_ld_i64(cpu_fpr[rd/2+1], addr, da.mem_idx, da.memop); + break; + default: + g_assert_not_reached(); + } + break; + default: { TCGv_i32 r_asi = tcg_const_i32(da.asi); @@ -2292,10 +2314,31 @@ static void gen_stf_asi(DisasContext *dc, TCGv addr, int insn, int size, int rd) { DisasASI da = get_asi(dc, insn, (size == 4 ? MO_TEUL : MO_TEQ)); + TCGv_i32 d32; switch (da.type) { case GET_ASI_EXCP: break; + + case GET_ASI_DIRECT: + switch (size) { + case 4: + d32 = gen_load_fpr_F(dc, rd); + tcg_gen_qemu_st_i32(d32, addr, da.mem_idx, da.memop); + break; + case 8: + tcg_gen_qemu_st_i64(cpu_fpr[rd / 2], addr, da.mem_idx, da.memop); + break; + case 16: + tcg_gen_qemu_st_i64(cpu_fpr[rd / 2], addr, da.mem_idx, da.memop); + tcg_gen_addi_tl(addr, addr, 8); + tcg_gen_qemu_st_i64(cpu_fpr[rd/2+1], addr, da.mem_idx, da.memop); + break; + default: + g_assert_not_reached(); + } + break; + default: { TCGv_i32 r_asi = tcg_const_i32(da.asi);