1//Original:/testcases/core/c_brcc_kills_dhits/c_brcc_kills_dhits.dsp 2// Spec Reference: brcc kills data cache hits 3# mach: bfin 4 5.include "testutils.inc" 6 start 7 8 imm32 r0, 0x00000000; 9 imm32 r1, 0x00000001; 10 imm32 r2, 0x00000002; 11 imm32 r3, 0x00000003; 12 imm32 r4, 0x00000004; 13 imm32 r5, 0x00000005; 14 imm32 r6, 0x00000006; 15 imm32 r7, 0x00000007; 16 imm32 p1, 0x00000011; 17 imm32 p2, 0x00000012; 18.ifndef BFIN_HOST 19 imm32 p3, 0x00000013; 20.endif 21 imm32 p4, 0x00000014; 22 23 loadsym P5, DATA0; 24 loadsym I0, DATA1; 25 26begin: 27 ASTAT = R0; // clear CC 28 IF !CC JUMP LABEL1; // (bp); 29 CC = R4 < R5; // CC FLAG killed 30 R1 = 21; 31LABEL1: 32 IF !CC JUMP LABEL2; // (bp); 33 CC = ! CC; 34LABEL2: 35 IF !CC JUMP LABEL3; // (bp); 36 R2 = - R2; // ALU2op killed 37LABEL3: 38 IF !CC JUMP LABEL4; 39 R3 <<= 2; // LOGI2op killed 40LABEL4: 41 IF !CC JUMP LABEL5; 42 R0 = R1 + R2; // COMP3op killed 43LABEL5: 44 IF !CC JUMP LABEL6; 45 R4 += 3; // COMPI2opD killed 46LABEL6: 47 IF !CC JUMP LABEL7; // (bp); 48 R5 = 25; // LDIMMHALF killed 49LABEL7: 50 IF !CC JUMP LABEL8; 51 R6 = CC; // CC2REG killed 52LABEL8: 53 IF !CC JUMP LABEL9; 54 JUMP.S BAD1; // UJUMP killed 55LABEL9: 56 IF !CC JUMP LABELCHK1; 57BAD1: 58 R7 = [ P5 ]; // LDST killed 59 60LABELCHK1: 61 CHECKREG r0, 0x00000000; 62 CHECKREG r1, 0x00000001; 63 CHECKREG r2, 0x00000002; 64 CHECKREG r3, 0x00000003; 65 CHECKREG r4, 0x00000004; 66 CHECKREG r5, 0x00000005; 67 CHECKREG r6, 0x00000006; 68 CHECKREG r7, 0x00000007; 69 70LABEL10: 71 IF !CC JUMP LABEL11; 72 R1 = ( A1 += R4.L * R5.H ), A0 += R4.H * R5.L; 73// DSP32MAC killed 74 75LABEL11: 76 IF !CC JUMP LABEL12; 77 R2 = R2 +|+ R3; // DSP32ALU killed 78 79LABEL12: 80 IF !CC JUMP LABEL13; 81 R3 = LSHIFT R2 BY R3.L (V); // dsp32shift killed 82 83LABEL13: 84 IF !CC JUMP LABEL14; 85 R4.H = R1.L << 6; // DSP32SHIFTIMM killed 86 87LABEL14: 88 IF !CC JUMP LABEL15; 89 P2 = P1; // REGMV PREG-PREG killed 90 91LABEL15: 92 IF !CC JUMP LABEL16; 93 R5 = P1; // REGMV Pr-to-Dr killed 94 95LABEL16: 96 IF !CC JUMP LABEL17; 97 ASTAT = R2; // REGMV Dr-to-sys killed 98 99LABEL17: 100 IF !CC JUMP LABEL18; 101 R6 = ASTAT; // REGMV sys-to-Dr killed 102 103LABEL18: 104 IF !CC JUMP LABEL19; 105 [ I0 ] = R2; // DSPLDST store killed 106 107LABEL19: 108 IF !CC JUMP end; 109 R7 = [ I0 ]; // DSPLDST load killed 110 111end: 112 113 CHECKREG r0, 0x00000000; 114 CHECKREG r1, 0x00000001; 115 CHECKREG r2, 0x00000002; 116 CHECKREG r3, 0x00000003; 117 CHECKREG r4, 0x00000004; 118 CHECKREG r5, 0x00000005; 119 CHECKREG r6, 0x00000006; 120 CHECKREG r7, 0x00000007; 121 122 pass 123 124 .data 125DATA0: 126 .dd 0x000a0000 127 .dd 0x000b0001 128 .dd 0x000c0002 129 .dd 0x000d0003 130 .dd 0x000e0004 131 132DATA1: 133 .dd 0x00f00100 134 .dd 0x00e00101 135 .dd 0x00d00102 136 .dd 0x00c00103 137