From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35266) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d9FsH-0007I9-G9 for qemu-devel@nongnu.org; Fri, 12 May 2017 15:05:14 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d9FsG-0005DI-MC for qemu-devel@nongnu.org; Fri, 12 May 2017 15:05:13 -0400 Sender: Richard Henderson References: <20170512033543.6789-1-f4bug@amsat.org> <20170512033543.6789-3-f4bug@amsat.org> <20170512182132.jdw4g2pd5gvf2dti@aurel32.net> From: Richard Henderson Message-ID: Date: Fri, 12 May 2017 12:05:00 -0700 MIME-Version: 1.0 In-Reply-To: <20170512182132.jdw4g2pd5gvf2dti@aurel32.net> Content-Type: text/plain; charset=iso-8859-15; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v3 2/5] target/arm: optimize rev16() using extract op List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Aurelien Jarno Cc: =?UTF-8?Q?Philippe_Mathieu-Daud=c3=a9?= , qemu-devel@nongnu.org, Peter Maydell , qemu-arm@nongnu.org On 05/12/2017 11:21 AM, Aurelien Jarno wrote: > + uint64_t mask1 = sf ? 0x00ff00ff00ff00ffull : 0x00ff00ff; > + uint64_t mask2 = sf ? 0xff00ff00ff00ff00ull : 0xff00ff00; > + > + tcg_gen_shri_i64(tcg_tmp, tcg_rn, 8); > + tcg_gen_andi_i64(tcg_tmp, tcg_tmp, mask1); > + tcg_gen_shli_i64(tcg_rd, tcg_rn, 8); > + tcg_gen_andi_i64(tcg_rd, tcg_rd, mask2); It would probably be better to use a single mask, since they're not free to instantiate in a register. So e.g. TCGv mask = tcg_const_i64(sf ? 0x00ff00ff00ff00ffull : 0x00ff00ff); tcg_gen_shri_i64(tcg_tmp, tcg_rn, 8); tcg_gen_and_i64(tcg_rd, tcg_rn, mask); tcg_gen_and_i64(tcg_tmp, tcg_tmp, mask); tcg_gen_shli_i64(tcg_rd, tcg_rd, 8); r~