1 //Original
:/testcases
/core
/c_dsp32mac_mix
/c_dsp32mac_mix.dsp
2 // Spec Reference
: dsp32mac mix
5 .include "testutils.inc"
21 // test the ROUNDING only on signed fraction
T=1
22 R0.H
= (A1
= R4.
L * R5.
L), R0.
L = (A0
= R4.
L * R5.H
) (T);
23 R1.H
= (A1
= R4.H
* R5.
L), R1.
L = (A0
= R4.H
* R5.H
) (T);
24 R2.H
= (A1
= R6.
L * R7.
L), R2.
L = (A0
= R6.H
* R7.H
) (T);
25 R3.H
= (A1
= R6.
L * R7.H
), R3.
L = (A0
= R6.
L * R7.
L) (T);
26 CHECKREG
r0, 0x066DF95C;
27 CHECKREG
r1, 0x0E0AF17F;
28 CHECKREG
r2, 0x000B0001;
29 CHECKREG
r3, 0x0001000B;
31 // When two results are stored to
a single register
, they must
be rounded
32 // or truncated
and stored to the
2 halves of
a single destination reg
dst
43 // The result accumulated in A0
and A1
, and stored to
a reg half
44 R2.H
= ( A1
= R1.
L * R0.H
), A0
= R1.H
* R0.
L;
45 R3.H
= A1
, A0
= R7.H
* R6.
L (T);
46 R4.H
= ( A1
= R3.
L * R2.H
) (M
), A0
= R3.H
* R2.
L;
47 A1
= R1.
L * R0.H
, R5.
L = ( A0
= R1.H
* R0.
L ) (ISS2
);
49 CHECKREG
r2, 0xFFD15679;
50 CHECKREG
r3, 0xFFD00007;
51 CHECKREG
r4, 0x00074569;
52 CHECKREG
r5, 0x12358000;
62 // The result accumulated in A0
and A1
, and stored to
a reg
63 R5.H
= (A1
= R1.
L * R0.H
), R5.
L = (A0
= R1.H
* R0.
L) (TFU
);
64 R6.H
= (A1
= R3.
L * R2.H
) (M
), R6.
L = (A0
= R3.H
* R2.
L) (TFU
);
65 R7.H
= (A1
= R1.
L * R0.H
) (M
), R7.
L = (A0
= R1.H
* R0.
L) (IH
);
// hi-word extraction
66 CHECKREG
r5, 0x133C3D94;
67 CHECKREG
r6, 0x00040002;
68 CHECKREG
r7, 0xFFE8E2D7;
71 // The result accumulated in A0
and A1
, and stored to
a reg pair
81 R3 = ( A1
= R1.
L * R0.H
), A0
= R1.H
* R0.
L;
82 R5 = ( A1
= R1.
L * R0.H
);
83 R7 = ( A1
+= R1.
L * R0.H
) (M
), A0
-= R1.H
* R0.
L;
84 CHECKREG
r2, 0xA1245679;
85 CHECKREG
r3, 0xFFD0BC98;
86 CHECKREG
r4, 0xEFBC4569;
87 CHECKREG
r5, 0xFFD0BC98;
88 CHECKREG
r6, 0x000C000D;
89 CHECKREG
r7, 0xFFB91AE4;
90 A1
= R1.
L * R0.H
, R2 = ( A0
= R1.H
* R0.
L );
91 A1
= R1.
L * R0.H
(M
), R6 = ( A0
-= R1.H
* R0.
L );
92 CHECKREG
r2, 0xC5AEB798;
93 CHECKREG
r3, 0xFFD0BC98;
94 CHECKREG
r4, 0xEFBC4569;
95 CHECKREG
r5, 0xFFD0BC98;
96 CHECKREG
r6, 0x00000000;
97 CHECKREG
r7, 0xFFB91AE4;
100 imm32
r1, 0xadbcfec7;
101 imm32
r2, 0xa1245679;
102 imm32
r3, 0x00060007;
103 imm32
r4, 0xefbc4569;
104 imm32
r5, 0x1235000b;
105 imm32
r6, 0x000c000d;
106 imm32
r7, 0x678e000f;
107 R3 = ( A1
-= R5.
L * R4.H
), R2 = ( A0
-= R5.H
* R4.
L ) (S2RND
);
108 R3 = ( A1
-= R1.
L * R0.H
) (M
), R2 = ( A0
+= R1.H
* R0.
L ) (S2RND
);
109 CHECKREG
r2, 0x80000000;
110 CHECKREG
r3, 0x0002CBB0;