1/*  ALU test program.
2 *  Test instructions
3 *  r3= + (r0,r0);
4 *  r3= + (r0,r0) s;
5 *  r3= - (r0,r0);
6 *  r3= - (r0,r0) s;
7 */
8# mach: bfin
9
10.include "testutils.inc"
11	start
12
13
14// overflow  positive
15	R0.L = 0xffff;
16	R0.H = 0x7fff;
17	R7 = 0;
18	ASTAT = R7;
19	R3 = R0 + R0 (NS);
20	DBGA ( R3.L , 0xfffe );
21	DBGA ( R3.H , 0xffff );
22	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x0 );
23	CC = AN;	R7 = CC; DBGA ( R7.L , 0x1 );
24	CC = V;	R7 = CC; DBGA ( R7.L , 0x1 );
25	CC = VS;	R7 = CC; DBGA ( R7.L , 0x1 );
26	CC = AC0;	R7 = CC; DBGA ( R7.L , 0x0 );
27
28// overflow  negative
29	R0.L = 0x0000;
30	R0.H = 0x8000;
31	R7 = 0;
32	ASTAT = R7;
33	R3 = R0 + R0 (NS);
34	DBGA ( R3.L , 0x0000 );
35	DBGA ( R3.H , 0x0000 );
36	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x1 );
37	CC = AN;	R7 = CC; DBGA ( R7.L , 0x0 );
38	CC =  V;	R7 = CC; DBGA ( R7.L , 0x1 );
39	CC = AC0;	R7 = CC; DBGA ( R7.L , 0x1 );
40
41// zero
42	R0.L = 0xffff;
43	R0.H = 0xffff;
44	R1.L = 0x0001;
45	R1.H = 0x0000;
46	R7 = 0;
47	ASTAT = R7;
48	R3 = R1 + R0 (NS);
49	DBGA ( R3.L , 0x0000 );
50	DBGA ( R3.H , 0x0000 );
51	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x1 );
52	CC = AN;	R7 = CC; DBGA ( R7.L , 0x0 );
53	CC =  V;	R7 = CC; DBGA ( R7.L , 0x0 );
54	CC = AC0;	R7 = CC; DBGA ( R7.L , 0x1 );
55
56// saturate positive
57	R0.L = 0;
58	R0.H = 0x7fff;
59	R7 = 0;
60	ASTAT = R7;
61	R3 = R0 + R0 (S);
62	DBGA ( R3.L , 0xffff );
63	DBGA ( R3.H , 0x7fff );
64	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x0 );
65	CC = AN;	R7 = CC; DBGA ( R7.L , 0x0 );
66	CC =  V;	R7 = CC; DBGA ( R7.L , 0x1 );
67	CC = AC0;	R7 = CC; DBGA ( R7.L , 0x0 );
68
69// saturate negative
70	R0.L = 0;
71	R0.H = 0x8000;
72	R7 = 0;
73	ASTAT = R7;
74	R3 = R0 + R0 (S);
75	DBGA ( R3.L , 0x0000 );
76	DBGA ( R3.H , 0x8000 );
77
78	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x0 );
79	CC = AN;	R7 = CC; DBGA ( R7.L , 0x1 );
80	CC =  V;	R7 = CC; DBGA ( R7.L , 0x1 );
81	CC = AC0;	R7 = CC; DBGA ( R7.L , 0x1 );
82
83// saturate positive with subtraction
84	R0.L = 0xffff;
85	R0.H = 0xffff;
86	R1.L = 0xffff;
87	R1.H = 0x7fff;
88	R7 = 0;
89	ASTAT = R7;
90	R3 = R1 - R0 (S);
91	DBGA ( R3.L , 0xffff );
92	DBGA ( R3.H , 0x7fff );
93	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x0 );
94	CC = AN;	R7 = CC; DBGA ( R7.L , 0x0 );
95	CC =  V;	R7 = CC; DBGA ( R7.L , 0x1 );
96	CC = AC0;	R7 = CC; DBGA ( R7.L , 0x0 );
97
98// saturate negative with subtraction
99	R0.L = 0x1;
100	R0.H = 0x0;
101	R1.L = 0x0000;
102	R1.H = 0x8000;
103	R7 = 0;
104	ASTAT = R7;
105	R3 = R1 - R0 (S);
106	DBGA ( R3.L , 0x0000 );
107	DBGA ( R3.H , 0x8000 );
108	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x0 );
109	CC = AN;	R7 = CC; DBGA ( R7.L , 0x1 );
110	CC =  V;	R7 = CC; DBGA ( R7.L , 0x1 );
111	CC = AC0;	R7 = CC; DBGA ( R7.L , 0x1 );
112
113	pass
114