Commit | Line | Data |
---|---|---|
1d7b4a70 MF |
1 | // Test extraction from accumulators: |
2 | // ROUND/TRUNCATE in SIGNED FRACTIONAL mode | |
3 | // test ops: "+=" | |
4 | # mach: bfin | |
5 | ||
6 | .include "testutils.inc" | |
7 | start | |
8 | ||
9 | ||
10 | // load r0=0x7ffef000 | |
11 | // load r1=0x7ffff000 | |
12 | // load r2=0x00008000 | |
13 | // load r3=0x00018000 | |
14 | // load r4=0x0000007f | |
15 | loadsym P0, data0; | |
16 | R0 = [ P0 ++ ]; | |
17 | R1 = [ P0 ++ ]; | |
18 | R2 = [ P0 ++ ]; | |
19 | R3 = [ P0 ++ ]; | |
20 | R4 = [ P0 ++ ]; | |
21 | ||
22 | // round | |
23 | // 0x007ffef00 -> 0x7fff | |
24 | A1 = A0 = 0; | |
25 | A1.w = R0; | |
26 | A0.w = R0; | |
27 | R5.H = A1, R5.L = A0; | |
28 | DBGA ( R5.L , 0x7fff ); | |
29 | DBGA ( R5.H , 0x7fff ); | |
30 | ||
31 | // round with ovflw | |
32 | // 0x007ffff00 -> 0x7fff | |
33 | A1 = A0 = 0; | |
34 | A1.w = R1; | |
35 | A0.w = R1; | |
36 | R5.H = A1, R5.L = A0; | |
37 | DBGA ( R5.L , 0x7fff ); | |
38 | DBGA ( R5.H , 0x7fff ); | |
39 | ||
40 | // trunc | |
41 | // 0x007ffef00 -> 0x7ffe | |
42 | A1 = A0 = 0; | |
43 | A1.w = R0; | |
44 | A0.w = R0; | |
45 | R5.H = A1, R5.L = A0 (T); | |
46 | DBGA ( R5.L , 0x7ffe ); | |
47 | DBGA ( R5.H , 0x7ffe ); | |
48 | ||
49 | // round with ovflw | |
50 | // 0x7f7ffff00 -> 0x7fff | |
51 | A1 = A0 = 0; | |
52 | A1.w = R1; | |
53 | A1.x = R4.L; | |
54 | A0.w = R1; | |
55 | A0.x = R4.L; | |
56 | R5.H = A1, R5.L = A0; | |
57 | DBGA ( R5.L , 0x7fff ); | |
58 | DBGA ( R5.H , 0x7fff ); | |
59 | ||
60 | // round, nearest even is zero | |
61 | // 0x0000008000 -> 0x0000 | |
62 | A1 = A0 = 0; | |
63 | A1.w = R2; | |
64 | A0.w = R2; | |
65 | R5.H = A1, R5.L = A0; | |
66 | DBGA ( R5.L , 0x0 ); | |
67 | DBGA ( R5.H , 0x0 ); | |
68 | ||
69 | // round, nearest even is 2 | |
70 | // 0x00000018000 -> 0x0002 | |
71 | A1 = A0 = 0; | |
72 | A1.w = R3; | |
73 | A0.w = R3; | |
74 | R5.H = A1, R5.L = A0; | |
75 | DBGA ( R5.L , 0x2 ); | |
76 | DBGA ( R5.H , 0x2 ); | |
77 | ||
78 | pass | |
79 | ||
80 | .data | |
81 | data0: | |
82 | .dw 0xf000 | |
83 | .dw 0x7ffe | |
84 | .dw 0xf000 | |
85 | .dw 0x7ffe | |
86 | .dw 0x8000 | |
87 | .dw 0x0000 | |
88 | .dw 0x8000 | |
89 | .dw 0x0001 | |
90 | .dw 0x007f | |
91 | .dw 0x0000 |