123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- //Original:/testcases/seq/c_br_preg_stall_ac/c_br_preg_stall_ac.dsp
- // Spec Reference: brcc kills data cache hits
- # mach: bfin
- .include "testutils.inc"
- start
- /* This test likes to assume the current [SP] is valid */
- SP += -12;
- imm32 r0, 0x00000000;
- imm32 r1, 0x00000001;
- imm32 r2, 0x00000002;
- imm32 r3, 0x00000003;
- imm32 r4, 0x00000004;
- imm32 r5, 0x00000005;
- imm32 r6, 0x00000006;
- imm32 r7, 0x00000007;
- imm32 p1, 0x00000011;
- imm32 p2, 0x00000012;
- .ifndef BFIN_HOST;
- imm32 p3, 0x00000013;
- .endif
- imm32 p4, 0x00000014;
- P1 = 4;
- P2 = 6;
- loadsym P5, DATA0;
- loadsym I0, DATA1;
- begin:
- ASTAT = R0; // clear CC
- R0 = CC;
- IF CC R1 = R0;
- [ SP ] = P2;
- P2 = [ SP ];
- JUMP ( PC + P2 ); //brf LABEL1; // (bp);
- CC = R4 < R5; // CC FLAG killed
- R1 = 21;
- LABEL1:
- JUMP ( PC + P1 ); // EX1 relative to 'brf LABEL1'
- CC = ! CC;
- LABEL2:
- JUMP ( PC + P1 ); //brf LABEL3;
- JUMP ( PC + P2 ); //BAD1; // UJUMP killed
- LABEL3:
- JUMP ( PC + P1 ); //brf LABELCHK1;
- BAD1:
- R7 = [ P5 ]; // LDST killed
- LABELCHK1:
- CHECKREG r0, 0x00000000;
- CHECKREG r1, 0x00000001;
- CHECKREG r2, 0x00000002;
- CHECKREG r3, 0x00000003;
- CHECKREG r4, 0x00000004;
- CHECKREG r5, 0x00000005;
- CHECKREG r6, 0x00000006;
- CHECKREG r7, 0x00000007;
- pass
- .data
- DATA0:
- .dd 0x000a0000
- .dd 0x000b0001
- .dd 0x000c0002
- .dd 0x000d0003
- .dd 0x000e0004
- DATA1:
- .dd 0x00f00100
- .dd 0x00e00101
- .dd 0x00d00102
- .dd 0x00c00103
|