1# Verify sign extension behavior with simultaneous acc additions, and
2# verify that no ASTAT bits get changed as a result
3# mach: bfin
4#include "test.h"
5.include "testutils.inc"
6
7	start
8
9	dmm32 ASTAT, (0x60304880 | _AV1S | _AC0 | _AN | _AZ);
10	dmm32 A0.w, 0x589145b7;
11	dmm32 A0.x, 0xffffffee;
12	dmm32 A1.w, 0x0b247b05;
13	dmm32 A1.x, 0x0000005a;
14	imm32 R3, 0x1e414332;
15	imm32 R4, 0x351715b7;
16	R3 = A1.L + A1.H, R4 = A0.L + A0.H;
17	checkreg R3, 0x00008629;
18	checkreg R4, 0x00009e48;
19	checkreg ASTAT, (0x60304880 | _AV1S | _AC0 | _AN | _AZ);
20
21	dmm32 ASTAT, (0x40e0cc00 | _VS | _V | _AV1S | _AV0S | _AC0 | _CC | _V_COPY | _AC0_COPY);
22	dmm32 A0.w, 0xb2c58001;
23	dmm32 A0.x, 0x00000000;
24	dmm32 A1.w, 0xe999dc28;
25	dmm32 A1.x, 0xffffffff;
26	imm32 R0, 0xe58d5ffa;
27	imm32 R4, 0x7fff7fff;
28	R0 = A1.L + A1.H, R4 = A0.L + A0.H;
29	checkreg R0, 0xffffc5c1;
30	checkreg R4, 0xffff32c6;
31	checkreg ASTAT, (0x40e0cc00 | _VS | _V | _AV1S | _AV0S | _AC0 | _CC | _V_COPY | _AC0_COPY);
32
33	dmm32 ASTAT, (0x3420ca80 | _VS | _AV0S | _AC1 | _AC0 | _AQ | _CC);
34	dmm32 A0.w, 0xeff48350;
35	dmm32 A0.x, 0xffffffff;
36	dmm32 A1.w, 0x5a3f623a;
37	dmm32 A1.x, 0xffffffff;
38	imm32 R4, 0xffff152f;
39	imm32 R6, 0xdd13218a;
40	R4 = A1.L + A1.H, R6 = A0.L + A0.H;
41	checkreg R4, 0x0000bc79;
42	checkreg R6, 0xffff7344;
43	checkreg ASTAT, (0x3420ca80 | _VS | _AV0S | _AC1 | _AC0 | _AQ | _CC);
44
45	dmm32 ASTAT, (0x10204880 | _VS | _V | _AV1S | _AC1 | _AC0 | _AQ | _V_COPY | _AN);
46	dmm32 A0.w, 0x6da679bb;
47	dmm32 A0.x, 0xffffff96;
48	dmm32 A1.w, 0x1f5fb024;
49	dmm32 A1.x, 0x00000000;
50	imm32 R3, 0x3ebf8000;
51	imm32 R6, 0x025f2e8c;
52	R6 = A1.L + A1.H, R3 = A0.L + A0.H;
53	checkreg R3, 0x0000e761;
54	checkreg R6, 0xffffcf83;
55	checkreg ASTAT, (0x10204880 | _VS | _V | _AV1S | _AC1 | _AC0 | _AQ | _V_COPY | _AN);
56
57	dmm32 ASTAT, (0x6ca00c90 | _V | _AV1S | _AV1 | _AC0_COPY | _AN | _AZ);
58	dmm32 A0.w, 0x59abaa84;
59	dmm32 A0.x, 0xffffffe1;
60	dmm32 A1.w, 0x71541efe;
61	dmm32 A1.x, 0x00000009;
62	imm32 R0, 0x2c41e797;
63	imm32 R5, 0x7bfa5e8a;
64	R0 = A1.L + A1.H, R5 = A0.L + A0.H;
65	checkreg R0, 0x00009052;
66	checkreg R5, 0x0000042f;
67	checkreg ASTAT, (0x6ca00c90 | _V | _AV1S | _AV1 | _AC0_COPY | _AN | _AZ);
68
69	dmm32 ASTAT, (0x1c50c290 | _VS | _AV0S | _AV0 | _AC1 | _AC0 | _AQ | _AN);
70	dmm32 A0.w, 0xffffffff;
71	dmm32 A0.x, 0xffffffff;
72	dmm32 A1.w, 0xc49ca8db;
73	dmm32 A1.x, 0xffffffff;
74	imm32 R3, 0x0f62ffff;
75	imm32 R4, 0x09505188;
76	R4 = A1.L + A1.H, R3 = A0.L + A0.H;
77	checkreg R3, 0xfffffffe;
78	checkreg R4, 0xffff6d77;
79	checkreg ASTAT, (0x1c50c290 | _VS | _AV0S | _AV0 | _AC1 | _AC0 | _AQ | _AN);
80
81	dmm32 ASTAT, (0x70e04a90 | _VS | _AV0S | _AQ);
82	dmm32 A0.w, 0xd827823e;
83	dmm32 A0.x, 0xffffffff;
84	dmm32 A1.w, 0x303d11ba;
85	dmm32 A1.x, 0x00000000;
86	imm32 R1, 0x80007fff;
87	imm32 R6, 0xffc4feb3;
88	R6 = A1.L + A1.H, R1 = A0.L + A0.H;
89	checkreg R1, 0xffff5a65;
90	checkreg R6, 0x000041f7;
91	checkreg ASTAT, (0x70e04a90 | _VS | _AV0S | _AQ);
92
93	dmm32 ASTAT, (0x5c80c200 | _VS | _AV0S | _AQ | _AC0_COPY | _AN);
94	dmm32 A0.w, 0x97049850;
95	dmm32 A0.x, 0x00000000;
96	dmm32 A1.w, 0xffffa014;
97	dmm32 A1.x, 0xffffffff;
98	imm32 R0, 0x04828378;
99	imm32 R5, 0x3d9effff;
100	R0 = A1.L + A1.H, R5 = A0.L + A0.H;
101	checkreg R0, 0xffffa013;
102	checkreg R5, 0xffff2f54;
103	checkreg ASTAT, (0x5c80c200 | _VS | _AV0S | _AQ | _AC0_COPY | _AN);
104
105	dmm32 ASTAT, (0x6c604600 | _VS | _V | _AV0S | _AC1 | _AC0 | _AQ | _CC | _V_COPY | _AZ);
106	dmm32 A0.w, 0xac43c455;
107	dmm32 A0.x, 0x00000000;
108	dmm32 A1.w, 0x03de6f39;
109	dmm32 A1.x, 0x00000000;
110	imm32 R0, 0x5bbfd2d1;
111	imm32 R3, 0x22425ebc;
112	R3 = A1.L + A1.H, R0 = A0.L + A0.H;
113	checkreg R0, 0xffff7098;
114	checkreg R3, 0x00007317;
115	checkreg ASTAT, (0x6c604600 | _VS | _V | _AV0S | _AC1 | _AC0 | _AQ | _CC | _V_COPY | _AZ);
116
117	dmm32 ASTAT, (0x7cd04280 | _VS | _V | _AC1 | _AC0 | _AQ | _V_COPY | _AC0_COPY | _AN);
118	dmm32 A0.w, 0xb63ac8f5;
119	dmm32 A0.x, 0xffffffe0;
120	dmm32 A1.w, 0x358b94e8;
121	dmm32 A1.x, 0x00000000;
122	imm32 R1, 0x80007fff;
123	imm32 R6, 0x4f4a8883;
124	R6 = A1.L + A1.H, R1 = A0.L + A0.H;
125	checkreg R1, 0xffff7f2f;
126	checkreg R6, 0xffffca73;
127	checkreg ASTAT, (0x7cd04280 | _VS | _V | _AC1 | _AC0 | _AQ | _V_COPY | _AC0_COPY | _AN);
128
129	pass
130