1//Original:testcases/core/c_ldst_st_p_d_mm/c_ldst_st_p_d_mm.dsp
2// Spec Reference: c_ldst st_p++/p--
3# mach: bfin
4
5.include "testutils.inc"
6	start
7
8// set all regs
9INIT_I_REGS -1;
10init_b_regs 0;
11init_l_regs 0;
12init_m_regs -1;
13I0 = P3;
14I2 = SP;
15
16	imm32 r0, 0x0a231507;
17	imm32 r1, 0x1b342618;
18	imm32 r2, 0x2c453729;
19	imm32 r3, 0x3d56483a;
20	imm32 r4, 0x4e67594b;
21	imm32 r5, 0x5f786a5c;
22	imm32 r6, 0x60897b6d;
23	imm32 r7, 0x719a8c7e;
24
25// initial values
26	I1 = P3; P3 = I0; I3 = SP; SP = I2;
27	loadsym p5, DATA_ADDR_1;
28	loadsym p1, DATA_ADDR_2;
29	loadsym p2, DATA_ADDR_3;
30	loadsym i1, DATA_ADDR_4;
31	loadsym p4, DATA_ADDR_5;
32	loadsym fp, DATA_ADDR_6;
33	loadsym i3, DATA_ADDR_7;
34	P3 = I1; SP = I3;
35
36	[ P5 ++ ] = R0;
37	[ P1 ++ ] = R1;
38	[ P2 ++ ] = R2;
39	[ P3 ++ ] = R3;
40	[ P4 ++ ] = R4;
41	[ FP ++ ] = R5;
42	[ SP ++ ] = R6;
43
44	[ P5 ++ ] = R2;
45	[ P1 ++ ] = R3;
46	[ P2 ++ ] = R4;
47	[ P3 ++ ] = R5;
48	[ P4 ++ ] = R6;
49	[ FP ++ ] = R7;
50	[ SP ++ ] = R0;
51
52	[ P5 ++ ] = R5;
53	[ P1 ++ ] = R6;
54	[ P2 ++ ] = R7;
55	[ P3 ++ ] = R0;
56	[ P4 ++ ] = R1;
57	[ FP ++ ] = R2;
58	[ SP ++ ] = R3;
59
60	[ P5 ++ ] = R7;
61	[ P1 ++ ] = R0;
62	[ P2 ++ ] = R1;
63	[ P3 ++ ] = R2;
64	[ P4 ++ ] = R3;
65	[ FP ++ ] = R4;
66	[ SP ++ ] = R5;
67
68	I1 = P3; P3 = I0; I3 = SP; SP = I2;
69	loadsym p5, DATA_ADDR_1;
70	loadsym p1, DATA_ADDR_2;
71	loadsym p2, DATA_ADDR_3;
72	loadsym i1, DATA_ADDR_4;
73	loadsym p4, DATA_ADDR_5;
74	loadsym fp, DATA_ADDR_6;
75	loadsym i3, DATA_ADDR_7;
76	P3 = I1; SP = I3;
77
78	R0 = [ P1 ++ ];
79	R1 = [ P2 ++ ];
80	R2 = [ P3 ++ ];
81	R3 = [ P4 ++ ];
82	R4 = [ P5 ++ ];
83	R5 = [ FP ++ ];
84	R6 = [ SP ++ ];
85	CHECKREG r0, 0x1B342618;
86	CHECKREG r1, 0x2C453729;
87	CHECKREG r2, 0x3D56483A;
88	CHECKREG r3, 0x4E67594B;
89	CHECKREG r4, 0x0A231507;
90	CHECKREG r5, 0x5F786A5C;
91	CHECKREG r6, 0x60897B6D;
92	CHECKREG r7, 0x719A8C7E;
93	R0 = [ P1 ++ ];
94	R1 = [ P2 ++ ];
95	R2 = [ P3 ++ ];
96	R3 = [ P4 ++ ];
97	R4 = [ P5 ++ ];
98	R5 = [ FP ++ ];
99	R6 = [ SP ++ ];
100	CHECKREG r0, 0x3D56483A;
101	CHECKREG r1, 0x4E67594B;
102	CHECKREG r2, 0x5F786A5C;
103	CHECKREG r3, 0x60897B6D;
104	CHECKREG r4, 0x2C453729;
105	CHECKREG r5, 0x719A8C7E;
106	CHECKREG r6, 0x0A231507;
107	CHECKREG r7, 0x719A8C7E;
108	R1 = [ P1 ++ ];
109	R2 = [ P2 ++ ];
110	R3 = [ P3 ++ ];
111	R4 = [ P4 ++ ];
112	R5 = [ P5 ++ ];
113	R6 = [ FP ++ ];
114	R7 = [ SP ++ ];
115	CHECKREG r0, 0x3D56483A;
116	CHECKREG r1, 0x60897B6D;
117	CHECKREG r2, 0x719A8C7E;
118	CHECKREG r3, 0x0A231507;
119	CHECKREG r4, 0x1B342618;
120	CHECKREG r5, 0x5F786A5C;
121	CHECKREG r6, 0x2C453729;
122	CHECKREG r7, 0x3D56483A;
123	R3 = [ P1 ++ ];
124	R4 = [ P2 ++ ];
125	R5 = [ P3 ++ ];
126	R6 = [ P4 ++ ];
127	R7 = [ P5 ++ ];
128	R0 = [ FP ++ ];
129	R1 = [ SP ++ ];
130	CHECKREG r0, 0x4E67594B;
131	CHECKREG r1, 0x5F786A5C;
132	CHECKREG r2, 0x719A8C7E;
133	CHECKREG r3, 0x0A231507;
134	CHECKREG r4, 0x1B342618;
135	CHECKREG r5, 0x2C453729;
136	CHECKREG r6, 0x3D56483A;
137	CHECKREG r7, 0x719A8C7E;
138
139// reset  values
140	I1 = P3; P3 = I0; I3 = SP; SP = I2;
141	loadsym p5, DATA_ADDR_1, 0x20;
142	loadsym p1, DATA_ADDR_2, 0x20;
143	loadsym p2, DATA_ADDR_3, 0x20;
144	loadsym i1, DATA_ADDR_4, 0x20;
145	loadsym p4, DATA_ADDR_5, 0x20;
146	loadsym fp, DATA_ADDR_6, 0x20;
147	loadsym i3, DATA_ADDR_7, 0x20;
148	P3 = I1; SP = I3;
149
150	[ P5 -- ] = R0;
151	[ P1 -- ] = R1;
152	[ P2 -- ] = R2;
153	[ P3 -- ] = R3;
154	[ P4 -- ] = R4;
155	[ FP -- ] = R5;
156	[ SP -- ] = R6;
157
158	[ P5 -- ] = R2;
159	[ P1 -- ] = R3;
160	[ P2 -- ] = R4;
161	[ P3 -- ] = R5;
162	[ P4 -- ] = R6;
163	[ FP -- ] = R7;
164	[ SP -- ] = R0;
165
166	[ P5 -- ] = R5;
167	[ P1 -- ] = R6;
168	[ P2 -- ] = R7;
169	[ P3 -- ] = R0;
170	[ P4 -- ] = R1;
171	[ FP -- ] = R2;
172	[ SP -- ] = R3;
173
174	[ P5 -- ] = R6;
175	[ P1 -- ] = R7;
176	[ P2 -- ] = R0;
177	[ P3 -- ] = R1;
178	[ P4 -- ] = R2;
179	[ FP -- ] = R3;
180	[ SP -- ] = R4;
181	[ P1 -- ] = R0;
182	[ P2 -- ] = R1;
183	[ P3 -- ] = R2;
184	[ P4 -- ] = R3;
185	[ FP -- ] = R4;
186	[ SP -- ] = R5;
187
188	I1 = P3; P3 = I0; I3 = SP; SP = I2;
189	loadsym p5, DATA_ADDR_1, 0x20;
190	loadsym p1, DATA_ADDR_2, 0x20;
191	loadsym p2, DATA_ADDR_3, 0x20;
192	loadsym i1, DATA_ADDR_4, 0x20;
193	loadsym p4, DATA_ADDR_5, 0x20;
194	loadsym fp, DATA_ADDR_6, 0x20;
195	loadsym i3, DATA_ADDR_7, 0x20;
196	P3 = I1; SP = I3;
197
198	R0 = [ P1 -- ];
199	R1 = [ P2 -- ];
200	R2 = [ P3 -- ];
201	R3 = [ P4 -- ];
202	R4 = [ P5 -- ];
203	R5 = [ FP -- ];
204	R6 = [ SP -- ];
205	CHECKREG r0, 0x5F786A5C;
206	CHECKREG r1, 0x719A8C7E;
207	CHECKREG r2, 0x0A231507;
208	CHECKREG r3, 0x1B342618;
209	CHECKREG r4, 0x4E67594B;
210	CHECKREG r5, 0x2C453729;
211	CHECKREG r6, 0x3D56483A;
212	CHECKREG r7, 0x719A8C7E;
213	R2 = [ P1 -- ];
214	R3 = [ P2 -- ];
215	R4 = [ P3 -- ];
216	R5 = [ P4 -- ];
217	R6 = [ P5 -- ];
218	R7 = [ FP -- ];
219	R0 = [ SP -- ];
220	CHECKREG r0, 0x4E67594B;
221	CHECKREG r1, 0x719A8C7E;
222	CHECKREG r2, 0x0A231507;
223	CHECKREG r3, 0x1B342618;
224	CHECKREG r4, 0x2C453729;
225	CHECKREG r5, 0x3D56483A;
226	CHECKREG r6, 0x719A8C7E;
227	R3 = [ P1 -- ];
228	R4 = [ P2 -- ];
229	R5 = [ P3 -- ];
230	R6 = [ P4 -- ];
231	R7 = [ P5 -- ];
232	R0 = [ FP -- ];
233	R1 = [ SP -- ];
234	CHECKREG r0, 0x719A8C7E;
235	CHECKREG r1, 0x0A231507;
236	CHECKREG r2, 0x0A231507;
237	CHECKREG r3, 0x3D56483A;
238	CHECKREG r4, 0x719A8C7E;
239	CHECKREG r5, 0x4E67594B;
240	CHECKREG r6, 0x5F786A5C;
241	CHECKREG r7, 0x2C453729;
242	R5 = [ P1 -- ];
243	R6 = [ P2 -- ];
244	R7 = [ P3 -- ];
245	R0 = [ P4 -- ];
246	R1 = [ P5 -- ];
247	R2 = [ FP -- ];
248	R3 = [ SP -- ];
249	CHECKREG r0, 0x719A8C7E;
250	CHECKREG r1, 0x3D56483A;
251	CHECKREG r2, 0x0A231507;
252	CHECKREG r3, 0x1B342618;
253	CHECKREG r4, 0x719A8C7E;
254	CHECKREG r5, 0x719A8C7E;
255	CHECKREG r6, 0x4E67594B;
256
257	P3 = I0; SP = I2;
258	pass
259
260// Pre-load memory with known data
261// More data is defined than will actually be used
262
263	.data
264DATA_ADDR_1:
265	.dd 0x00010203
266	.dd 0x04050607
267	.dd 0x08090A0B
268	.dd 0x0C0D0E0F
269	.dd 0x10111213
270	.dd 0x14151617
271	.dd 0x18191A1B
272	.dd 0x1C1D1E1F
273	.dd 0x00000000
274	.dd 0x00000000
275	.dd 0x00000000
276	.dd 0x00000000
277	.dd 0x00000000
278	.dd 0x00000000
279	.dd 0x00000000
280	.dd 0x00000000
281	.dd 0x00000000
282	.dd 0x00000000
283	.dd 0x00000000
284	.dd 0x00000000
285	.dd 0x00000000
286	.dd 0x00000000
287	.dd 0x00000000
288	.dd 0x00000000
289	.dd 0x00000000
290	.dd 0x00000000
291	.dd 0x00000000
292	.dd 0x00000000
293	.dd 0x00000000
294	.dd 0x00000000
295	.dd 0x00000000
296	.dd 0x00000000
297	.dd 0x00000000
298	.dd 0x00000000
299	.dd 0x00000000
300	.dd 0x00000000
301	.dd 0x00000000
302	.dd 0x00000000
303	.dd 0x00000000
304
305DATA_ADDR_2:
306	.dd 0x20212223
307	.dd 0x24252627
308	.dd 0x28292A2B
309	.dd 0x2C2D2E2F
310	.dd 0x30313233
311	.dd 0x34353637
312	.dd 0x38393A3B
313	.dd 0x3C3D3E3F
314	.dd 0x00000000
315	.dd 0x00000000
316	.dd 0x00000000
317	.dd 0x00000000
318	.dd 0x00000000
319	.dd 0x00000000
320	.dd 0x00000000
321	.dd 0x00000000
322	.dd 0x00000000
323	.dd 0x00000000
324	.dd 0x00000000
325	.dd 0x00000000
326	.dd 0x00000000
327	.dd 0x00000000
328	.dd 0x00000000
329	.dd 0x00000000
330	.dd 0x00000000
331	.dd 0x00000000
332	.dd 0x00000000
333	.dd 0x00000000
334	.dd 0x00000000
335	.dd 0x00000000
336	.dd 0x00000000
337	.dd 0x00000000
338	.dd 0x00000000
339	.dd 0x00000000
340	.dd 0x00000000
341	.dd 0x00000000
342	.dd 0x00000000
343	.dd 0x00000000
344
345DATA_ADDR_3:
346	.dd 0x40414243
347	.dd 0x44454647
348	.dd 0x48494A4B
349	.dd 0x4C4D4E4F
350	.dd 0x50515253
351	.dd 0x54555657
352	.dd 0x58595A5B
353	.dd 0x5C5D5E5F
354	.dd 0x00000000
355	.dd 0x00000000
356	.dd 0x00000000
357	.dd 0x00000000
358	.dd 0x00000000
359	.dd 0x00000000
360	.dd 0x00000000
361	.dd 0x00000000
362	.dd 0x00000000
363	.dd 0x00000000
364	.dd 0x00000000
365	.dd 0x00000000
366	.dd 0x00000000
367	.dd 0x00000000
368	.dd 0x00000000
369	.dd 0x00000000
370	.dd 0x00000000
371	.dd 0x00000000
372	.dd 0x00000000
373	.dd 0x00000000
374	.dd 0x00000000
375	.dd 0x00000000
376	.dd 0x00000000
377	.dd 0x00000000
378	.dd 0x00000000
379	.dd 0x00000000
380	.dd 0x00000000
381	.dd 0x00000000
382	.dd 0x00000000
383	.dd 0x00000000
384	.dd 0x00000000
385	.dd 0x00000000
386	.dd 0x00000000
387	.dd 0x00000000
388	.dd 0x00000000
389	.dd 0x00000000
390	.dd 0x00000000
391	.dd 0x00000000
392	.dd 0x00000000
393	.dd 0x00000000
394
395DATA_ADDR_4:
396	.dd 0x60616263
397	.dd 0x64656667
398	.dd 0x68696A6B
399	.dd 0x6C6D6E6F
400	.dd 0x70717273
401	.dd 0x74757677
402	.dd 0x78797A7B
403	.dd 0x7C7D7E7F
404	.dd 0x00000000
405	.dd 0x00000000
406	.dd 0x00000000
407	.dd 0x00000000
408	.dd 0x00000000
409	.dd 0x00000000
410	.dd 0x00000000
411	.dd 0x00000000
412	.dd 0x00000000
413	.dd 0x00000000
414	.dd 0x00000000
415	.dd 0x00000000
416	.dd 0x00000000
417	.dd 0x00000000
418	.dd 0x00000000
419	.dd 0x00000000
420	.dd 0x00000000
421	.dd 0x00000000
422	.dd 0x00000000
423	.dd 0x00000000
424	.dd 0x00000000
425	.dd 0x00000000
426	.dd 0x00000000
427	.dd 0x00000000
428	.dd 0x00000000
429	.dd 0x00000000
430	.dd 0x00000000
431	.dd 0x00000000
432	.dd 0x00000000
433	.dd 0x00000000
434	.dd 0x00000000
435	.dd 0x00000000
436	.dd 0x00000000
437	.dd 0x00000000
438	.dd 0x00000000
439	.dd 0x00000000
440	.dd 0x00000000
441	.dd 0x00000000
442	.dd 0x00000000
443	.dd 0x00000000
444
445DATA_ADDR_5:
446	.dd 0x80818283
447	.dd 0x84858687
448	.dd 0x88898A8B
449	.dd 0x8C8D8E8F
450	.dd 0x90919293
451	.dd 0x94959697
452	.dd 0x98999A9B
453	.dd 0x9C9D9E9F
454	.dd 0x00000000
455	.dd 0x00000000
456	.dd 0x00000000
457	.dd 0x00000000
458	.dd 0x00000000
459	.dd 0x00000000
460	.dd 0x00000000
461	.dd 0x00000000
462	.dd 0x00000000
463	.dd 0x00000000
464	.dd 0x00000000
465	.dd 0x00000000
466	.dd 0x00000000
467	.dd 0x00000000
468	.dd 0x00000000
469	.dd 0x00000000
470	.dd 0x00000000
471	.dd 0x00000000
472	.dd 0x00000000
473	.dd 0x00000000
474	.dd 0x00000000
475	.dd 0x00000000
476	.dd 0x00000000
477	.dd 0x00000000
478	.dd 0x00000000
479	.dd 0x00000000
480	.dd 0x00000000
481	.dd 0x00000000
482	.dd 0x00000000
483	.dd 0x00000000
484	.dd 0x00000000
485	.dd 0x00000000
486	.dd 0x00000000
487	.dd 0x00000000
488	.dd 0x00000000
489	.dd 0x00000000
490	.dd 0x00000000
491	.dd 0x00000000
492	.dd 0x00000000
493	.dd 0x00000000
494
495DATA_ADDR_6:
496	.dd 0xA0A1A2A3
497	.dd 0xA4A5A6A7
498	.dd 0xA8A9AAAB
499	.dd 0xACADAEAF
500	.dd 0xB0B1B2B3
501	.dd 0xB4B5B6B7
502	.dd 0xB8B9BABB
503	.dd 0xBCBDBEBF
504	.dd 0x00000000
505	.dd 0x00000000
506	.dd 0x00000000
507	.dd 0x00000000
508	.dd 0x00000000
509	.dd 0x00000000
510	.dd 0x00000000
511	.dd 0x00000000
512	.dd 0x00000000
513	.dd 0x00000000
514	.dd 0x00000000
515	.dd 0x00000000
516	.dd 0x00000000
517	.dd 0x00000000
518	.dd 0x00000000
519	.dd 0x00000000
520	.dd 0x00000000
521	.dd 0x00000000
522	.dd 0x00000000
523	.dd 0x00000000
524	.dd 0x00000000
525	.dd 0x00000000
526	.dd 0x00000000
527	.dd 0x00000000
528	.dd 0x00000000
529	.dd 0x00000000
530	.dd 0x00000000
531	.dd 0x00000000
532	.dd 0x00000000
533	.dd 0x00000000
534	.dd 0x00000000
535	.dd 0x00000000
536	.dd 0x00000000
537	.dd 0x00000000
538	.dd 0x00000000
539	.dd 0x00000000
540	.dd 0x00000000
541	.dd 0x00000000
542	.dd 0x00000000
543	.dd 0x00000000
544
545DATA_ADDR_7:
546	.dd 0xC0C1C2C3
547	.dd 0xC4C5C6C7
548	.dd 0xC8C9CACB
549	.dd 0xCCCDCECF
550	.dd 0xD0D1D2D3
551	.dd 0xD4D5D6D7
552	.dd 0xD8D9DADB
553	.dd 0xDCDDDEDF
554	.dd 0xE0E1E2E3
555	.dd 0xE4E5E6E7
556	.dd 0xE8E9EAEB
557	.dd 0xECEDEEEF
558	.dd 0xF0F1F2F3
559	.dd 0xF4F5F6F7
560	.dd 0xF8F9FAFB
561	.dd 0xFCFDFEFF
562	.dd 0x00000000
563	.dd 0x00000000
564	.dd 0x00000000
565	.dd 0x00000000
566	.dd 0x00000000
567	.dd 0x00000000
568	.dd 0x00000000
569	.dd 0x00000000
570	.dd 0x00000000
571	.dd 0x00000000
572	.dd 0x00000000
573	.dd 0x00000000
574	.dd 0x00000000
575	.dd 0x00000000
576	.dd 0x00000000
577	.dd 0x00000000
578	.dd 0x00000000
579	.dd 0x00000000
580	.dd 0x00000000
581	.dd 0x00000000
582	.dd 0x00000000
583	.dd 0x00000000
584	.dd 0x00000000
585	.dd 0x00000000
586	.dd 0x00000000
587	.dd 0x00000000
588	.dd 0x00000000
589	.dd 0x00000000
590	.dd 0x00000000
591	.dd 0x00000000
592	.dd 0x00000000
593	.dd 0x00000000
594	.dd 0x00000000
595	.dd 0x00000000
596	.dd 0x00000000
597	.dd 0x00000000
598	.dd 0x00000000
599	.dd 0x00000000
600	.dd 0x00000000
601	.dd 0x00000000
602