1// ACP 5.17 Dual ALU ops
2// AZ, AN, AC0, AC1, V and VS are affected
3// AV0, AV0S, AV1, AV1S are unaffected
4# mach: bfin
5
6#include "test.h"
7.include "testutils.inc"
8	start
9
10	init_r_regs 0;
11	ASTAT = R0;
12	A0 = A1 = 0;
13
14	r0=0;
15	r0.h=0x7fff;
16	r2=0;
17	r2.h=0x7000;
18	r1=r0+r2,r3=r0-r2;
19	r7=astat;
20	_dbg r1;
21	_dbg r3;
22	_dbg astat;
23	CHECKREG R7, (_VS|_V|_V_COPY|_AC0|_AC0_COPY|_AN);
24
25	a1=r2;
26	a0=r0;
27	r1=a0+a1, r3=a0-a1;
28	r7=astat;
29	_dbg a0;
30	_dbg a1;
31	_dbg r1;
32	_dbg r3;
33	_dbg astat;
34	CHECKREG R7, (_VS|_V|_V_COPY|_AC0|_AC0_COPY|_AN);
35
36	a0=r2;
37	a1=r0;
38	r1=a1+a0, r3=a1-a0;
39	r7=astat;
40	_dbg a0;
41	_dbg a1;
42	_dbg r1;
43	_dbg r3;
44	_dbg astat;
45	CHECKREG R7, (_VS|_V|_V_COPY|_AC0|_AC0_COPY|_AN);
46
47	r0.h=0xafff;
48	r2.h=0xa000;
49	a1=r2;
50	a0=r0;
51	r1=a0+a1, r3=a0-a1;
52	r7=astat;
53	_dbg a0;
54	_dbg a1;
55	_dbg r1;
56	_dbg r3;
57	_dbg astat;
58	CHECKREG R7, (_VS|_V|_V_COPY|_AC0|_AC0_COPY|_AC1);
59
60	r1=a0+a1, r3=a0-a1 (s);
61	r7=astat;
62	_dbg a0;
63	_dbg a1;
64	_dbg r1;
65	_dbg r3;
66	_dbg astat;
67	CHECKREG R7, (_VS|_V|_V_COPY|_AC0|_AC0_COPY|_AC1|_AN);
68
69	r0.h=0xafff;
70	r2.h=0xa000;
71	a0=r2;
72	a1=r0;
73	r1=a1+a0, r3=a1-a0;
74	r7=astat;
75	_dbg a0;
76	_dbg a1;
77	_dbg r1;
78	_dbg r3;
79	_dbg astat;
80	CHECKREG R7, (_VS|_V|_V_COPY|_AC0|_AC0_COPY|_AC1);
81
82	r1=a1+a0, r3=a1-a0 (s);
83	r7=astat;
84	_dbg a0;
85	_dbg a1;
86	_dbg r1;
87	_dbg r3;
88	_dbg astat;
89	CHECKREG R7, (_VS|_V|_V_COPY|_AC0|_AC0_COPY|_AC1|_AN);
90
91	r2.h=0x8001;
92	r1=r0+r2,r3=r0-r2;
93	_dbg r1;
94	_dbg r3;
95	_dbg astat;
96	r7=astat;
97	CHECKREG R7, (_VS|_V|_V_COPY|_AC0|_AC0_COPY|_AC1);
98
99	r2.h=0x8000;
100	r1=r0+r2,r3=r0-r2;
101	r7=astat;
102	_dbg r1;
103	_dbg r3;
104	_dbg astat;
105	CHECKREG R7, (_VS|_V|_V_COPY|_AC0|_AC0_COPY|_AC1);
106
107	pass;
108