1//  Test extraction from accumulators:
2//  UNSIGNED FRACTIONAL and SIGNED INT mode into register PAIR
3# mach: bfin
4
5.include "testutils.inc"
6	start
7
8
9// load r0=0x7ffffff0
10// load r1=0xfffffff0
11// load r2=0x0fffffff
12// load r3=0x00000001
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// extract
22// 0x00fffffff0 -> 0xffffffff0
23	A1 = A0 = 0;
24	A1.w = R1;
25	A0.w = R1;
26	R7 = A1,  R6 = A0  (FU);
27	DBGA ( R7.L , 0xfff0 );
28	DBGA ( R7.H , 0xffff );
29	DBGA ( R6.L , 0xfff0 );
30	DBGA ( R6.H , 0xffff );
31
32// extract with saturation
33// 0x01fffffff0 -> 0xfffffffff
34	A1 = A0 = 0;
35	A1.w = R1;
36	A0.w = R1;
37	A1.x = R3.L;
38	A0.x = R3.L;
39	R7 = A1,  R6 = A0  (FU);
40	DBGA ( R7.L , 0xffff );
41	DBGA ( R7.H , 0xffff );
42	DBGA ( R6.L , 0xffff );
43	DBGA ( R6.H , 0xffff );
44
45// extract with saturation
46// 0xfffffffff0 -> 0xfffffffff
47	A1 = A0 = 0;
48	A1.w = R1;
49	A0.w = R1;
50	A1.x = R4.L;
51	A0.x = R4.L;
52	R7 = A1,  R6 = A0  (FU);
53	DBGA ( R7.L , 0xffff );
54	DBGA ( R7.H , 0xffff );
55	DBGA ( R6.L , 0xffff );
56	DBGA ( R6.H , 0xffff );
57
58// extract unsigned
59// 0x00fffffff0 -> 0xffffffff0
60	A1 = A0 = 0;
61	A1.w = R1;
62	A0.w = R1;
63	R7 = A1,  R6 = A0  (FU);
64	DBGA ( R7.L , 0xfff0 );
65	DBGA ( R7.H , 0xffff );
66	DBGA ( R6.L , 0xfff0 );
67	DBGA ( R6.H , 0xffff );
68
69	pass
70
71	.data
72data0:
73	.dw 0xfff0
74	.dw 0x7fff
75	.dw 0xfff0
76	.dw 0xffff
77	.dw 0xffff
78	.dw 0x0fff
79	.dw 0x0001
80	.dw 0x0000
81	.dw 0x00ff
82	.dw 0x0000
83