[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 2/4] tcg/aarch64: implement byte swap operations
From: |
Richard Henderson |
Subject: |
Re: [Qemu-devel] [PATCH 2/4] tcg/aarch64: implement byte swap operations |
Date: |
Fri, 31 May 2013 12:11:48 -0700 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130514 Thunderbird/17.0.6 |
On 05/31/2013 11:01 AM, Jani Kokkonen wrote:
> +static inline void tcg_out_rev(TCGContext *s, int ext, TCGReg rd, TCGReg rm)
> +{
> + /* using REV 0x5ac00800 */
> + unsigned int base = ext ? 0xdac00c00 : 0x5ac00800;
> + tcg_out32(s, base | rm << 5 | rd);
> +}
> +
> +static inline void tcg_out_rev16(TCGContext *s, int ext, TCGReg rd, TCGReg
> rm)
> +{
> + /* using REV16 0x5ac00400 */
> + unsigned int base = ext ? 0xdac00400 : 0x5ac00400;
> + tcg_out32(s, base | rm << 5 | rd);
> +}
> +
> +static inline void tcg_out_rev32(TCGContext *s, TCGReg rd, TCGReg rm)
> +{
> + /* using REV32 0xdac00800 */
> + unsigned int base = 0xdac00800;
> + tcg_out32(s, base | rm << 5 | rd);
> +}
You don't actually need rev32.
> * bswap32_i32/i64 t0, t1
>
> 32 bit byte swap on a 32/64 bit value. With a 64 bit value, it assumes that
> the four high order bytes are set to zero.
The fact that the high order bytes are known to be zero means that you
can always use tcg_out_rev with ext=0.
case INDEX_op_bswap64_i64:
ext = 1;
/* FALLTHRU */
case INDEX_op_bswap32_i64:
case INDEX_op_bswap32_i32:
tcg_out_rev(s, ext, args[0], args[1]);
break;
case INDEX_op_bswap16_i64:
case INDEX_op_bswap16_i32:
tcg_out_rev16(s, 0, args[0], args[1]);
break;
r~
- [Qemu-devel] [PATCH 0/4] ARM aarch64 TCG tlb fast lookup, Jani Kokkonen, 2013/05/31
- [Qemu-devel] [PATCH 2/4] tcg/aarch64: implement byte swap operations, Jani Kokkonen, 2013/05/31
- Re: [Qemu-devel] [PATCH 2/4] tcg/aarch64: implement byte swap operations,
Richard Henderson <=
- [Qemu-devel] [PATCH 1/4] tcg/aarch64: more low level ops in preparation of tlb, lookup, Jani Kokkonen, 2013/05/31
- [Qemu-devel] [PATCH 4/4] tcg/aarch64: implement tlb lookup fast path, Jani Kokkonen, 2013/05/31
- [Qemu-devel] [PATCH 3/4] tcg/aarch64: implement sign/zero extend operations, Jani Kokkonen, 2013/05/31