+2011-09-28 Mike Frysinger <vapier@gentoo.org>
+
+ * bfin-sim.c (decode_dsp32shift_0): Use STORE() for VIT_MAX insns.
+
2011-07-05 Mike Frysinger <vapier@gentoo.org>
* interp.c (sim_do_command): Delete.
out = sL;
SET_AREG (0, acc0);
- SET_DREG (dst0, REG_H_L (DREG (dst0), out));
+ STORE (DREG (dst0), REG_H_L (DREG (dst0), out));
}
else if ((sop == 2 || sop == 3) && sopcde == 9)
{
out1 = s1L;
SET_AREG (0, acc0);
- SET_DREG (dst0, REG_H_L (out1 << 16, out0));
+ STORE (DREG (dst0), REG_H_L (out1 << 16, out0));
}
else if (sop == 0 && sopcde == 10)
{
+2011-09-28 Mike Frysinger <vapier@gentoo.org>
+
+ * vit_max2.s: New tests for parallel VIT_MAX insns.
+
2011-06-18 Robin Getz <robin.getz@analog.com>
* random_0019.S, random_0020.S, random_0021.S, random_0022.S,
--- /dev/null
+# Blackfin testcase for parallel VIT_MAX (taken from PRM)
+# mach: bfin
+
+ .include "testutils.inc"
+
+ start
+
+ loadsym P0, scratch
+
+ # Do parallel VIT_MAX's with stores to same reg; don't really
+ # care what the result is of VIT_MAX as long as it doesn't
+ # clobber the memory store.
+
+ imm32 R1, 0xFFFF0000
+ imm32 R2, 0x0000FFFF
+ imm32 R0, 0xFACE
+ R0 = VIT_MAX (R1, R2) (ASL) || W[P0] = R0.L;
+ imm32 R0, 0xFACE
+ R4 = W[P0];
+ CC = R4 == R0;
+ IF !CC JUMP 1f;
+
+ imm32 R5, 0xFEEDBEEF
+ imm32 R4, 0xDEAF0000
+ imm32 R6, 0xFACE
+ R6 = VIT_MAX (R5, R4) (ASR) || W[P0] = R6.L;
+ imm32 R6, 0xFACE
+ R4 = W[P0];
+ CC = R4 == R6;
+ IF !CC JUMP 1f;
+
+ imm32 R3, 0xFFFF0000
+ imm32 R1, 0xFACE
+ R1.L = VIT_MAX (R3) (ASL) || W[P0] = R1.L;
+ imm32 R1, 0xFACE
+ R4 = W[P0];
+ CC = R4 == R1;
+ IF !CC JUMP 1f;
+
+ imm32 R2, 0x1234FADE
+ imm32 R5, 0xFACE
+ R5.L = VIT_MAX (R2) (ASR) || W[P0] = R5.L;
+ imm32 R5, 0xFACE
+ R4 = W[P0];
+ CC = R4 == R5;
+ IF !CC JUMP 1f;
+
+ pass
+1: fail
+
+ .data
+scratch:
+ .dw 0xffff