1//  Test extraction from accumulators:
2//  SCALE in SIGNED FRACTIONAL mode
3# mach: bfin
4
5.include "testutils.inc"
6	start
7
8
9// load r0=0x3fff0000
10// load r1=0x0fffc000
11// load r2=0x7ff00000
12// load r3=0x80100000
13// load r4=0x000000ff
14	loadsym P0, data0;
15	R0 = [ P0 ++ ];
16	R1 = [ P0 ++ ];
17	R2 = [ P0 ++ ];
18	R3 = [ P0 ++ ];
19	R4 = [ P0 ++ ];
20
21// SCALE
22//  0x003fff0000 -> SCALE 0x7ffe
23	A1 = A0 = 0;
24	A1.w = R0;
25	A0.w = R0;
26	R5.H = A1, R5.L = A0 (S2RND);
27	DBGA ( R5.L , 0x7ffe );
28	DBGA ( R5.H , 0x7ffe );
29
30// SCALE
31//  0x000fffc000 -> SCALE 0x2000
32	A1 = A0 = 0;
33	A1.w = R1;
34	A0.w = R1;
35	R5.H = A1, R5.L = A0 (S2RND);
36	DBGA ( R5.L , 0x2000 );
37	DBGA ( R5.H , 0x2000 );
38
39// SCALE
40//  0x007ff00000 -> SCALE 0x7fff
41	A1 = A0 = 0;
42	A1.w = R2;
43	A0.w = R2;
44	R5.H = A1, R5.L = A0 (S2RND);
45	DBGA ( R5.L , 0x7fff );
46	DBGA ( R5.H , 0x7fff );
47
48// SCALE
49//  0xff80100000 -> SCALE 0x8000
50	A1 = A0 = 0;
51	A1.w = R3;
52	A0.w = R3;
53	A1.x = R4.L;
54	A0.x = R4.L;
55	R5.H = A1, R5.L = A0 (S2RND);
56	DBGA ( R5.L , 0x8000 );
57	DBGA ( R5.H , 0x8000 );
58
59	pass
60
61	.data;
62data0:
63	.dw 0x0000
64	.dw 0x3fff
65	.dw 0xc000
66	.dw 0x0fff
67	.dw 0x0000
68	.dw 0x7ff0
69	.dw 0x0000
70	.dw 0x8010
71	.dw 0x00ff
72	.dw 0x0000
73