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