m13.s revision 1.1 1 1.1 christos // Test extraction from accumulators:
2 1.1 christos // SIGNED FRACTIONAL and SIGNED INT mode into register PAIR
3 1.1 christos # mach: bfin
4 1.1 christos
5 1.1 christos .include "testutils.inc"
6 1.1 christos start
7 1.1 christos
8 1.1 christos
9 1.1 christos // load r0=0x7ffffff0
10 1.1 christos // load r1=0xfffffff0
11 1.1 christos // load r2=0x0fffffff
12 1.1 christos // load r3=0x80100000
13 1.1 christos // load r4=0x000000ff
14 1.1 christos loadsym P0, data0;
15 1.1 christos R0 = [ P0 ++ ];
16 1.1 christos R1 = [ P0 ++ ];
17 1.1 christos R2 = [ P0 ++ ];
18 1.1 christos R3 = [ P0 ++ ];
19 1.1 christos R4 = [ P0 ++ ];
20 1.1 christos
21 1.1 christos // extract
22 1.1 christos // 0x007ffffff0 -> 0x7fffffff0
23 1.1 christos A1 = A0 = 0;
24 1.1 christos A1.w = R0;
25 1.1 christos A0.w = R0;
26 1.1 christos R7 = A1, R6 = A0;
27 1.1 christos DBGA ( R7.L , 0xfff0 );
28 1.1 christos DBGA ( R7.H , 0x7fff );
29 1.1 christos DBGA ( R6.L , 0xfff0 );
30 1.1 christos DBGA ( R6.H , 0x7fff );
31 1.1 christos
32 1.1 christos // extract with saturate
33 1.1 christos // 0x00fffffff0 -> 0x7ffffffff
34 1.1 christos A1 = A0 = 0;
35 1.1 christos A1.w = R1;
36 1.1 christos A0.w = R1;
37 1.1 christos R7 = A1, R6 = A0;
38 1.1 christos DBGA ( R7.L , 0xffff );
39 1.1 christos DBGA ( R7.H , 0x7fff );
40 1.1 christos DBGA ( R6.L , 0xffff );
41 1.1 christos DBGA ( R6.H , 0x7fff );
42 1.1 christos
43 1.1 christos // extract with saturate negative
44 1.1 christos // 0xff0ffffff0 -> 0x80000000
45 1.1 christos A1 = A0 = 0;
46 1.1 christos A1.w = R2;
47 1.1 christos A0.w = R2;
48 1.1 christos A1.x = R4.L;
49 1.1 christos A0.x = R4.L;
50 1.1 christos R7 = A1, R6 = A0;
51 1.1 christos DBGA ( R7.L , 0x0000 );
52 1.1 christos DBGA ( R7.H , 0x8000 );
53 1.1 christos DBGA ( R6.L , 0x0000 );
54 1.1 christos DBGA ( R6.H , 0x8000 );
55 1.1 christos
56 1.1 christos // extract integer (same as fract)
57 1.1 christos // 0x007ffffff0 -> 0x7fffffff0
58 1.1 christos A1 = A0 = 0;
59 1.1 christos A1.w = R0;
60 1.1 christos A0.w = R0;
61 1.1 christos R7 = A1, R6 = A0 (IS);
62 1.1 christos DBGA ( R7.L , 0xfff0 );
63 1.1 christos DBGA ( R7.H , 0x7fff );
64 1.1 christos DBGA ( R6.L , 0xfff0 );
65 1.1 christos DBGA ( R6.H , 0x7fff );
66 1.1 christos
67 1.1 christos // extract with saturate negative
68 1.1 christos // 0xff0ffffff0 -> 0x80000000
69 1.1 christos A1 = A0 = 0;
70 1.1 christos A1.w = R2;
71 1.1 christos A0.w = R2;
72 1.1 christos A1.x = R4.L;
73 1.1 christos A0.x = R4.L;
74 1.1 christos R7 = A1, R6 = A0 (IS);
75 1.1 christos DBGA ( R7.L , 0x0000 );
76 1.1 christos DBGA ( R7.H , 0x8000 );
77 1.1 christos DBGA ( R6.L , 0x0000 );
78 1.1 christos DBGA ( R6.H , 0x8000 );
79 1.1 christos
80 1.1 christos pass
81 1.1 christos
82 1.1 christos .data
83 1.1 christos data0:
84 1.1 christos .dw 0xfff0
85 1.1 christos .dw 0x7fff
86 1.1 christos .dw 0xfff0
87 1.1 christos .dw 0xffff
88 1.1 christos .dw 0xffff
89 1.1 christos .dw 0x0fff
90 1.1 christos .dw 0x0000
91 1.1 christos .dw 0x8010
92 1.1 christos .dw 0x00ff
93 1.1 christos .dw 0x0000
94