1//Original:/proj/frio/dv/testcases/core/c_cc_flag_ccmv_depend/c_cc_flag_ccmv_depend.dsp
2// Spec Reference: ccflag followed by ccmv (# stalls)
3# mach: bfin
4
5#include "test.h"
6.include "testutils.inc"
7	start
8
9	R0 = 0;
10	ASTAT = R0;
11	imm32 r0, 0xa08d2311;
12	imm32 r1, 0x10120040;
13	imm32 r2, 0x62b61557;
14	imm32 r3, 0x07300007;
15	imm32 r4, 0x00740088;
16	imm32 r5, 0x609950aa;
17	imm32 r6, 0x20bb06cc;
18	imm32 r7, 0xd90e108f;
19
20	imm32 p1, 0x1401101f;
21	imm32 p2, 0x3204108e;
22	imm32 fp, 0xd93f1084;
23	imm32 p4, 0xeb04106f;
24	imm32 p5, 0xa90e5089;
25
26	CC = R7;	// cc2dreg
27	IF CC R0 = R3;	// ccmov
28	R6 = R0 + R4;
29
30	CC = ! CC;	// cc2dreg
31	IF CC R1 = P1;	// ccmov
32
33	CC = R5 < R1;	// ccflag
34	R1 = ASTAT;
35	IF !CC R2 = R5;	// ccmov
36
37	CC = R2 == R3;	// ccflag
38	IF CC P1 = R4;	// ccmov
39
40	CC = ! CC;
41	CC = R7 < R5;
42	IF CC P2 = P5;	// ccmov
43
44	CC = P5 == 3;
45	IF CC FP = R2;	// ccmov
46
47	R3 = ( A1 = R7.L * R4.L ),  R2 = ( A0 = R7.H * R4.H )  (S2RND);	// dsp32mac pair
48
49	CC = A0 == A1;
50	IF !CC R3 = R6;	// ccmov
51	R7 = R3 + R2;
52
53	A0 += A1 (W32);	// dsp32alu a0 + a1
54	CC = A0 < A1;
55	IF CC R4 = P4;	// ccmov
56	R6 = R4;
57
58	R2.H = ( A1 = R2.L * R3.L ), A0 = R2.H * R3.L;	// dsp32mac
59	CC = A0 <= A1;
60	IF CC R5 = P5;	// ccmov
61
62	A1 = R2.L * R3.L, A0 += R2.L * R3.H;	// dsp32mac
63	CC = A0 <= A1;
64	IF CC P5 = R6;	// ccmov
65
66	CHECKREG r0, 0x07300007;
67	CHECKREG r1, (_AC0|_AC0_COPY);
68	CHECKREG r2, 0x00766960;
69	CHECKREG r3, 0x07A4008F;
70	CHECKREG r4, 0xEB04106F;
71	CHECKREG r5, 0xA90E5089;
72	CHECKREG r6, 0xEB04106F;
73	CHECKREG r7, 0x075D69EF;
74	CHECKREG p1, 0x1401101F;
75	CHECKREG p2, 0xA90E5089;
76	CHECKREG fp, 0xD93F1084;
77	CHECKREG p4, 0xEB04106F;
78	CHECKREG p5, 0xA90E5089;
79
80	pass
81