| //Original:/proj/frio/dv/testcases/core/c_cc_flag_ccmv_depend/c_cc_flag_ccmv_depend.dsp |
| // Spec Reference: ccflag followed by ccmv (# stalls) |
| # mach: bfin |
| |
| #include "test.h" |
| .include "testutils.inc" |
| start |
| |
| R0 = 0; |
| ASTAT = R0; |
| imm32 r0, 0xa08d2311; |
| imm32 r1, 0x10120040; |
| imm32 r2, 0x62b61557; |
| imm32 r3, 0x07300007; |
| imm32 r4, 0x00740088; |
| imm32 r5, 0x609950aa; |
| imm32 r6, 0x20bb06cc; |
| imm32 r7, 0xd90e108f; |
| |
| imm32 p1, 0x1401101f; |
| imm32 p2, 0x3204108e; |
| imm32 fp, 0xd93f1084; |
| imm32 p4, 0xeb04106f; |
| imm32 p5, 0xa90e5089; |
| |
| CC = R7; // cc2dreg |
| IF CC R0 = R3; // ccmov |
| R6 = R0 + R4; |
| |
| CC = ! CC; // cc2dreg |
| IF CC R1 = P1; // ccmov |
| |
| CC = R5 < R1; // ccflag |
| R1 = ASTAT; |
| IF !CC R2 = R5; // ccmov |
| |
| CC = R2 == R3; // ccflag |
| IF CC P1 = R4; // ccmov |
| |
| CC = ! CC; |
| CC = R7 < R5; |
| IF CC P2 = P5; // ccmov |
| |
| CC = P5 == 3; |
| IF CC FP = R2; // ccmov |
| |
| R3 = ( A1 = R7.L * R4.L ), R2 = ( A0 = R7.H * R4.H ) (S2RND); // dsp32mac pair |
| |
| CC = A0 == A1; |
| IF !CC R3 = R6; // ccmov |
| R7 = R3 + R2; |
| |
| A0 += A1 (W32); // dsp32alu a0 + a1 |
| CC = A0 < A1; |
| IF CC R4 = P4; // ccmov |
| R6 = R4; |
| |
| R2.H = ( A1 = R2.L * R3.L ), A0 = R2.H * R3.L; // dsp32mac |
| CC = A0 <= A1; |
| IF CC R5 = P5; // ccmov |
| |
| A1 = R2.L * R3.L, A0 += R2.L * R3.H; // dsp32mac |
| CC = A0 <= A1; |
| IF CC P5 = R6; // ccmov |
| |
| CHECKREG r0, 0x07300007; |
| CHECKREG r1, (_AC0|_AC0_COPY); |
| CHECKREG r2, 0x00766960; |
| CHECKREG r3, 0x07A4008F; |
| CHECKREG r4, 0xEB04106F; |
| CHECKREG r5, 0xA90E5089; |
| CHECKREG r6, 0xEB04106F; |
| CHECKREG r7, 0x075D69EF; |
| CHECKREG p1, 0x1401101F; |
| CHECKREG p2, 0xA90E5089; |
| CHECKREG fp, 0xD93F1084; |
| CHECKREG p4, 0xEB04106F; |
| CHECKREG p5, 0xA90E5089; |
| |
| pass |