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