c_cc_flagdreg_mvbrsft_sn.s revision 1.1
1//Original:/proj/frio/dv/testcases/core/c_cc_flagdreg_mvbrsft_sn/c_cc_flagdreg_mvbrsft_sn.dsp 2// Spec Reference: cc: set (ccflag & cc2dreg) used (ccmv & brcc & dsp32sft) 3# mach: bfin 4 5.include "testutils.inc" 6 start 7 8 imm32 r0, 0xa08d2311; 9 imm32 r1, 0x10120040; 10 imm32 r2, 0x62b61557; 11 imm32 r3, 0x07300007; 12 imm32 r4, 0x00740088; 13 imm32 r5, 0x609950aa; 14 imm32 r6, 0x20bb06cc; 15 imm32 r7, 0xd90e108f; 16 17 imm32 p1, 0x1401101f; 18 imm32 p2, 0x3204108e; 19 imm32 p3, 0xd93f1084; 20 imm32 p4, 0xeb04106f; 21 imm32 p5, 0xa90e5089; 22 23 ASTAT = R0; 24 25 CC = R1; // cc2dreg 26 R2.H = ( A1 = R2.L * R3.L ), A0 = R2.H * R3.L; // dsp32mac 27 I0 = P1; // regmv 28 IF CC R1 = R3; // ccmov 29 CC = ! CC; // cc2dreg 30 R4.H = R1.L + R0.L (S); // dsp32alu 31 M0 = P2; // regmv 32 IF CC R3 = R2; // ccmov 33 CC = R0 < R1; // ccflag 34 R4.L = R5.L << 1; // dsp32shiftimm 35 I0 += M0; // dagmodim 36 R2 = R0 + R2; // comp3op dr plus dr 37 IF CC R4 = R5; // ccmov 38 CC = R2 == R3; // ccflag 39 R7 = R1.L * R4.L, R6 = R1.H * R4.H; // dsp32mult 40 R5 = R0 + R2; // comp3op dr plus dr 41 BITCLR( R6 , 1 ); 42 IF CC R4 = R5; // ccmov 43 CC = R0; // cc2dreg 44 A1 = R2.L * R3.L, A0 += R2.L * R3.H; // dsp32mac 45 IF !CC JUMP LABEL1; // branch on 46 CC = ! CC; // cc2dreg 47 P1.L = 0x3000; // ldimmhalf 48 A0 += A1 (W32); // dsp32alu a0 + a1 49 IF !CC JUMP LABEL2 (BP); // branch 50LABEL1: 51 R6 = R6 + R2; 52 JUMP.S END; 53LABEL2: 54 R7 = R5 - R7; 55 CC = R0 < R1; // ccflag 56 P2 = A0.w; 57 IF CC JUMP END (BP); // branch 58 P3 = A1.w; 59 R5 = R5 + R7; 60 61END: 62 63 CHECKREG r0, 0xA08D2311; 64 CHECKREG r1, 0x07300007; 65 CHECKREG r2, 0xA08E3868; 66 CHECKREG r3, 0x07300007; 67 CHECKREG r4, 0x609950AA; 68 CHECKREG r5, 0x411B5B79; 69 CHECKREG r6, 0x056C9760; 70 CHECKREG r7, 0x4116F22D; 71 CHECKREG p1, 0x14013000; 72 CHECKREG p2, 0x033352A4; 73 CHECKREG p3, 0xD93F1084; 74 75 imm32 r0, 0x408d2711; 76 imm32 r1, 0x15124040; 77 imm32 r2, 0x62661557; 78 imm32 r3, 0x073b0007; 79 imm32 r4, 0x01f49088; 80 imm32 r5, 0x6e2959aa; 81 imm32 r6, 0xa0b506cc; 82 imm32 r7, 0x00000002; 83 84 CC = R1; // cc2dreg 85 P1 = -15; // compi2opp_pr_eq_i7 86 R2 = ROT R2 BY 1; // dsp32shiftim_rot 87 CC = ! CC; // cc2dreg 88 R3 >>= R7; // alu2op sft 89 R4 = ROT R0 BY -3; // dsp32shiftim_rot 90 CC = R0 < R1; // ccflag 91 R3 = ( A1 = R7.L * R4.L ), R2 = ( A0 = R7.H * R4.H ) (S2RND); // dsp32mac pair 92 R5 = R0 + R2; // comp3op dr plus dr 93 R6 = ROT R4 BY 5; // dsp32shiftim_rot 94 CC = R2 == R3; // ccflag 95 P2 = R1; // regmv 96 R4.H = R1.L + R3.H (S); // dsp32alu 97 I0 = P1; // regmv 98 IF CC R4 = R5; // ccmov 99 CC = R0; // cc2dreg 100 R1 = R0 +|- R1 , R6 = R0 -|+ R1 (ASR); // dsp32alu sft 101 I0 += 2; 102 P3 = I0; 103 R3.L = R5.L << 1; // dsp32shiftimm 104 R7 = ROT R6 BY R7.L; // dsp32shiftim_rot 105 106 CHECKREG r0, 0x408D2711; 107 CHECKREG r1, 0x2ACFF368; 108 CHECKREG r2, 0x00000000; 109 CHECKREG r3, 0xFFFD4E22; 110 CHECKREG r4, 0x403DA4E2; 111 CHECKREG r5, 0x408D2711; 112 CHECKREG r6, 0x15BD33A8; 113 CHECKREG r7, 0x56F4CEA2; 114 CHECKREG p1, 0xFFFFFFF1; 115 CHECKREG p2, 0x15124040; 116 CHECKREG p3, 0xFFFFFFF3; 117 118 pass 119