From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36523) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W8FjT-0006Z1-Ph for qemu-devel@nongnu.org; Tue, 28 Jan 2014 15:58:13 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1W8FjO-0004h3-0M for qemu-devel@nongnu.org; Tue, 28 Jan 2014 15:58:07 -0500 Received: from mail-qc0-x22a.google.com ([2607:f8b0:400d:c01::22a]:38493) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W8FjN-0004gu-Pq for qemu-devel@nongnu.org; Tue, 28 Jan 2014 15:58:01 -0500 Received: by mail-qc0-f170.google.com with SMTP id e9so1465080qcy.29 for ; Tue, 28 Jan 2014 12:58:00 -0800 (PST) Sender: Richard Henderson Message-ID: <52E819D2.4090004@twiddle.net> Date: Tue, 28 Jan 2014 12:57:54 -0800 From: Richard Henderson MIME-Version: 1.0 References: <1390764312-21789-1-git-send-email-peter.maydell@linaro.org> <1390764312-21789-21-git-send-email-peter.maydell@linaro.org> In-Reply-To: <1390764312-21789-21-git-send-email-peter.maydell@linaro.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 20/21] target-arm: A64: Add 2-reg-misc REV* instructions List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Peter Maydell , qemu-devel@nongnu.org Cc: Peter Crosthwaite , patches@linaro.org, Michael Matz , Alexander Graf , Claudio Fontana , Dirk Mueller , Will Newton , Laurent Desnogues , =?UTF-8?B?QWxleCBCZW5uw6ll?= , kvmarm@lists.cs.columbia.edu, Christoffer Dall On 01/26/2014 11:25 AM, Peter Maydell wrote: > + int elements = dsize / esize; > + int i; > + TCGv_i64 tcg_rd_hi, tcg_rd, tcg_rn; > + > + if (opsz >= 3) { > + unallocated_encoding(s); > + return; > + } > + > + tcg_rn = tcg_temp_new_i64(); > + tcg_rd = tcg_const_i64(0); > + tcg_rd_hi = tcg_const_i64(0); > + > + for (i = 0; i < elements; i++) { > + int e_rev = (i & 0xf) ^ revmask; > + int off = e_rev * esize; > + read_vec_element(s, tcg_rn, rn, i, size); > + if (off >= 64) { > + tcg_gen_deposit_i64(tcg_rd_hi, tcg_rd_hi, tcg_rn, off - 64, esize); > + } else { > + tcg_gen_deposit_i64(tcg_rd, tcg_rd, tcg_rn, off, esize); > + } > + } > + write_vec_element(s, tcg_rd, rd, 0, MO_64); > + write_vec_element(s, tcg_rd_hi, rd, 1, MO_64); Surely a special case for esize == 8 is in order, since that's bswap. Otherwise, Reviewed-by: Richard Henderson r~