xref: /netbsd-src/external/gpl3/gdb/dist/sim/testsuite/bfin/vecadd.s (revision 4b169a6ba595ae283ca507b26b15fdff40495b1c)
1# mach: bfin
2
3.include "testutils.inc"
4	start
5
6// create two short vectors v_a, v_b
7//   where each element of v_a is the index
8//   where each element of v_b is 128-index
9	R2 = 0;
10	loadsym P0, v_a;
11	loadsym P1, v_b;
12	P2 = 0;
13	R3 = 128 (X);
14	R0 = 0;
15	R1 = 128 (X);
16L$1:
17	W [ P0 ++ ] = R0;
18	W [ P1 ++ ] = R1;
19	R0 += 1;
20	R1 += -1;
21	CC = R0 < R3;
22	IF CC JUMP L$1 (BP);
23
24	loadsym P0, v_a;
25	loadsym P1, v_b;
26
27	CALL vecadd;
28
29	loadsym P0, v_c;
30	R2 = 0;
31	R3 = 128 (X);
32L$3:
33	R0 = W [ P0 ++ ] (X);
34	DBGA ( R0.L , 128 );
35	R2 += 1;
36	CC = R2 < R3;
37	IF CC JUMP L$3;
38	_DBG R6;
39	pass
40
41vecadd:
42
43	loadsym I0, v_a;
44	loadsym I1, v_b;
45	loadsym I2, v_c;
46
47	P5 = 128 (X);
48	LSETUP ( L$2 , L$2end ) LC0 = P5 >> 1;
49	R0 = [ I0 ++ ];
50	R1 = [ I1 ++ ];
51L$2:
52	R2 = R0 +|+ R1 || R0 = [ I0 ++ ] || R1 = [ I1 ++ ];
53L$2end:
54	[ I2 ++ ] = R2;
55
56
57	RTS;
58
59	.data
60v_a:
61	.space (512);
62v_b:
63	.space (512);
64v_c:
65	.space (512);
66