1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
//Original:/testcases/seq/c_br_preg_killed_ac/c_br_preg_killed_ac.dsp
// Spec Reference: brcc kills data cache hits
# mach: bfin
.include "testutils.inc"
start
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;
P4 = 4;
P2 = 2;
loadsym P5, DATA0;
loadsym I0, DATA1;
begin:
ASTAT = R0; // clear CC
IF !CC JUMP LABEL1; // (bp);
CC = R4 < R5; // CC FLAG killed
R1 = 21;
LABEL1:
JUMP ( PC + P4 ); //brf LABEL2; // (bp);
CC = ! CC;
LABEL2:
JUMP ( PC + P4 ); //brf LABEL3; // (bp);
R2 = - R2; // ALU2op killed
LABEL3:
JUMP ( PC + P4 ); //brf LABEL4;
R3 <<= 2; // LOGI2op killed
LABEL4:
JUMP ( PC + P4 ); //brf LABEL5;
R0 = R1 + R2; // COMP3op killed
LABEL5:
JUMP ( PC + P4 ); //brf LABEL6;
R4 += 3; // COMPI2opD killed
LABEL6:
JUMP ( PC + P4 ); //brf LABEL7; // (bp);
R5 = 25; // LDIMMHALF killed
LABEL7:
JUMP ( PC + P4 ); //brf LABEL8;
R6 = CC; // CC2REG killed
LABEL8:
JUMP ( PC + P4 ); //brf LABEL9;
JUMP ( PC + P2 ); //BAD1; // UJUMP killed
LABEL9:
JUMP ( PC + P4 ); //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
|