diff options
author | Riku Voipio <riku.voipio@nokia.com> | 2010-02-05 15:52:28 +0000 |
---|---|---|
committer | Aurelien Jarno <aurelien@aurel32.net> | 2010-02-28 19:30:04 +0100 |
commit | 79b0e534c0378fa6c96b0489216b17a99782a671 (patch) | |
tree | 5e07c750384fe2b5e36464294f6db58dd210ee49 /target-arm | |
parent | 63a54736f31f9e11da6fb52319bba26e7d24f571 (diff) |
target-arm: neon - fix VRADDHN/VRSUBHN vs VADDHN/VSUBHN
The rounding/truncating options were inverted. truncating
was done when rounding was meant and vice verse.
Signed-off-by: Riku Voipio <riku.voipio@nokia.com>
Acked-by: Laurent Desnogues <laurent.desnogues@gmail.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
Diffstat (limited to 'target-arm')
-rw-r--r-- | target-arm/translate.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/target-arm/translate.c b/target-arm/translate.c index ac04996a6..cac157d2c 100644 --- a/target-arm/translate.c +++ b/target-arm/translate.c @@ -5010,7 +5010,7 @@ static int disas_neon_data_insn(CPUState * env, DisasContext *s, uint32_t insn) case 0: case 1: case 4: /* VADDL, VADDW, VADDHN, VRADDHN */ gen_neon_addl(size); break; - case 2: case 3: case 6: /* VSUBL, VSUBW, VSUBHL, VRSUBHL */ + case 2: case 3: case 6: /* VSUBL, VSUBW, VSUBHN, VRSUBHN */ gen_neon_subl(size); break; case 5: case 7: /* VABAL, VABDL */ @@ -5079,7 +5079,7 @@ static int disas_neon_data_insn(CPUState * env, DisasContext *s, uint32_t insn) } else if (op == 4 || op == 6) { /* Narrowing operation. */ tmp = new_tmp(); - if (u) { + if (!u) { switch (size) { case 0: gen_helper_neon_narrow_high_u8(tmp, cpu_V0); |