| //Original:/testcases/core/c_dsp32mac_dr_a1_s/c_dsp32mac_dr_a1_s.dsp |
| // Spec Reference: dsp32mac dr_a1 s (scale by 2 signed fraction with round) |
| # 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 -= R1.L * R0.L ), A0 += R1.L * R0.L (S2RND); |
| R1 = A1.w; |
| R2.H = ( A1 += R2.L * R3.H ), A0 -= R2.H * R3.L (S2RND); |
| R3 = A1.w; |
| R4.H = ( A1 = R4.H * R5.L ), A0 = R4.H * R5.H (S2RND); |
| R5 = A1.w; |
| R6.H = ( A1 += R6.H * R7.H ), A0 -= R6.L * R7.H (S2RND); |
| R7 = A1.w; |
| CHECKREG r0, 0x01BC5ABD; |
| CHECKREG r1, 0x00DDE22A; |
| CHECKREG r2, 0x5CCE8679; |
| CHECKREG r3, 0x2E67039E; |
| CHECKREG r4, 0xE91EA569; |
| CHECKREG r5, 0xF48ECA28; |
| CHECKREG r6, 0xED5580AD; |
| CHECKREG r7, 0xF6AA7F78; |
| |
| // The result accumulated in A1, and stored to a reg half (MNOP) |
| imm32 r0, 0x63bb8abd; |
| imm32 r1, 0xbdbcfec7; |
| imm32 r2, 0xab245679; |
| imm32 r3, 0xb0b69007; |
| imm32 r4, 0xcfbb4569; |
| imm32 r5, 0xd235b00b; |
| imm32 r6, 0xe00cab0d; |
| imm32 r7, 0x678e70bf; |
| R0.H = ( A1 += R1.L * R0.L ) (S2RND); |
| R1 = A1.w; |
| R2.H = ( A1 -= R2.L * R3.H ) (S2RND); |
| R3 = A1.w; |
| R4.H = ( A1 += R4.H * R5.L ) (S2RND); |
| R5 = A1.w; |
| R6.H = ( A1 = R6.H * R7.H ) (S2RND); |
| R7 = A1.w; |
| CHECKREG r0, 0xEF928ABD; |
| CHECKREG r1, 0xF7C93D4E; |
| CHECKREG r2, 0x5AB45679; |
| CHECKREG r3, 0x2D59E942; |
| CHECKREG r4, 0x7FFF4569; |
| CHECKREG r5, 0x4B80E354; |
| CHECKREG r6, 0xCC4CAB0D; |
| CHECKREG r7, 0xE6263550; |
| |
| // The result accumulated in A1 , and stored to a reg half (MNOP) |
| imm32 r0, 0x5c54babd; |
| imm32 r1, 0x6dccdec7; |
| imm32 r2, 0xc12ce679; |
| imm32 r3, 0x8c06c007; |
| imm32 r4, 0x9fcc4c69; |
| imm32 r5, 0xa23c90cb; |
| imm32 r6, 0xb00cc00c; |
| imm32 r7, 0xc78eac0f; |
| R0.H = A1 , A0 -= R1.L * R0.L (S2RND); |
| R1 = A1.w; |
| R2.H = A1 , A0 += R2.H * R3.L (S2RND); |
| R3 = A1.w; |
| R4.H = A1 , A0 = R4.H * R5.H (S2RND); |
| R5 = A1.w; |
| R6.H = A1 , A0 += R6.L * R7.H (S2RND); |
| R7 = A1.w; |
| CHECKREG r0, 0xCC4CBABD; |
| CHECKREG r1, 0xE6263550; |
| CHECKREG r2, 0xCC4CE679; |
| CHECKREG r3, 0xE6263550; |
| CHECKREG r4, 0xCC4C4C69; |
| CHECKREG r5, 0xE6263550; |
| CHECKREG r6, 0xCC4CC00C; |
| CHECKREG r7, 0xE6263550; |
| |
| // The result accumulated in A1 , and stored to a reg half |
| imm32 r0, 0x3d545abd; |
| imm32 r1, 0x5ddcfec7; |
| imm32 r2, 0x712d5679; |
| imm32 r3, 0x9006d007; |
| imm32 r4, 0xafbc4d69; |
| imm32 r5, 0xd23590db; |
| imm32 r6, 0xd00ca00d; |
| imm32 r7, 0x6d8ed00f; |
| R0.H = ( A1 = R1.L * R0.L ) (M), A0 += R1.L * R0.L (S2RND); |
| R1 = A1.w; |
| R2.H = ( A1 = R2.L * R3.H ) (M), A0 -= R2.H * R3.L (S2RND); |
| R3 = A1.w; |
| R4.H = ( A1 += R4.H * R5.L ) (M), A0 = R4.H * R5.H (S2RND); |
| R5 = A1.w; |
| R6.H = ( A1 += R6.H * R7.H ) (M), A0 += R6.L * R7.H (S2RND); |
| R7 = A1.w; |
| CHECKREG r0, 0xFF225ABD; |
| CHECKREG r1, 0xFF910EEB; |
| CHECKREG r2, 0x614C5679; |
| CHECKREG r3, 0x30A616D6; |
| CHECKREG r4, 0x06764D69; |
| CHECKREG r5, 0x033B2CAA; |
| CHECKREG r6, 0xDD6BA00D; |
| CHECKREG r7, 0xEEB5AF52; |
| |
| // The result accumulated in A1 MM=0, and stored to a reg half (MNOP) |
| imm32 r0, 0x83e45abd; |
| imm32 r1, 0xe8befec7; |
| imm32 r2, 0xce84e679; |
| imm32 r3, 0x1ce80e07; |
| imm32 r4, 0xe1ce85e9; |
| imm32 r5, 0x921ce80e; |
| imm32 r6, 0x79019e8d; |
| imm32 r7, 0x679e90e8; |
| R0.H = ( A1 += R1.L * R0.L ) (M,S2RND); |
| R1 = A1.w; |
| R2.H = ( A1 = R2.L * R3.H ) (M,S2RND); |
| R3 = A1.w; |
| R4.H = ( A1 += R4.H * R5.L ) (M,S2RND); |
| R5 = A1.w; |
| R6.H = ( A1 -= R6.H * R7.H ) (M,S2RND); |
| R7 = A1.w; |
| CHECKREG r0, 0xDC8D5ABD; |
| CHECKREG r1, 0xEE46BE3D; |
| CHECKREG r2, 0xFA3CE679; |
| CHECKREG r3, 0xFD1E19A8; |
| CHECKREG r4, 0xC37E85E9; |
| CHECKREG r5, 0xE1BF22EC; |
| CHECKREG r6, 0x80009E8D; |
| CHECKREG r7, 0xB0C50D4E; |
| |
| |
| |
| pass |