2 // Test basic edge values
3 // UNSIGNED FRACTIONAL mode U
7 .include "testutils.inc"
32 // 0x8000 * 0x7fff = 0x003fff8000
34 A1 += R0.H * R1.L, A0 += R0.H * R1.L (FU);
37 DBGA ( R6.L , 0x8000 );
38 DBGA ( R6.H , 0x3fff );
39 DBGA ( R7.L , 0x0000 );
42 DBGA ( R6.L , 0x8000 );
43 DBGA ( R6.H , 0x3fff );
44 DBGA ( R7.L , 0x0000 );
46 // 0x8000 * 0x8000 = 0x0040000000
48 A1 += R0.H * R1.H, A0 += R0.H * R1.H (FU);
51 DBGA ( R6.L , 0x0000 );
52 DBGA ( R6.H , 0x4000 );
53 DBGA ( R7.L , 0x0000 );
56 DBGA ( R6.L , 0x0000 );
57 DBGA ( R6.H , 0x4000 );
58 DBGA ( R7.L , 0x0000 );
60 // 0xffff * 0xffff = 0x00fffe0001
62 A1 += R5.H * R5.H, A0 += R5.H * R5.H (FU);
65 DBGA ( R6.L , 0x0001 );
66 DBGA ( R6.H , 0xfffe );
67 DBGA ( R7.L , 0x0000 );
70 DBGA ( R6.L , 0x0001 );
71 DBGA ( R6.H , 0xfffe );
72 DBGA ( R7.L , 0x0000 );
74 // saturate high by first loading large value into accums
75 // expected value is 0xffffffffff
81 A1 += R5.H * R5.H, A0 += R5.H * R5.H (FU);
84 DBGA ( R6.L , 0xffff );
85 DBGA ( R6.H , 0xffff );
86 DBGA ( R7.L , 0xffff );
89 DBGA ( R6.L , 0xffff );
90 DBGA ( R6.H , 0xffff );
91 DBGA ( R7.L , 0xffff );
93 // saturate low with "-="
94 // expected value is 0x0000000000
96 A1 -= R4.L * R4.L, A0 -= R4.L * R4.L (FU);
99 DBGA ( R6.L , 0x0000 );
100 DBGA ( R6.H , 0x0000 );
101 DBGA ( R7.L , 0x0000 );
104 DBGA ( R6.L , 0x0000 );
105 DBGA ( R6.H , 0x0000 );
106 DBGA ( R7.L , 0x0000 );
108 // saturate low with "-="
109 // expected value is 0x0000000000
111 A1 -= R1.H * R0.H, A0 -= R1.H * R0.H (FU);
114 DBGA ( R6.L , 0x0000 );
115 DBGA ( R6.H , 0x0000 );
116 DBGA ( R7.L , 0x0000 );
119 DBGA ( R6.L , 0x0000 );
120 DBGA ( R6.H , 0x0000 );
121 DBGA ( R7.L , 0x0000 );