1 # Test a few (W32) corner cases
4 .include "testutils.inc"
8 dmm32 ASTAT, (0x68b0ca90 | _VS | _AV1S | _AV0S | _CC | _AC0_COPY | _AN | _AZ);
9 dmm32 A1.w, 0x70da33ff;
10 dmm32 A1.x, 0x0000000f;
13 A1 += R0.L * R1.L (M, W32);
14 checkreg A1.w, 0x7fffffff;
15 checkreg A1.x, 0x00000000;
16 checkreg ASTAT, (0x68b0ca90 | _VS | _AV1S | _AV1 | _AV0S | _CC | _AC0_COPY | _AN | _AZ);
18 dmm32 ASTAT, (0x18300c10 | _VS | _AV1S | _AN);
19 dmm32 A0.w, 0x1096b1c1;
20 dmm32 A0.x, 0xfffffff1;
23 A0 -= R6.L * R7.L (W32);
24 checkreg A0.w, 0x80000000;
25 checkreg A0.x, 0xffffffff;
26 checkreg ASTAT, (0x18300c10 | _VS | _AV1S | _AV0S | _AV0 | _AN);
28 dmm32 ASTAT, (0x68508800 | _VS | _AV1S | _AV0S | _CC | _AZ);
29 dmm32 A0.w, 0x30c8f917;
30 dmm32 A0.x, 0xffffffc8;
33 A0 -= R3.L * R4.L (W32);
34 checkreg A0.w, 0x80000000;
35 checkreg A0.x, 0xffffffff;
36 checkreg ASTAT, (0x68508800 | _VS | _AV1S | _AV0S | _AV0 | _CC | _AZ);
38 dmm32 ASTAT, (0x58708e90 | _VS | _AV0 | _AC1 | _AC0 | _AQ | _AC0_COPY);
39 dmm32 A0.w, 0x13de4c3d;
40 dmm32 A0.x, 0xffffffa5;
43 A0 -= R0.L * R2.H (W32);
44 checkreg A0.w, 0x80000000;
45 checkreg A0.x, 0xffffffff;
46 checkreg ASTAT, (0x58708e90 | _VS | _AV0S | _AV0 | _AC1 | _AC0 | _AQ | _AC0_COPY);
48 dmm32 ASTAT, (0x70800280 | _VS | _AV1S | _AC1 | _AQ | _CC | _AC0_COPY);
49 dmm32 A0.w, 0x80140410;
50 dmm32 A0.x, 0x00000000;
53 A0 += R4.L * R1.H (W32);
54 checkreg A0.w, 0x7fffffff;
55 checkreg A0.x, 0x00000000;
56 checkreg ASTAT, (0x70800280 | _VS | _AV1S | _AV0S | _AV0 | _AC1 | _AQ | _CC | _AC0_COPY);
58 dmm32 ASTAT, (0x0060c610 | _VS | _AC1 | _AC0 | _AC0_COPY | _AN | _AZ);
59 dmm32 A1.w, 0x1794b937;
60 dmm32 A1.x, 0xfffffff5;
62 A1 -= R6.L * R6.L (W32);
63 checkreg A1.w, 0x80000000;
64 checkreg A1.x, 0xffffffff;
65 checkreg ASTAT, (0x0060c610 | _VS | _AV1S | _AV1 | _AC1 | _AC0 | _AC0_COPY | _AN | _AZ);
67 dmm32 ASTAT, (0x2c600410 | _VS | _AV0S | _AC1 | _CC | _AN);
68 dmm32 A1.w, 0x2d03ef79;
69 dmm32 A1.x, 0x00000079;
72 A1 += R6.L * R5.H (W32);
73 checkreg A1.w, 0x7fffffff;
74 checkreg A1.x, 0x00000000;
75 checkreg ASTAT, (0x2c600410 | _VS | _AV1S | _AV1 | _AV0S | _AC1 | _CC | _AN);
77 dmm32 ASTAT, (0x5cf04e10 | _VS | _AV0S | _AC1 | _CC | _AC0_COPY);
78 dmm32 A0.w, 0x4d50b3f0;
79 dmm32 A0.x, 0xfffffffc;
82 A0 += R4.L * R7.L (W32);
83 checkreg A0.w, 0x80000000;
84 checkreg A0.x, 0xffffffff;
85 checkreg ASTAT, (0x5cf04e10 | _VS | _AV0S | _AV0 | _AC1 | _CC | _AC0_COPY);
88 dmm32 ASTAT, (0x28908000 | _VS | _V | _AV1S | _AV0S | _AQ | _V_COPY | _AN);
89 dmm32 A1.w, 0xc94e99f1;
90 dmm32 A1.x, 0x00000021;
93 A1 += R7.L * R4.L (M, W32);
94 checkreg A1.w, 0x7fffffff;
95 checkreg A1.x, 0x00000000;
96 checkreg ASTAT, (0x28908000 | _VS | _V | _AV1S | _AV1 | _AV0S | _AQ | _V_COPY | _AN);
98 dmm32 ASTAT, (0x34708a00 | _VS | _AV0S | _AQ | _CC | _AC0_COPY);
99 dmm32 A1.w, 0xf61f316d;
100 dmm32 A1.x, 0x00000061;
101 imm32 R1, 0x86f0ffff;
102 imm32 R3, 0x791048c5;
103 A1 += R1.L * R3.L (M, W32);
104 checkreg A1.w, 0x7fffffff;
105 checkreg A1.x, 0x00000000;
106 checkreg ASTAT, (0x34708a00 | _VS | _AV1S | _AV1 | _AV0S | _AQ | _CC | _AC0_COPY);
108 dmm32 ASTAT, (0x5020c280 | _VS | _V | _AC1 | _AC0 | _V_COPY);
109 dmm32 A1.w, 0x8700591f;
110 dmm32 A1.x, 0x00000007;
111 imm32 R2, 0x145b00b1;
112 imm32 R3, 0x7fffffff;
113 A1 -= R3.L * R2.H (M, W32);
114 checkreg A1.w, 0x7fffffff;
115 checkreg A1.x, 0x00000000;
116 checkreg ASTAT, (0x5020c280 | _VS | _V | _AV1S | _AV1 | _AC1 | _AC0 | _V_COPY);
118 dmm32 ASTAT, (0x00000290 | _VS | _V | _AV1S | _AV0S | _AC1 | _AQ | _CC | _V_COPY);
119 dmm32 A0.w, 0xfe84e1ec;
120 dmm32 A0.x, 0xffffffff;
121 imm32 R1, 0x07e73e7b;
122 imm32 R3, 0x00033e7b;
123 A0 -= R3.L * R1.H (W32);
124 checkreg A0.w, 0xfaa965f2;
125 checkreg A0.x, 0xffffffff;
126 checkreg ASTAT, (0x00000290 | _VS | _V | _AV1S | _AV0S | _AC1 | _AQ | _CC | _V_COPY);
128 dmm32 ASTAT, (0x78204a80 | _VS | _AV1S | _CC | _AN);
129 dmm32 A0.w, 0xca398210;
130 dmm32 A0.x, 0xffffffff;
131 imm32 R3, 0xffff0000;
132 imm32 R7, 0x00000000;
133 A0 += R7.L * R3.L (W32);
134 checkreg ASTAT, (0x78204a80 | _VS | _AV1S | _CC | _AN);
136 dmm32 ASTAT, (0x04208890 | _VS | _AC1 | _AC0_COPY);
137 dmm32 A0.w, 0x224cbaee;
138 dmm32 A0.x, 0x00000000;
139 imm32 R3, 0x3db86584;
140 imm32 R6, 0xdb505ed8;
141 A0 -= R6.L * R3.H (W32);
142 checkreg A0.w, 0xf491746e;
143 checkreg A0.x, 0xffffffff;
144 checkreg ASTAT, (0x04208890 | _VS | _AC1 | _AC0_COPY);
146 dmm32 ASTAT, (0x3c908600 | _VS | _AV1S | _AV0S | _AC0 | _AQ | _AC0_COPY);
147 dmm32 A0.w, 0x03f7c0ec;
148 dmm32 A0.x, 0x00000000;
149 imm32 R1, 0x1c25c7b4;
150 imm32 R5, 0x3f7da612;
151 A0 -= R5.L * R1.L (W32);
152 checkreg A0.w, 0xdc6a3b9c;
153 checkreg A0.x, 0xffffffff;
154 checkreg ASTAT, (0x3c908600 | _VS | _AV1S | _AV0S | _AC0 | _AQ | _AC0_COPY);
156 dmm32 ASTAT, (0x7cb08680 | _VS | _AQ | _CC | _AN);
157 dmm32 A0.w, 0xdc7c243c;
158 dmm32 A0.x, 0xffffffff;
159 imm32 R0, 0xe2ccef4c;
160 imm32 R5, 0x7fff8000;
161 A0 += R5.L * R0.L (W32);
162 checkreg A0.w, 0xed30243c;
163 checkreg A0.x, 0xffffffff;
164 checkreg ASTAT, (0x7cb08680 | _VS | _AQ | _CC | _AN);
166 dmm32 ASTAT, (0x78f00080 | _VS | _V | _AV1S | _AC1 | _AQ | _V_COPY | _AN);
167 dmm32 A0.w, 0x39180f38;
168 dmm32 A0.x, 0x00000000;
169 imm32 R4, 0x01308ac1;
170 imm32 R6, 0x7ffff8fd;
171 A0 = R6.L * R4.H (W32);
172 checkreg A0.w, 0xffef58e0;
173 checkreg A0.x, 0xffffffff;
174 checkreg ASTAT, (0x78f00080 | _VS | _V | _AV1S | _AC1 | _AQ | _V_COPY | _AN);
176 dmm32 ASTAT, (0x7050c090 | _VS | _V | _AV1S | _AV0S | _AC0 | _V_COPY | _AC0_COPY | _AN);
177 dmm32 A1.w, 0x010909b0;
178 dmm32 A1.x, 0x00000000;
179 imm32 R0, 0x80000000;
180 imm32 R6, 0x6ad06150;
181 A1 = R6.L * R0.H (W32);
182 checkreg A1.w, 0x9eb00000;
183 checkreg A1.x, 0xffffffff;
184 checkreg ASTAT, (0x7050c090 | _VS | _V | _AV1S | _AV0S | _AC0 | _V_COPY | _AC0_COPY | _AN);
186 dmm32 ASTAT, (0x68c04c10 | _VS | _V | _AV0S | _AC0 | _AQ | _V_COPY | _AN);
187 dmm32 A0.w, 0x43687862;
188 dmm32 A0.x, 0x00000000;
189 imm32 R2, 0xff278000;
190 imm32 R4, 0x0000436a;
191 A0 += R2.L * R4.L (W32);
192 checkreg A0.w, 0xfffe7862;
193 checkreg A0.x, 0xffffffff;
194 checkreg ASTAT, (0x68c04c10 | _VS | _V | _AV0S | _AC0 | _AQ | _V_COPY | _AN);
196 dmm32 ASTAT, (0x74a00200 | _AV1 | _AV0S | _AV0 | _AC1 | _V_COPY | _AC0_COPY | _AN | _AZ);
197 dmm32 A1.w, 0x64c15e6b;
198 dmm32 A1.x, 0xffffff87;
199 imm32 R4, 0x30b3e20d;
200 imm32 R7, 0x4a562069;
201 A1 = R4.L * R7.H (M, W32);
202 checkreg A1.w, 0xf74db25e;
203 checkreg A1.x, 0xffffffff;
204 checkreg ASTAT, (0x74a00200 | _AV0S | _AV0 | _AC1 | _V_COPY | _AC0_COPY | _AN | _AZ);
206 dmm32 ASTAT, (0x70f08410 | _AV0 | _AC1 | _AC0_COPY | _AN | _AZ);
207 dmm32 A0.w, 0x5f011b0d;
208 dmm32 A0.x, 0xffffff86;
209 imm32 R3, 0x21f93a90;
210 imm32 R4, 0x1c82d429;
211 A0 = R3.H * R4.L (W32);
212 checkreg A0.w, 0xf45d49c2;
213 checkreg A0.x, 0xffffffff;
214 checkreg ASTAT, (0x70f08410 | _AC1 | _AC0_COPY | _AN | _AZ);