From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37493) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gWQcP-0002mN-JB for qemu-devel@nongnu.org; Mon, 10 Dec 2018 13:49:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gWQcM-0000pJ-8B for qemu-devel@nongnu.org; Mon, 10 Dec 2018 13:49:25 -0500 Received: from mail-ot1-x343.google.com ([2607:f8b0:4864:20::343]:45700) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gWQcL-0000nN-Bh for qemu-devel@nongnu.org; Mon, 10 Dec 2018 13:49:22 -0500 Received: by mail-ot1-x343.google.com with SMTP id 32so11402941ota.12 for ; Mon, 10 Dec 2018 10:49:19 -0800 (PST) References: <20181207085635.4291-1-mark.cave-ayland@ilande.co.uk> <20181207085635.4291-3-mark.cave-ayland@ilande.co.uk> From: Richard Henderson Message-ID: Date: Mon, 10 Dec 2018 12:49:15 -0600 MIME-Version: 1.0 In-Reply-To: <20181207085635.4291-3-mark.cave-ayland@ilande.co.uk> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [RFC PATCH 2/6] target/ppc: introduce get_avr64() and set_avr64() helpers for VMX register access List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Mark Cave-Ayland , qemu-devel@nongnu.org, qemu-ppc@nongnu.org, david@gibson.dropbear.id.au On 12/7/18 2:56 AM, Mark Cave-Ayland wrote: > + avr = tcg_temp_new_i64(); \ > EA = tcg_temp_new(); \ > gen_addr_reg_index(ctx, EA); \ > tcg_gen_andi_tl(EA, EA, ~0xf); \ > /* We only need to swap high and low halves. gen_qemu_ld64_i64 does \ > necessary 64-bit byteswap already. */ \ > if (ctx->le_mode) { \ > - gen_qemu_ld64_i64(ctx, cpu_avrl[rD(ctx->opcode)], EA); \ > + gen_qemu_ld64_i64(ctx, avr, EA); \ > + set_avr64(rD(ctx->opcode), avr, false); \ > tcg_gen_addi_tl(EA, EA, 8); \ > - gen_qemu_ld64_i64(ctx, cpu_avrh[rD(ctx->opcode)], EA); \ > + gen_qemu_ld64_i64(ctx, avr, EA); \ > + set_avr64(rD(ctx->opcode), avr, true); An accurate conversion, but I'm going to call this an existing bug: The writeback to both avr{l,h} should be delayed until all exceptions have been raised. Thus you should perform the two gen_qemu_ld64_i64 into two temporaries and only then write them both back via set_avr64. Otherwise, Reviewed-by: Richard Henderson r~