1# Blackfin testcase for circular buffers
2# mach: bfin
3
4	.include "testutils.inc"
5
6	.macro daginit i:req, b:req, l:req, m:req
7	imm32 I0, \i
8	imm32 B0, \b
9	imm32 L0, \l
10	imm32 M0, \m
11	.endm
12	.macro dagcheck newi:req
13	DBGA ( I0.L, \newi & 0xFFFF );
14	DBGA ( I0.H, \newi >> 16 );
15	.endm
16
17	.macro dagadd i:req, b:req, l:req, m:req, newi:req
18	daginit \i, \b, \l, \m
19	I0 += M0;
20	dagcheck \newi
21	.endm
22
23	.macro dagsub i:req, b:req, l:req, m:req, newi:req
24	daginit \i, \b, \l, \m
25	I0 -= M0;
26	dagcheck \newi
27	.endm
28
29	.macro dag i:req, b:req, l:req, m:req, addi:req, subi:req
30	daginit \i, \b, \l, \m
31	I0 += M0;
32	dagcheck \addi
33	imm32 I0, \i
34	I0 -= M0;
35	dagcheck \subi
36	.endm
37
38	start
39
40	init_l_regs 0
41	init_i_regs 0
42	init_b_regs 0
43	init_m_regs 0
44
45_zero_len:
46	dag 0, 0, 0, 0, 0, 0
47	dag 100, 0, 0, 0, 100, 100
48	dag 100, 0, 0, 11, 111, 89
49	dag 100, 0xaa00ff00, 0, 0, 100, 100
50	dag 100, 0xaa00ff00, 0, 11, 111, 89
51
52_zero_base:
53	dag 0, 0, 100, 10, 10, 90
54	dag 50, 0, 100, 10, 60, 40
55	dag 99, 0, 100, 10, 9, 89
56	dag 50, 0, 100, 50, 0, 0
57	dag 50, 0, 100, 100, 50, 50
58	dag 50, 0, 100, 200, 150, -50
59	dag 50, 0, 100, 2100, 2050, -1950
60	dag 1000, 0, 100, 0, 900, 1000
61	dag 1000, 0, 1000, 0, 0, 1000
62
63	dag 0xffff1000, 0, 0x1000, 0, 0xffff0000, 0xffff1000
64	dag 0xaaaa1000, 0, 0xaaa1000, 0, 0xa0000000, 0xaaaa1000
65	dag 0xaaaa1000, 0, 0xaaa1000, 0x1000, 0xa0001000, 0xaaaa0000
66	dag 0xffff1000, 0, 0xffff0000, 0xffffff, 0x1000fff, 0xfeff1001
67
68_positive_base:
69	dag 0, 100, 100, 10, 10, 90
70	dag 90, 100, 100, 10, 100, 180
71	dag 90, 100, 100, 2100, 2090, -1910
72	dag 100, 100, 100, 100, 100, 100
73	dag 0xfffff000, 0xffffff00, 0x10, 0xffff, 0xefef, 0xfffef011
74
75_large_base_len:
76	dag 0, 0xffffff00, 0xffffff00, 0x00000100, 0x00000200, 0xfffffe00
77	dag 0, 0xaaaaaaaa, 0xbbbbbbbb, 0xcccccccc, 0x88888887, 0x77777779
78	dag 0, 0xaaaaaaaa, 0xbbbbbbbb, 0x4ccccccc, 0x91111111, 0x6eeeeeef
79	dag 0, 0xaaaaaaaa, 0xbbbbbbbb, 0x00000000, 0x44444445, 0xbbbbbbbb
80	dag 0, 0xdddddddd, 0x7bbbbbbb, 0xcccccccc, 0xcccccccc, 0xb7777779
81	dag 0, 0xbbbbbbbb, 0x7bbbbbbb, 0x4ccccccc, 0x4ccccccc, 0xb3333334
82	dag 0, 0xbbbbbbbb, 0x7bbbbbbb, 0x00000000, 0x84444445, 0x7bbbbbbb
83
84	pass
85