[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 41/48] target-arm: fix neon vld1 single element to a
From: |
Riku Voipio |
Subject: |
[Qemu-devel] [PATCH 41/48] target-arm: fix neon vld1 single element to all lanes |
Date: |
Fri, 26 Mar 2010 16:07:01 +0000 |
From: Juha Riihimäki <address@hidden>
Signed-Off-By: Riku Voipio <address@hidden>
Signed-off-by: Juha Riihimäki <address@hidden>
---
target-arm/translate.c | 13 +++++++++++--
1 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/target-arm/translate.c b/target-arm/translate.c
index 964baf5..de2ea92 100644
--- a/target-arm/translate.c
+++ b/target-arm/translate.c
@@ -3798,7 +3798,11 @@ static int disas_neon_ls_insn(CPUState * env,
DisasContext *s, uint32_t insn)
}
size = (insn >> 6) & 3;
nregs = ((insn >> 8) & 3) + 1;
- stride = (insn & (1 << 5)) ? 2 : 1;
+ if (nregs == 1) {
+ stride = 0;
+ } else {
+ stride = (insn & (1 << 5)) ? 2 : 1;
+ }
load_reg_var(s, addr, rn);
for (reg = 0; reg < nregs; reg++) {
switch (size) {
@@ -3819,7 +3823,12 @@ static int disas_neon_ls_insn(CPUState * env,
DisasContext *s, uint32_t insn)
default: /* Avoid compiler warnings. */
abort();
}
- tcg_gen_addi_i32(addr, addr, 1 << size);
+ if (stride && reg < nregs - 1) {
+ tcg_gen_addi_i32(addr, addr, 1 << size);
+ } else if (!stride) {
+ tcg_gen_st_i32(tmp, cpu_env, neon_reg_offset(rd + 1, 0));
+ tcg_gen_st_i32(tmp, cpu_env, neon_reg_offset(rd + 1, 1));
+ }
tmp2 = new_tmp();
tcg_gen_mov_i32(tmp2, tmp);
neon_store_reg(rd, 0, tmp2);
--
1.6.5
- Re: [Qemu-devel] [PATCH 38/48] target-arm: fix neon vrshl instruction, (continued)
- [Qemu-devel] [PATCH 40/48] target-arm: fix neon v(r)sra instructions, Riku Voipio, 2010/03/26
- [Qemu-devel] [PATCH 39/48] target-arm: fix neon vrshr instruction, Riku Voipio, 2010/03/26
- [Qemu-devel] [PATCH 25/48] blizzard: fix for non-32bpp host displays, Riku Voipio, 2010/03/26
- [Qemu-devel] [PATCH 09/48] console change headers, Riku Voipio, 2010/03/26
- [Qemu-devel] [PATCH 48/48] usb: fix -usbdevice option handling with no parameters, Riku Voipio, 2010/03/26
- [Qemu-devel] [PATCH 46/48] target-arm: fix neon vrsqrts instruction, Riku Voipio, 2010/03/26
- [Qemu-devel] [PATCH 45/48] target-arm: fix neon vcvt fixed-point, Riku Voipio, 2010/03/26
- [Qemu-devel] [PATCH 43/48] target-arm: fix neon vq(r)dmulh.s16 instructions, Riku Voipio, 2010/03/26
- [Qemu-devel] [PATCH 42/48] target-arm: fix signed narrow 64->32 operation, Riku Voipio, 2010/03/26
- [Qemu-devel] [PATCH 41/48] target-arm: fix neon vld1 single element to all lanes,
Riku Voipio <=
- [Qemu-devel] [PATCH 35/48] target-arm: fix neon vmon/vmvn with modified immediate, Riku Voipio, 2010/03/26
- [Qemu-devel] [PATCH 32/48] Add beagleboard and n900 machine definitions, Riku Voipio, 2010/03/26
- [Qemu-devel] [PATCH 12/48] cocoa frontend changes, Riku Voipio, 2010/03/26
- [Qemu-devel] [PATCH 22/48] License update, Riku Voipio, 2010/03/26
- [Qemu-devel] [PATCH 44/48] target-arm: fix neon v(q)(r)shrn instructions, Riku Voipio, 2010/03/26
- [Qemu-devel] [PATCH 21/48] NAND emulation overhaul, Riku Voipio, 2010/03/26
- [Qemu-devel] [PATCH 04/48] audio: fix integer overflow expression, Riku Voipio, 2010/03/26
- [Qemu-devel] [PATCH 33/48] Add OpenGL ES accelerator support, Riku Voipio, 2010/03/26