blob: 1f78e34bbb239912d97f3c91a8c5ecf75051d45f [file] [log] [blame]
//Original:/testcases/core/c_dsp32mac_dr_a1_u/c_dsp32mac_dr_a1_u.dsp
// Spec Reference: dsp32mac dr_a1 u (unsigned fraction & unsigned int)
# mach: bfin
.include "testutils.inc"
start
A1 = A0 = 0;
// The result accumulated in A1 , and stored to a reg half
imm32 r0, 0xa3545abd;
imm32 r1, 0xbabcfec7;
imm32 r2, 0xc1a48679;
imm32 r3, 0xd00a9007;
imm32 r4, 0xefbca569;
imm32 r5, 0xcd355a0b;
imm32 r6, 0xe00c80ad;
imm32 r7, 0xf78e900a;
R0.H = ( A1 = R6.L * R7.L ), A0 += R6.L * R7.L (FU);
R1 = A1.w;
R2.H = ( A1 = R3.L * R4.H ), A0 = R3.H * R4.L (FU);
R3 = A1.w;
R4.H = ( A1 += R2.H * R5.L ), A0 = R2.H * R5.H (FU);
R5 = A1.w;
R6.H = ( A1 += R0.H * R1.H ), A0 += R0.L * R1.H (FU);
R7 = A1.w;
CHECKREG r0, 0x48665ABD;
CHECKREG r1, 0x486656C2;
CHECKREG r2, 0x86E08679;
CHECKREG r3, 0x86E04E24;
CHECKREG r4, 0xB651A569;
CHECKREG r5, 0xB650D9C4;
CHECKREG r6, 0xCACA80AD;
CHECKREG r7, 0xCACA6268;
imm32 r0, 0x03545abd;
imm32 r1, 0x1abcfec7;
imm32 r2, 0xc2a48679;
imm32 r3, 0x300a9007;
imm32 r4, 0x54bca569;
imm32 r5, 0x6d355a0b;
imm32 r6, 0x700c80ad;
imm32 r7, 0x878e900a;
R0.H = ( A1 -= R6.L * R7.L ), A0 += R6.L * R7.L (FU);
R1 = A1.w;
R2.H = ( A1 -= R3.L * R4.H ), A0 = R3.H * R4.L (FU);
R3 = A1.w;
R4.H = ( A1 += R2.H * R5.L ), A0 -= R2.H * R5.H (FU);
R5 = A1.w;
R6.H = ( A1 -= R0.H * R1.H ), A0 += R0.L * R1.H (FU);
R7 = A1.w;
CHECKREG r0, 0x82645ABD;
CHECKREG r1, 0x82640BA6;
CHECKREG r2, 0x52B88679;
CHECKREG r3, 0x52B7FA82;
CHECKREG r4, 0x6FD0A569;
CHECKREG r5, 0x6FD0386A;
CHECKREG r6, 0x2D6780AD;
CHECKREG r7, 0x2D66815A;
// The result accumulated in A1, and stored to a reg half (MNOP)
imm32 r0, 0xb3548abd;
imm32 r1, 0x7bbcfec7;
imm32 r2, 0xa1b45679;
imm32 r3, 0xb00b9007;
imm32 r4, 0xcfbcb569;
imm32 r5, 0xd235c00b;
imm32 r6, 0xe00cabbd;
imm32 r7, 0x678e700b;
R0.H = ( A1 = R1.L * R0.L ) (FU);
R1 = A1.w;
R2.H = ( A1 = R2.L * R6.H ) (FU);
R3 = A1.w;
R4.H = ( A1 += R3.H * R5.L ) (FU);
R5 = A1.w;
R6.H = ( A1 = R4.H * R7.H ) (FU);
R7 = A1.w;
CHECKREG r0, 0x8A138ABD;
CHECKREG r1, 0x8A135EEB;
CHECKREG r2, 0x4BAE5679;
CHECKREG r3, 0x4BADEDAC;
CHECKREG r4, 0x8473B569;
CHECKREG r5, 0x8472EE1B;
CHECKREG r6, 0x3594ABBD;
CHECKREG r7, 0x3593BCCA;
// The result accumulated in A1 , and stored to a reg half (MNOP)
imm32 r0, 0xc354babd;
imm32 r1, 0x6cbcdec7;
imm32 r2, 0x71c4e679;
imm32 r3, 0x800c7007;
imm32 r4, 0x9fbcc569;
imm32 r5, 0xa2359c0b;
imm32 r6, 0xb00c30cd;
imm32 r7, 0xc78ea00c;
R0.H = A1 , A0 = R1.L * R0.L (FU);
R1 = A1.w;
R2.H = A1 , A0 = R2.H * R3.L (FU);
R3 = A1.w;
R4.H = A1 , A0 = R4.H * R5.H (FU);
R5 = A1.w;
R6.H = A1 , A0 = R6.L * R7.H (FU);
R7 = A1.w;
CHECKREG r0, 0x3594BABD;
CHECKREG r1, 0x3593BCCA;
CHECKREG r2, 0x3594E679;
CHECKREG r3, 0x3593BCCA;
CHECKREG r4, 0x3594C569;
CHECKREG r5, 0x3593BCCA;
CHECKREG r6, 0x359430CD;
CHECKREG r7, 0x3593BCCA;
// The result accumulated in A1 , and stored to a reg half
imm32 r0, 0xd3545abd;
imm32 r1, 0x5dbcfec7;
imm32 r2, 0x71d45679;
imm32 r3, 0x900d0007;
imm32 r4, 0xafbcd569;
imm32 r5, 0xd2359d0b;
imm32 r6, 0xc00ca0dd;
imm32 r7, 0x678ed00d;
R0.H = ( A1 = R1.L * R2.L ) (M), A0 += R1.L * R2.L (FU);
R1 = A1.w;
R2.H = ( A1 = R3.L * R4.H ) (M), A0 = R3.H * R4.L (FU);
R3 = A1.w;
R4.H = ( A1 = R5.H * R6.L ) (M), A0 += R5.H * R6.H (FU);
R5 = A1.w;
R6.H = ( A1 += R7.H * R0.H ) (M), A0 += R7.L * R0.H (FU);
R7 = A1.w;
CHECKREG r0, 0xFF965ABD;
CHECKREG r1, 0xFF96460F;
CHECKREG r2, 0x00055679;
CHECKREG r3, 0x0004CE24;
CHECKREG r4, 0xE33AD569;
CHECKREG r5, 0xE33997C1;
CHECKREG r6, 0x4A9DA0DD;
CHECKREG r7, 0x4A9CB6F5;
// The result accumulated in A1 MM=0, and stored to a reg half (MNOP)
imm32 r0, 0xe3545abd;
imm32 r1, 0xaebcfec7;
imm32 r2, 0xc1e45679;
imm32 r3, 0x1c0e0007;
imm32 r4, 0xe1cce569;
imm32 r5, 0x921c0e0b;
imm32 r6, 0x790190ed;
imm32 r7, 0x679e900e;
R0.H = ( A1 = R1.L * R0.L ) (M,FU);
R1 = A1.w;
R2.H = ( A1 += R2.L * R3.H ) (M,FU);
R3 = A1.w;
R4.H = ( A1 += R4.H * R5.L ) (M,FU);
R5 = A1.w;
R6.H = ( A1 = R6.H * R7.H ) (M,FU);
R7 = A1.w;
CHECKREG r0, 0xFF915ABD;
CHECKREG r1, 0xFF910EEB;
CHECKREG r2, 0x090B5679;
CHECKREG r3, 0x090B0589;
CHECKREG r4, 0x0763E569;
CHECKREG r5, 0x0762E14D;
CHECKREG r6, 0x30FA90ED;
CHECKREG r7, 0x30FA159E;
pass