1// Test various moves to single register
2# mach: bfin
3
4
5.include "testutils.inc"
6	start
7
8
9// load r0=0x7fffffff
10// load r1=0x00ffffff
11// load r2=0xf0000000
12// load r3=0x0000007f
13	loadsym P0, data0;
14	R0 = [ P0 ++ ];
15	R1 = [ P0 ++ ];
16	R2 = [ P0 ++ ];
17	R3 = [ P0 ++ ];
18
19// extract only to high register
20	R5 = 0;
21	R4 = 0;
22	A1 = A0 = 0;
23	A1.w = R0;
24	A0.w = R0;
25	R5 = A1;
26	DBGA ( R4.L , 0x0000 );
27	DBGA ( R4.H , 0x0000 );
28	DBGA ( R5.L , 0xffff );
29	DBGA ( R5.H , 0x7fff );
30
31// extract only to low register
32	R5 = 0;
33	R4 = 0;
34	A1 = A0 = 0;
35	A1.w = R0;
36	A0.w = R0;
37	R4 = A0;
38	DBGA ( R4.L , 0xffff );
39	DBGA ( R4.H , 0x7fff );
40	DBGA ( R5.L , 0x0000 );
41	DBGA ( R5.H , 0x0000 );
42
43// extract  only to high reg
44	R5 = 0;
45	R4 = 0;
46	A1 = A0 = 0;
47	R5 = ( A1 += R0.H * R0.H ), A0 += R0.H * R0.H;
48	DBGA ( R4.L , 0x0000 );
49	DBGA ( R4.H , 0x0000 );
50	DBGA ( R5.L , 0x0002 );
51	DBGA ( R5.H , 0x7ffe );
52
53// extract  only to low reg
54	R5 = 0;
55	R4 = 0;
56	A1 = A0 = 0;
57	A1 += R0.H * R0.H, R4 = ( A0 += R0.H * R0.H );
58	DBGA ( R4.L , 0x0002 );
59	DBGA ( R4.H , 0x7ffe );
60	DBGA ( R5.L , 0x0000 );
61	DBGA ( R5.H , 0x0000 );
62
63	pass
64
65	.data
66data0:
67	.dw 0xffff
68	.dw 0x7fff
69	.dw 0xffff
70	.dw 0x00ff
71	.dw 0x0000
72	.dw 0xf000
73	.dw 0x007f
74	.dw 0x0000
75