1//  MAC test program.
2//  Test for positive and negative saturation using
3//  SIGNED FRACTIONAL  mode.
4# mach: bfin
5
6#include "test.h"
7.include "testutils.inc"
8	start
9
10	init_r_regs 0;
11	ASTAT = R0;
12
13// load r0=0x00007fff
14// load r1=0x00007fff
15	loadsym p0, data0
16	R0 = [ P0 ++ ];
17	R1 = [ P0 ++ ];
18
19	R5 = 0;
20	R4 = 0;
21	BITSET( R4 , 9 );
22	A1 = A0 = 0;
23
24LOOP1:
25	A1 -= R0.L * R1.L, A0 += R0.L * R1.L;
26//_DBG a1;
27//_DBG a0;
28	R4 += -1;
29	CC = R4 == R5;
30	IF !CC JUMP LOOP1;
31R3 = ASTAT;
32CHECKREG R3, (_AV1S|_AV1|_AV0S|_AV0|_AC0|_AC0_COPY|_CC|_AZ);
33
34	_DBG A1;
35	_DBG A0;
36
37	R6 = A1.w;
38	_DBG ASTAT;
39	R7.L = A1.x;
40	R3 = ASTAT;
41	_DBG r3;
42	CHECKREG R3, (_AV1S|_AV1|_AV0S|_AV0|_AC0|_AC0_COPY|_CC|_AZ);
43
44	CHECKREG R6, 0;
45	CHECKREG R7, 0x0000FF80;
46	R6 = A0.w;
47	R7.L = A0.x;
48	CHECKREG R6, 0xffffffff;
49	CHECKREG R7, 0x7f;
50
51	pass
52
53	.data 0x1000;
54data0:
55	.dw 0x7fff
56	.dw 0x0000
57	.dw 0x7fff
58	.dw 0x0000
59