123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 |
- //Original:/testcases/core/c_dsp32mac_dr_a1_m/c_dsp32mac_dr_a1_m.dsp
- // Spec Reference: dsp32mac dr a1 m
- # mach: bfin
- .include "testutils.inc"
- start
- imm32 r0, 0xab235675;
- imm32 r1, 0xcfba5127;
- imm32 r2, 0x13246705;
- imm32 r3, 0x00060007;
- imm32 r4, 0x90abcd09;
- imm32 r5, 0x10acefdb;
- imm32 r6, 0x000c000d;
- imm32 r7, 0x1246700f;
- A1 = A0 = 0;
- // The result accumulated in A1 , and stored to a reg half
- imm32 r0, 0x13545abd;
- imm32 r1, 0xadbcfec7;
- imm32 r2, 0xa1245679;
- imm32 r3, 0x00060007;
- imm32 r4, 0xefbc4569;
- imm32 r5, 0x1235000b;
- imm32 r6, 0x000c000d;
- imm32 r7, 0x678e000f;
- R0.H = ( A1 += R1.L * R0.L ), A0 = R1.L * R0.L;
- R1 = A1.w;
- R2.H = ( A1 = R2.L * R3.H ), A0 = R2.H * R3.L;
- R3 = A1.w;
- R4.H = ( A1 = R4.H * R5.L ), A0 += R4.H * R5.H;
- R5 = A1.w;
- R6.H = ( A1 += R6.H * R7.H ), A0 += R6.L * R7.H;
- R7 = A1.w;
- CHECKREG r0, 0xFF225ABD;
- CHECKREG r1, 0xFF221DD6;
- CHECKREG r2, 0x00045679;
- CHECKREG r3, 0x00040DAC;
- CHECKREG r4, 0xFFFF4569;
- CHECKREG r5, 0xFFFE9A28;
- CHECKREG r6, 0x0008000D;
- CHECKREG r7, 0x00084F78;
- // The result accumulated in A1, and stored to a reg half (MNOP)
- imm32 r0, 0x13545abd;
- imm32 r1, 0xadbcfec7;
- imm32 r2, 0xa1245679;
- imm32 r3, 0x00060007;
- imm32 r4, 0xefbc4569;
- imm32 r5, 0x1235000b;
- imm32 r6, 0x000c000d;
- imm32 r7, 0x678e000f;
- R0.H = ( A1 += R1.L * R0.L );
- R1 = A1.w;
- R2.H = ( A1 = R2.L * R3.H );
- R3 = A1.w;
- R4.H = ( A1 += R4.H * R5.L );
- R5 = A1.w;
- R6.H = ( A1 = R6.H * R7.H );
- R7 = A1.w;
- CHECKREG r0, 0xFF2A5ABD;
- CHECKREG r1, 0xFF2A6D4E;
- CHECKREG r2, 0x00045679;
- CHECKREG r3, 0x00040DAC;
- CHECKREG r4, 0x00034569;
- CHECKREG r5, 0x0002A7D4;
- CHECKREG r6, 0x000A000D;
- CHECKREG r7, 0x0009B550;
- // The result accumulated in A1 , and stored to a reg half (MNOP)
- imm32 r0, 0x13545abd;
- imm32 r1, 0xadbcfec7;
- imm32 r2, 0xa1245679;
- imm32 r3, 0x00060007;
- imm32 r4, 0xefbc4569;
- imm32 r5, 0x1235000b;
- imm32 r6, 0x000c000d;
- imm32 r7, 0x678e000f;
- R0.H = A1 , A0 += R1.L * R0.L;
- R1 = A1.w;
- R2.H = A1 , A0 = R2.H * R3.L;
- R3 = A1.w;
- R4.H = A1 , A0 = R4.H * R5.H;
- R5 = A1.w;
- R6.H = A1 , A0 += R6.L * R7.H;
- R7 = A1.w;
- CHECKREG r0, 0x000A5ABD;
- CHECKREG r1, 0x0009B550;
- CHECKREG r2, 0x000A5679;
- CHECKREG r3, 0x0009B550;
- CHECKREG r4, 0x000A4569;
- CHECKREG r5, 0x0009B550;
- CHECKREG r6, 0x000A000D;
- CHECKREG r7, 0x0009B550;
- // The result accumulated in A1 , and stored to a reg half
- imm32 r0, 0x13545abd;
- imm32 r1, 0xadbcfec7;
- imm32 r2, 0xa1245679;
- imm32 r3, 0x00060007;
- imm32 r4, 0xefbc4569;
- imm32 r5, 0x1235000b;
- imm32 r6, 0x000c000d;
- imm32 r7, 0x678e000f;
- R4.H = ( A1 += R1.L * R0.L ) (M), A0 = R1.L * R0.L;
- R5 = A1.w;
- R6.H = ( A1 = R2.L * R3.H ) (M), A0 += R2.H * R3.L;
- R7 = A1.w;
- R0.H = ( A1 = R4.H * R5.L ) (M), A0 = R4.H * R5.H;
- R1 = A1.w;
- R2.H = ( A1 = R6.H * R7.H ) (M), A0 += R6.L * R7.H;
- R3 = A1.w;
- CHECKREG r0, 0xFFB35ABD;
- CHECKREG r1, 0xFFB294B9;
- CHECKREG r2, 0x00005679;
- CHECKREG r3, 0x00000004;
- CHECKREG r4, 0xFF9B4569;
- CHECKREG r5, 0xFF9AC43B;
- CHECKREG r6, 0x0002000D;
- CHECKREG r7, 0x000206D6;
- // The result accumulated in A1 MM=0, and stored to a reg half (MNOP)
- imm32 r0, 0x83545abd;
- imm32 r1, 0xa8bcfec7;
- imm32 r2, 0xc1845679;
- imm32 r3, 0x1c080007;
- imm32 r4, 0xe1cc8569;
- imm32 r5, 0x121c080b;
- imm32 r6, 0x7001008d;
- imm32 r7, 0x678e1008;
- R6.H = ( A1 += R1.L * R0.L ) (M);
- R7 = A1.w;
- R2.H = ( A1 = R2.L * R3.H ) (M);
- R3 = A1.w;
- R0.H = ( A1 += R4.H * R5.L ) (M);
- R1 = A1.w;
- R4.H = ( A1 = R6.H * R7.H ) (M);
- R5 = A1.w;
- CHECKREG r0, 0x08855ABD;
- CHECKREG r1, 0x0885038C;
- CHECKREG r2, 0x09785679;
- CHECKREG r3, 0x0977EFC8;
- CHECKREG r4, 0xFF918569;
- CHECKREG r5, 0xFF913021;
- CHECKREG r6, 0xFF91008D;
- CHECKREG r7, 0xFF910EEF;
- imm32 r0, 0x03545abd;
- imm32 r1, 0xa0bcfec7;
- imm32 r2, 0xa1045679;
- imm32 r3, 0x00000007;
- imm32 r4, 0xefbc0569;
- imm32 r5, 0x1235100b;
- imm32 r6, 0x000c020d;
- imm32 r7, 0x678e003f;
- R4.H = ( A1 -= R1.L * R0.L ) (M), A0 -= R1.L * R0.L;
- R5 = A1.w;
- R6.H = ( A1 -= R2.L * R3.H ) (M), A0 += R2.H * R3.L;
- R7 = A1.w;
- R0.H = ( A1 += R4.H * R5.L ) (M), A0 -= R4.H * R5.H;
- R1 = A1.w;
- R2.H = ( A1 -= R6.H * R7.H ) (M), A0 -= R6.L * R7.H;
- R3 = A1.w;
- CHECKREG r0, 0x00005ABD;
- CHECKREG r1, 0x00002136;
- CHECKREG r2, 0x00005679;
- CHECKREG r3, 0x00002136;
- CHECKREG r4, 0x00000569;
- CHECKREG r5, 0x00002136;
- CHECKREG r6, 0x0000020D;
- CHECKREG r7, 0x00002136;
- // The result accumulated in A1 MM=0, and stored to a reg half (MNOP)
- imm32 r0, 0x83545abd;
- imm32 r1, 0xa8bcfec7;
- imm32 r2, 0xc1845679;
- imm32 r3, 0x1c080007;
- imm32 r4, 0xe1cc8569;
- imm32 r5, 0x121c080b;
- imm32 r6, 0x7001008d;
- imm32 r7, 0x678e1008;
- R6.H = ( A1 -= R1.L * R0.L ) (M);
- R7 = A1.w;
- R2.H = ( A1 -= R2.L * R3.H ) (M);
- R3 = A1.w;
- R0.H = ( A1 -= R4.H * R5.L ) (M);
- R1 = A1.w;
- R4.H = ( A1 -= R6.H * R7.H ) (M);
- R5 = A1.w;
- CHECKREG r0, 0xF7EA5ABD;
- CHECKREG r1, 0xF7EA0EBF;
- CHECKREG r2, 0xF6F75679;
- CHECKREG r3, 0xF6F72283;
- CHECKREG r4, 0xF7EA8569;
- CHECKREG r5, 0xF7E9DE9E;
- CHECKREG r6, 0x006F008D;
- CHECKREG r7, 0x006F124B;
- pass
|