summaryrefslogtreecommitdiff
path: root/target-arm
diff options
context:
space:
mode:
authorRiku Voipio <riku.voipio@nokia.com>2010-02-05 15:52:28 +0000
committerAurelien Jarno <aurelien@aurel32.net>2010-02-28 19:30:04 +0100
commit79b0e534c0378fa6c96b0489216b17a99782a671 (patch)
tree5e07c750384fe2b5e36464294f6db58dd210ee49 /target-arm
parent63a54736f31f9e11da6fb52319bba26e7d24f571 (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.c4
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);