xref: /netbsd-src/external/gpl3/gdb/dist/sim/testsuite/bfin/abs.S (revision 4b169a6ba595ae283ca507b26b15fdff40495b1c)
1*4b169a6bSchristos# Blackfin testcase for ABS instruction
2*4b169a6bSchristos# mach: bfin
3*4b169a6bSchristos
4*4b169a6bSchristos#include "test.h"
5*4b169a6bSchristos
6*4b169a6bSchristos	.include "testutils.inc"
7*4b169a6bSchristos
8*4b169a6bSchristos	start
9*4b169a6bSchristos
10*4b169a6bSchristos	.global _test
11*4b169a6bSchristos_test:
12*4b169a6bSchristos	R6 = ASTAT;
13*4b169a6bSchristos	R0.H = 0x1234;
14*4b169a6bSchristos	R0.L = 0x5678;
15*4b169a6bSchristos	R1 = ABS R0;
16*4b169a6bSchristos	R7 = ASTAT;
17*4b169a6bSchristos	R2.H = 0x1234;
18*4b169a6bSchristos	R2.L = 0x5678;
19*4b169a6bSchristos	CC = R1 == R2;
20*4b169a6bSchristos	IF !CC JUMP 1f;
21*4b169a6bSchristos	/* CLEARED: AZ AN V V_COPY */
22*4b169a6bSchristos	R3.H = HI(_AZ|_AN|_V|_V_COPY);
23*4b169a6bSchristos	R3.L = LO(_AZ|_AN|_V|_V_COPY);
24*4b169a6bSchristos	R4 = R7 & R3;
25*4b169a6bSchristos	CC = R4 == 0;
26*4b169a6bSchristos	IF !CC JUMP 1f;
27*4b169a6bSchristos	/* SET: */
28*4b169a6bSchristos	R3.H = HI(0);
29*4b169a6bSchristos	R3.L = LO(0);
30*4b169a6bSchristos	R4 = R7 & R3;
31*4b169a6bSchristos	CC = R3 == R4;
32*4b169a6bSchristos	IF !CC JUMP 1f;
33*4b169a6bSchristos	/* UNAFFECTED: CC AQ RND_MOD AV0 AV0S AV1 AV1S VS AC0 AC0_COPY AC1 */
34*4b169a6bSchristos	R3.H = HI(_CC|_AQ|_RND_MOD|_AV0|_AV0S|_AV1|_AV1S|_VS|_AC0|_AC0_COPY|_AC1);
35*4b169a6bSchristos	R3.L = LO(_CC|_AQ|_RND_MOD|_AV0|_AV0S|_AV1|_AV1S|_VS|_AC0|_AC0_COPY|_AC1);
36*4b169a6bSchristos	R4 = R6 & R3;
37*4b169a6bSchristos	R5 = R7 & R3;
38*4b169a6bSchristos	CC = R4 == R5;
39*4b169a6bSchristos	IF !CC JUMP 1f;
40*4b169a6bSchristos	pass
41*4b169a6bSchristos1:
42*4b169a6bSchristos	fail
43