1//Original:testcases/core/c_ldstpmod_ld_h_xh/c_ldstpmod_ld_h_xh.dsp
2// Spec Reference: c_ldstpmod load dreg h & xh
3# mach: bfin
4
5.include "testutils.inc"
6	start
7
8// set all regs
9init_i_regs 0;
10init_b_regs 0;
11init_l_regs 0;
12init_m_regs 0;
13INIT_R_REGS 0;
14I0 = P3;
15I2 = SP;
16
17// initial values
18	P1 = 0x0002;
19	P2 = 0x0002;
20	P3 = 0x0002;
21	P4 = 0x0002;
22	FP = 0x0002;
23	SP = 0x0002;
24	I1 = P3; P3 = I0; I3 = SP; SP = I2;
25	loadsym p5, DATA_ADDR_1, 0x00;
26	P3 = I1; SP = I3;
27	R0 = W [ P5 ++ P1 ] (Z);
28	R1 = W [ P5 ++ P1 ] (Z);
29	R2 = W [ P5 ++ P2 ] (Z);
30	R3 = W [ P5 ++ P3 ] (Z);
31	R4 = W [ P5 ++ P4 ] (Z);
32	R5 = W [ P5 ++ SP ] (Z);
33	R6 = W [ P5 ++ FP ] (Z);
34	CHECKREG r0, 0x0000A203;
35	CHECKREG r1, 0x00000001;
36	CHECKREG r2, 0x0000B607;
37	CHECKREG r3, 0x00009405;
38	CHECKREG r4, 0x00000A0B;
39	CHECKREG r5, 0x00000809;
40	CHECKREG r6, 0x0000CE0F;
41
42// initial values
43	P5 = 0x0002;
44	P2 = 0x0002;
45	P3 = 0x0004;
46	P4 = 0x0004;
47	FP = 0x0004;
48	SP = 0x0004;
49	I1 = P3; P3 = I0; I3 = SP; SP = I2;
50	loadsym p1, DATA_ADDR_1, 0x00;
51	P3 = I1; SP = I3;
52	R0 = W [ P1 ++ P5 ] (X);
53	R1 = W [ P1 ++ P2 ] (X);
54	R2 = W [ P1 ++ P2 ] (X);
55	R3 = W [ P1 ++ P3 ] (X);
56	R4 = W [ P1 ++ P4 ] (X);
57	R5 = W [ P1 ++ SP ] (X);
58	R6 = W [ P1 ++ FP ] (X);
59	CHECKREG r0, 0xFFFFA203;
60	CHECKREG r1, 0x00000001;
61	CHECKREG r2, 0xFFFFB607;
62	CHECKREG r3, 0xFFFF9405;
63	CHECKREG r4, 0x00000809;
64	CHECKREG r5, 0xFFFFAC0D;
65	CHECKREG r6, 0x00001011;
66
67// initial values
68	P5 = 0x0002;
69	P1 = 0x0002;
70	P3 = 0x0002;
71	P4 = 0x0004;
72	FP = 0x0006;
73	SP = 0x0002;
74	I1 = P3; P3 = I0; I3 = SP; SP = I2;
75	loadsym p2, DATA_ADDR_3, 0x06;
76	P3 = I1; SP = I3;
77	R0 = W [ P2 ++ P5 ] (Z);
78	R1 = W [ P2 ++ P1 ] (Z);
79	R2 = W [ P2 ++ P2 ] (Z);
80	R3 = W [ P2 ++ P3 ] (Z);
81	R4 = W [ P2 ++ P4 ] (Z);
82	R5 = W [ P2 ++ SP ] (Z);
83	R6 = W [ P2 ++ FP ] (Z);
84	CHECKREG r0, 0x00008445;
85	CHECKREG r1, 0x00004A4B;
86	CHECKREG r2, 0x00004849;
87	CHECKREG r3, 0x00004849;
88	CHECKREG r4, 0x00004E4F;
89	CHECKREG r5, 0x00005253;
90	CHECKREG r6, 0x00005051;
91
92// initial values
93	P5 = 0x0004;
94	P1 = 0x0002;
95	P2 = 0x0002;
96	P4 = 0x0004;
97	FP = 0x1002 (X);
98	SP = 0x0002;
99	I1 = P3; P3 = I0; I3 = SP; SP = I2;
100	loadsym i1, DATA_ADDR_1, 0x02;
101	P3 = I1; SP = I3;
102	R0 = W [ P3 ++ P5 ] (X);
103	R1 = W [ P3 ++ P1 ] (X);
104	R2 = W [ P3 ++ P2 ] (X);
105	R3 = W [ P3 ++ P3 ] (X);
106	R4 = W [ P3 ++ P4 ] (X);
107	R5 = W [ P3 ++ SP ] (X);
108	R6 = W [ P3 ++ FP ] (X);
109	CHECKREG r0, 0x00000001;
110	CHECKREG r1, 0xFFFF9405;
111	CHECKREG r2, 0x00000A0B;
112	CHECKREG r3, 0x00000809;
113	CHECKREG r4, 0x00000809;
114	CHECKREG r5, 0xFFFFAC0D;
115	CHECKREG r6, 0x00001213;
116
117// initial values
118	P5 = 0x0002;
119	P1 = 0x0002;
120	P2 = 0x0002;
121	P3 = 0x0002;
122	FP = 0x0002;
123	SP = 0x0002;
124	I1 = P3; P3 = I0; I3 = SP; SP = I2;
125	loadsym p4, DATA_ADDR_2, 0x00;
126	P3 = I1; SP = I3;
127	R0 = W [ P4 ++ P5 ] (Z);
128	R1 = W [ P4 ++ P1 ] (X);
129	R2 = W [ P4 ++ P2 ] (X);
130	R3 = W [ P4 ++ P3 ] (Z);
131	R4 = W [ P4 ++ P4 ] (Z);
132	R5 = W [ P4 ++ SP ] (X);
133	R6 = W [ P4 ++ FP ] (X);
134	CHECKREG r0, 0x00002223;
135	CHECKREG r1, 0x00002021;
136	CHECKREG r2, 0x00002627;
137	CHECKREG r3, 0x0000A425;
138	CHECKREG r4, 0x00002A2B;
139	CHECKREG r5, 0x00002A2B;
140	CHECKREG r6, 0xFFFF8829;
141
142// initial values
143	P5 = 0x0000;
144	P1 = 0x0002;
145	P2 = 0x0002;
146	P3 = 0x0002;
147	P4 = 0x0002;
148	SP = 0x0004;
149	I1 = P3; P3 = I0; I3 = SP; SP = I2;
150	loadsym fp, DATA_ADDR_1, 0x02;
151	P3 = I1; SP = I3;
152	R0 = W [ FP ++ P5 ] (X);
153	R1 = W [ FP ++ P1 ] (X);
154	R2 = W [ FP ++ P2 ] (X);
155	R3 = W [ FP ++ P3 ] (X);
156	R4 = W [ FP ++ P4 ] (Z);
157	R5 = W [ FP ++ SP ] (Z);
158	R6 = W [ FP ++ FP ] (X);
159	CHECKREG r0, 0x00000001;
160	CHECKREG r1, 0x00000001;
161	CHECKREG r2, 0xFFFFB607;
162	CHECKREG r3, 0xFFFF9405;
163	CHECKREG r4, 0x00000A0B;
164	CHECKREG r5, 0x00000809;
165	CHECKREG r6, 0xFFFFAC0D;
166
167// initial values
168	P5 = 0x0000;
169	P1 = 0x0002;
170	P2 = 0x0002;
171	P3 = 0x0002;
172	P4 = 0x0002;
173	FP = 0x0002;
174	I1 = P3; P3 = I0; I3 = SP; SP = I2;
175	loadsym i3, DATA_ADDR_1, 0x04;
176	P3 = I1; SP = I3;
177
178	R0 = W [ SP ++ P5 ] (Z);
179	R1 = W [ SP ++ P1 ] (X);
180	R2 = W [ SP ++ P2 ] (Z);
181	R3 = W [ SP ++ P3 ] (X);
182	R4 = W [ SP ++ P4 ] (Z);
183	R5 = W [ SP ++ P1 ] (X);
184	R6 = W [ SP ++ FP ] (Z);
185	CHECKREG r0, 0x0000B607;
186	CHECKREG r1, 0xFFFFB607;
187	CHECKREG r2, 0x00009405;
188	CHECKREG r3, 0x00000A0B;
189	CHECKREG r4, 0x00000809;
190	CHECKREG r5, 0xFFFFCE0F;
191	CHECKREG r6, 0x0000AC0D;
192
193	P3 = I0; SP = I2;
194	pass
195
196// Pre-load memory with known data
197// More data is defined than will actually be used
198
199	.data
200	.space (0x2000);
201
202DATA_ADDR_1:
203	.dd 0x0001a203
204	.dd 0x9405b607
205	.dd 0x08090A0B
206	.dd 0xaC0DcE0F
207	.dd 0x10111213
208	.dd 0xb415c617
209	.dd 0x18191A1B
210	.dd 0x1C1D1E1F
211	.dd 0x11223344
212	.dd 0x55667788
213	.dd 0x99717273
214	.dd 0x74757677
215	.dd 0x82838485
216	.dd 0x86878889
217	.dd 0x80818283
218	.dd 0x84858687
219	.dd 0x01020304
220	.dd 0xa5060708
221	.dd 0x09101112
222	.dd 0x14151617
223	.dd 0xc8192021
224	.dd 0x22232425
225	.dd 0x26272829
226	.dd 0xb0313233
227	.dd 0x34353637
228	.dd 0xd8394041
229	.dd 0x42434445
230	.dd 0x46474849
231	.dd 0xf0515253
232	.dd 0x54555657
233	.dd 0xe8596061
234	.dd 0x62636465
235	.dd 0xf6676869
236	.dd 0x74555657
237	.dd 0xa8596067
238	.dd 0x72636467
239	.dd 0x76676867
240
241DATA_ADDR_2:
242	.dd 0x20212223
243	.dd 0xa4252627
244	.dd 0x88292A2B
245	.dd 0x2C2D2E2F
246	.dd 0x30313233
247	.dd 0x34353637
248	.dd 0x38393A3B
249	.dd 0x3C3D3E3F
250	.dd 0x91929394
251	.dd 0x95969798
252	.dd 0x99A1A2A3
253	.dd 0xA5A6A7A8
254	.dd 0xA9B0B1B2
255	.dd 0xB3B4B5B6
256	.dd 0xB7B8B9C0
257	.dd 0x70717273
258	.dd 0x74757677
259	.dd 0x78798081
260	.dd 0x82838485
261	.dd 0x86C283C4
262	.dd 0x81C283C4
263	.dd 0x82C283C4
264	.dd 0x83C283C4
265	.dd 0x84C283C4
266	.dd 0x85C283C4
267	.dd 0x86C283C4
268	.dd 0x87C288C4
269	.dd 0x88C283C4
270	.dd 0x89C283C4
271	.dd 0x80C283C4
272	.dd 0x81C283C4
273	.dd 0x82C288C4
274	.dd 0x94555659
275	.dd 0x98596069
276	.dd 0x92636469
277	.dd 0x96676869
278
279DATA_ADDR_3:
280	.dd 0x40414243
281	.dd 0x84454647
282	.dd 0x48494A4B
283	.dd 0x9C4D4E4F
284	.dd 0x50515253
285	.dd 0xa4555657
286	.dd 0xb8595A5B
287	.dd 0xC5C6C7C8
288	.dd 0xC9CACBCD
289	.dd 0xCFD0D1D2
290	.dd 0xD3D4D5D6
291	.dd 0xD7D8D9DA
292	.dd 0xDBDCDDDE
293	.dd 0xDFE0E1E2
294	.dd 0xE3E4E5E6
295	.dd 0x91E899EA
296	.dd 0x92E899EA
297	.dd 0x93E899EA
298	.dd 0x94E899EA
299	.dd 0x95E899EA
300	.dd 0x96E899EA
301	.dd 0x97E899EA
302	.dd 0x98E899EA
303	.dd 0x99E899EA
304	.dd 0x91E899EA
305	.dd 0x92E899EA
306	.dd 0x93E899EA
307	.dd 0x94E899EA
308	.dd 0x95E899EA
309	.dd 0x96E899EA
310	.dd 0x977899EA
311	.dd 0xa455565a
312	.dd 0xa859606a
313	.dd 0xa263646a
314	.dd 0xa667686a
315
316DATA_ADDR_4:
317	.dd 0x90616263
318	.dd 0x64656667
319	.dd 0xa8696A6B
320	.dd 0x6C6D6E6F
321	.dd 0x70717273
322	.dd 0xd4757677
323	.dd 0x78797A7B
324	.dd 0x7C7D7E7F
325	.dd 0xEBECEDEE
326	.dd 0xF3F4F5F6
327	.dd 0xF7F8F9FA
328	.dd 0xFBFCFDFE
329	.dd 0xFF000102
330	.dd 0x03040506
331	.dd 0x0708090A
332	.dd 0x0B0CAD0E
333	.dd 0xAB0CAD01
334	.dd 0xAB0CAD02
335	.dd 0xAB0CAD03
336	.dd 0xAB0CAD04
337	.dd 0xAB0CAD05
338	.dd 0xAB0CAD06
339	.dd 0xAB0CAA07
340	.dd 0xAB0CAD08
341	.dd 0xAB0CAD09
342	.dd 0xA00CAD1E
343	.dd 0xA10CAD2E
344	.dd 0xA20CAD3E
345	.dd 0xA30CAD4E
346	.dd 0xA40CAD5E
347	.dd 0xA50CAD6E
348	.dd 0xA60CAD7E
349	.dd 0xB455565B
350	.dd 0xB859606B
351	.dd 0xB263646B
352	.dd 0xB667686B
353
354DATA_ADDR_5:
355	.dd 0x80818283
356	.dd 0x84858687
357	.dd 0x08898A8B
358	.dd 0x8C8D8E8F
359	.dd 0x90919293
360	.dd 0x54959697
361	.dd 0x98999A9B
362	.dd 0x9C9D9E9F
363	.dd 0x0F101213
364	.dd 0x14151617
365	.dd 0x18191A1B
366	.dd 0x1C1D1E1F
367	.dd 0x20212223
368	.dd 0x24252627
369	.dd 0x28292A2B
370	.dd 0x2C2D2E2F
371	.dd 0xBC0DBE21
372	.dd 0xBC1DBE22
373	.dd 0xBC2DBE23
374	.dd 0xBC3DBE24
375	.dd 0xBC4DBE65
376	.dd 0xBC5DBE27
377	.dd 0xBC6DBE28
378	.dd 0xBC7DBE29
379	.dd 0xBC8DBE2F
380	.dd 0xBC9DBE20
381	.dd 0xBCADBE21
382	.dd 0xBCBDBE2F
383	.dd 0xBCCDBE23
384	.dd 0xBCDDBE24
385	.dd 0xBCFDBE25
386	.dd 0xC455565C
387	.dd 0xC859606C
388	.dd 0xC263646C
389	.dd 0xC667686C
390	.dd 0xCC0DBE2C
391
392DATA_ADDR_6:
393	.dd 0x00010203
394	.dd 0xa4050607
395	.dd 0x08090A0B
396	.dd 0xfC0D0E0F
397	.dd 0x10111213
398	.dd 0x14151617
399	.dd 0x98191A1B
400	.dd 0x1C1D1E1F
401	.dd 0x20212223
402	.dd 0x74252627
403	.dd 0x28292A2B
404	.dd 0x8C2D2E2F
405	.dd 0x30313233
406	.dd 0x34353637
407	.dd 0x98393A3B
408	.dd 0x3C3D3E3F
409	.dd 0xb0414243
410	.dd 0x44454647
411	.dd 0x48494A4B
412	.dd 0xdC4D4E4F
413	.dd 0x50515253
414	.dd 0x94555657
415	.dd 0x58595A5B
416	.dd 0x5C5D5E5F
417	.dd 0xf0616263
418	.dd 0xf4656667
419	.dd 0xf8696A6B
420	.dd 0x6C6D6E6F
421	.dd 0x70717273
422	.dd 0x74757677
423	.dd 0x78797A7B
424	.dd 0x7C7D7E7F
425
426DATA_ADDR_7:
427	.dd 0x80818283
428	.dd 0x84858687
429	.dd 0x88898A8B
430	.dd 0x8C8D8E8F
431	.dd 0x10919293
432	.dd 0x24959697
433	.dd 0x38999A9B
434	.dd 0x9C9D9E9F
435	.dd 0xA0A1A2A3
436	.dd 0x54A5A6A7
437	.dd 0x68A9AAAB
438	.dd 0x7CADAEAF
439	.dd 0xB0B1B2B3
440	.dd 0x84B5B6B7
441	.dd 0xB8B9BABB
442	.dd 0x4CBDBEBF
443	.dd 0xC0C1C2C3
444	.dd 0x34C5C6C7
445	.dd 0xC8C9CACB
446	.dd 0xCCCDCECF
447	.dd 0x20D1D2D3
448	.dd 0xD4D5D6D7
449	.dd 0x18D9DADB
450	.dd 0xDCDDDEDF
451	.dd 0x00E1E2E3
452	.dd 0xE4E5E6E7
453	.dd 0x18E9EAEB
454	.dd 0xECEDEEEF
455	.dd 0xF0F1F2F3
456	.dd 0xF4F5F6F7
457	.dd 0xF8F9FAFB
458	.dd 0xFCFDFEFF
459