| //Original:/testcases/core/c_dsp32mac_dr_a0/c_dsp32mac_dr_a0.dsp |
| // Spec Reference: dsp32mac dr_a0 |
| # mach: bfin |
| |
| .include "testutils.inc" |
| start |
| |
| |
| |
| |
| imm32 r0, 0xab235675; |
| imm32 r1, 0xcaba5127; |
| imm32 r2, 0x13a46705; |
| imm32 r3, 0x000a0007; |
| imm32 r4, 0x90abad09; |
| imm32 r5, 0x10aceadb; |
| imm32 r6, 0x000c00ad; |
| imm32 r7, 0x1246700a; |
| |
| A1 = A0 = 0; |
| |
| // The result accumulated in A1 , and stored to a reg half |
| imm32 r0, 0xb3545abd; |
| imm32 r1, 0xabbcfec7; |
| imm32 r2, 0xa1b45679; |
| imm32 r3, 0x000b0007; |
| imm32 r4, 0xefbcb569; |
| imm32 r5, 0x12350b0b; |
| imm32 r6, 0x000c00bd; |
| imm32 r7, 0x678e000b; |
| A1 = R1.L * R0.L, R0.L = ( A0 = R1.L * R0.L ); |
| R1 = A0.w; |
| A1 -= R2.L * R3.L, R2.L = ( A0 = R2.H * R3.L ); |
| R3 = A0.w; |
| A1 = R4.L * R5.L, R4.L = ( A0 += R4.H * R5.H ); |
| R5 = A0.w; |
| A1 = R6.L * R7.L, R6.L = ( A0 = R6.L * R7.H ); |
| R7 = A0.w; |
| CHECKREG r0, 0xB354FF22; |
| CHECKREG r1, 0xFF221DD6; |
| CHECKREG r2, 0xA1B4FFFB; |
| CHECKREG r3, 0xFFFAD7D8; |
| CHECKREG r4, 0xEFBCFDAB; |
| CHECKREG r5, 0xFDAA8BB0; |
| CHECKREG r6, 0x000C0099; |
| CHECKREG r7, 0x0098E7AC; |
| |
| imm32 r0, 0xc3545abd; |
| imm32 r1, 0xacbcfec7; |
| imm32 r2, 0xa1c45679; |
| imm32 r3, 0x000c0007; |
| imm32 r4, 0xefbcc569; |
| imm32 r5, 0x12350c0b; |
| imm32 r6, 0x000c00cd; |
| imm32 r7, 0x678e000c; |
| A1 = R1.L * R0.H, R0.L = ( A0 = R1.L * R0.L ); |
| R1 = A0.w; |
| A1 -= R2.L * R3.H, R2.L = ( A0 -= R2.H * R3.L ); |
| R3 = A0.w; |
| A1 = R4.H * R5.H, R4.L = ( A0 += R4.H * R5.H ); |
| R5 = A0.w; |
| A1 -= R6.H * R7.H, R6.L = ( A0 += R6.L * R7.H ); |
| R7 = A0.w; |
| CHECKREG r0, 0xC354FF22; |
| CHECKREG r1, 0xFF221DD6; |
| CHECKREG r2, 0xA1C4FF27; |
| CHECKREG r3, 0xFF27451E; |
| CHECKREG r4, 0xEFBCFCD7; |
| CHECKREG r5, 0xFCD6F8F6; |
| CHECKREG r6, 0x000CFD7D; |
| CHECKREG r7, 0xFD7CD262; |
| |
| imm32 r0, 0xd3545abd; |
| imm32 r1, 0xadbcfec7; |
| imm32 r2, 0xa1d45679; |
| imm32 r3, 0x000d0007; |
| imm32 r4, 0xefbcd569; |
| imm32 r5, 0x12350d0b; |
| imm32 r6, 0x000c00dd; |
| imm32 r7, 0x678e000d; |
| A1 += R1.H * R0.L, R0.L = ( A0 -= R1.L * R0.L ); |
| R1 = A0.w; |
| A1 = R2.H * R3.H, R2.L = ( A0 -= R2.H * R3.L ); |
| R3 = A0.w; |
| A1 -= R4.H * R5.L, R4.L = ( A0 -= R4.H * R5.H ); |
| R5 = A0.w; |
| A1 += R6.H * R7.L, R6.L = ( A0 = R6.L * R7.H ); |
| R7 = A0.w; |
| CHECKREG r0, 0xD354FE5B; |
| CHECKREG r1, 0xFE5AB48C; |
| CHECKREG r2, 0xA1D4FE60; |
| CHECKREG r3, 0xFE5FDAF4; |
| CHECKREG r4, 0xEFBC00B0; |
| CHECKREG r5, 0x00B0271C; |
| CHECKREG r6, 0x000C00B3; |
| CHECKREG r7, 0x00B2CB2C; |
| |
| imm32 r0, 0xe3545abd; |
| imm32 r1, 0xaebcfec7; |
| imm32 r2, 0xa1e45679; |
| imm32 r3, 0x000e0007; |
| imm32 r4, 0xefbce569; |
| imm32 r5, 0x12350e0b; |
| imm32 r6, 0x000c00ed; |
| imm32 r7, 0x678e000e; |
| A1 = R1.H * R0.H, R0.L = ( A0 = R1.L * R0.L ); |
| R1 = A0.w; |
| A1 += R2.H * R3.H, R2.L = ( A0 += R2.H * R3.L ); |
| R3 = A0.w; |
| A1 = R4.H * R5.H, R4.L = ( A0 = R4.H * R5.H ); |
| R5 = A0.w; |
| A1 = R6.H * R7.H, R6.L = ( A0 -= R6.L * R7.H ); |
| R7 = A0.w; |
| CHECKREG r0, 0xE354FF22; |
| CHECKREG r1, 0xFF221DD6; |
| CHECKREG r2, 0xA1E4FF1D; |
| CHECKREG r3, 0xFF1CF84E; |
| CHECKREG r4, 0xEFBCFDB0; |
| CHECKREG r5, 0xFDAFB3D8; |
| CHECKREG r6, 0x000CFCF0; |
| CHECKREG r7, 0xFCEFF6EC; |
| |
| |
| pass |