1//Original:/proj/frio/dv/testcases/core/c_cc_flag_ccmv_depend/c_cc_flag_ccmv_depend.dsp 2// Spec Reference: ccflag followed by ccmv (# stalls) 3# mach: bfin 4 5#include "test.h" 6.include "testutils.inc" 7 start 8 9 R0 = 0; 10 ASTAT = R0; 11 imm32 r0, 0xa08d2311; 12 imm32 r1, 0x10120040; 13 imm32 r2, 0x62b61557; 14 imm32 r3, 0x07300007; 15 imm32 r4, 0x00740088; 16 imm32 r5, 0x609950aa; 17 imm32 r6, 0x20bb06cc; 18 imm32 r7, 0xd90e108f; 19 20 imm32 p1, 0x1401101f; 21 imm32 p2, 0x3204108e; 22 imm32 fp, 0xd93f1084; 23 imm32 p4, 0xeb04106f; 24 imm32 p5, 0xa90e5089; 25 26 CC = R7; // cc2dreg 27 IF CC R0 = R3; // ccmov 28 R6 = R0 + R4; 29 30 CC = ! CC; // cc2dreg 31 IF CC R1 = P1; // ccmov 32 33 CC = R5 < R1; // ccflag 34 R1 = ASTAT; 35 IF !CC R2 = R5; // ccmov 36 37 CC = R2 == R3; // ccflag 38 IF CC P1 = R4; // ccmov 39 40 CC = ! CC; 41 CC = R7 < R5; 42 IF CC P2 = P5; // ccmov 43 44 CC = P5 == 3; 45 IF CC FP = R2; // ccmov 46 47 R3 = ( A1 = R7.L * R4.L ), R2 = ( A0 = R7.H * R4.H ) (S2RND); // dsp32mac pair 48 49 CC = A0 == A1; 50 IF !CC R3 = R6; // ccmov 51 R7 = R3 + R2; 52 53 A0 += A1 (W32); // dsp32alu a0 + a1 54 CC = A0 < A1; 55 IF CC R4 = P4; // ccmov 56 R6 = R4; 57 58 R2.H = ( A1 = R2.L * R3.L ), A0 = R2.H * R3.L; // dsp32mac 59 CC = A0 <= A1; 60 IF CC R5 = P5; // ccmov 61 62 A1 = R2.L * R3.L, A0 += R2.L * R3.H; // dsp32mac 63 CC = A0 <= A1; 64 IF CC P5 = R6; // ccmov 65 66 CHECKREG r0, 0x07300007; 67 CHECKREG r1, (_AC0|_AC0_COPY); 68 CHECKREG r2, 0x00766960; 69 CHECKREG r3, 0x07A4008F; 70 CHECKREG r4, 0xEB04106F; 71 CHECKREG r5, 0xA90E5089; 72 CHECKREG r6, 0xEB04106F; 73 CHECKREG r7, 0x075D69EF; 74 CHECKREG p1, 0x1401101F; 75 CHECKREG p2, 0xA90E5089; 76 CHECKREG fp, 0xD93F1084; 77 CHECKREG p4, 0xEB04106F; 78 CHECKREG p5, 0xA90E5089; 79 80 pass 81