|
From: | Richard Henderson |
Subject: | Re: [Qemu-ppc] [Qemu-devel] [PATCH 5/6] target-ppc: add lxvb16x and lxvh8x |
Date: | Wed, 10 Aug 2016 15:42:53 +0530 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 |
On 08/10/2016 02:51 PM, Nikunj A Dadhania wrote:
I can fix the BE case using following but not sure if that will be correct ! tcg_gen_qemu_ld_i64(xth, EA, ctx->mem_idx, MO_Q); gen_helper_bswap32x2(xth, xth); tcg_gen_addi_tl(EA, EA, 8); tcg_gen_qemu_ld_i64(xtl, EA, ctx->mem_idx, MO_Q); gen_helper_bswap32x2(xtl, xtl);
This cannot be correct, because it assumes a host-dependent byte ordering. You should be able to see different results depending on a BE or LE host.
__vector uint32_t vrt32; uint32_t rb32[4] = {0x00010203, 0x20212223, 0x30313233, 0x40414243}; asm("lxvw4x %x0, 0, %1 \n\t" \ : "=ws"(vrt32) : "r"(&rb32)); printf("VRT32 = "); vec_put_u32(vrt32); Result On LE: VRT32 = 40414243 30313233 20212223 00010203 Result On BE: VRT32 = 03020100 23222120 33323130 43424140
Did you really recompile the test program for BE and LE, or did you just use a different command-line switch to qemu with the same executable image? I can't see how you could possibly get these results for BE.
r~
[Prev in Thread] | Current Thread | [Next in Thread] |