OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [tags/] [gnu-src/] [gdb-6.8/] [pre-binutils-2.20.1-sync/] [sim/] [testsuite/] [sim/] [sh/] [loop.s] - Diff between revs 157 and 223

Only display areas with differences | Details | Blame | View Log

Rev 157 Rev 223
# sh testcase for loop control
# sh testcase for loop control
# mach:  shdsp
# mach:  shdsp
# as(shdsp):    -defsym sim_cpu=1 -dsp
# as(shdsp):    -defsym sim_cpu=1 -dsp
 
 
        .include "testutils.inc"
        .include "testutils.inc"
 
 
        start
        start
loop1:
loop1:
        set_grs_a5a5
        set_grs_a5a5
 
 
        ldrs    Loop1_start0+8
        ldrs    Loop1_start0+8
        ldre    Loop1_start0+4
        ldre    Loop1_start0+4
        setrc   #5
        setrc   #5
Loop1_start0:
Loop1_start0:
        add     #1, r1  ! Before loop
        add     #1, r1  ! Before loop
        # Loop should execute one instruction five times.
        # Loop should execute one instruction five times.
Loop1_begin:
Loop1_begin:
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
Loop1_end:
Loop1_end:
        add     #2, r1  ! After loop
        add     #2, r1  ! After loop
 
 
        # r1 = 0xa5a5a5a5 + 8 (five in loop, two after, one before)
        # r1 = 0xa5a5a5a5 + 8 (five in loop, two after, one before)
        assertreg       0xa5a5a5a5+8, r1
        assertreg       0xa5a5a5a5+8, r1
 
 
        set_greg        0xa5a5a5a5, r0
        set_greg        0xa5a5a5a5, r0
        set_greg        0xa5a5a5a5, r1
        set_greg        0xa5a5a5a5, r1
        test_grs_a5a5
        test_grs_a5a5
 
 
loop2:
loop2:
        set_grs_a5a5
        set_grs_a5a5
 
 
        ldrs    Loop2_start0+6
        ldrs    Loop2_start0+6
        ldre    Loop2_start0+4
        ldre    Loop2_start0+4
        setrc   #5
        setrc   #5
Loop2_start0:
Loop2_start0:
        add     #1, r1  ! Before loop
        add     #1, r1  ! Before loop
        # Loop should execute two instructions five times.
        # Loop should execute two instructions five times.
Loop2_begin:
Loop2_begin:
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
Loop2_end:
Loop2_end:
        add     #3, r1  ! After loop
        add     #3, r1  ! After loop
 
 
        # r1 = 0xa5a5a5a5 + 14 (ten in loop, three after, one before)
        # r1 = 0xa5a5a5a5 + 14 (ten in loop, three after, one before)
        assertreg       0xa5a5a5a5+14, r1
        assertreg       0xa5a5a5a5+14, r1
 
 
        set_greg        0xa5a5a5a5, r0
        set_greg        0xa5a5a5a5, r0
        set_greg        0xa5a5a5a5, r1
        set_greg        0xa5a5a5a5, r1
        test_grs_a5a5
        test_grs_a5a5
 
 
loop3:
loop3:
        set_grs_a5a5
        set_grs_a5a5
 
 
        ldrs    Loop3_start0+4
        ldrs    Loop3_start0+4
        ldre    Loop3_start0+4
        ldre    Loop3_start0+4
        setrc   #5
        setrc   #5
Loop3_start0:
Loop3_start0:
        add     #1, r1  ! Before loop
        add     #1, r1  ! Before loop
        # Loop should execute three instructions five times.
        # Loop should execute three instructions five times.
Loop3_begin:
Loop3_begin:
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
Loop3_end:
Loop3_end:
        add     #2, r1  ! After loop
        add     #2, r1  ! After loop
 
 
        # r1 = 0xa5a5a5a5 + 18 (fifteen in loop, two after, one before)
        # r1 = 0xa5a5a5a5 + 18 (fifteen in loop, two after, one before)
        assertreg       0xa5a5a5a5+18, r1
        assertreg       0xa5a5a5a5+18, r1
 
 
        set_greg        0xa5a5a5a5, r0
        set_greg        0xa5a5a5a5, r0
        set_greg        0xa5a5a5a5, r1
        set_greg        0xa5a5a5a5, r1
        test_grs_a5a5
        test_grs_a5a5
 
 
loop4:
loop4:
        set_grs_a5a5
        set_grs_a5a5
 
 
        ldrs    Loop4_begin
        ldrs    Loop4_begin
        ldre    Loop4_last3+4
        ldre    Loop4_last3+4
        setrc   #5
        setrc   #5
        add     #1, r1  ! Before loop
        add     #1, r1  ! Before loop
        # Loop should execute four instructions five times.
        # Loop should execute four instructions five times.
Loop4_begin:
Loop4_begin:
Loop4_last3:
Loop4_last3:
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
Loop4_last2:
Loop4_last2:
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
Loop4_last1:
Loop4_last1:
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
Loop4_last:
Loop4_last:
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
Loop4_end:
Loop4_end:
        add     #2, r1  ! After loop
        add     #2, r1  ! After loop
 
 
        # r1 = 0xa5a5a5a5 + 23 (20 in loop, two after, one before)
        # r1 = 0xa5a5a5a5 + 23 (20 in loop, two after, one before)
        assertreg       0xa5a5a5a5+23, r1
        assertreg       0xa5a5a5a5+23, r1
 
 
        set_greg        0xa5a5a5a5, r0
        set_greg        0xa5a5a5a5, r0
        set_greg        0xa5a5a5a5, r1
        set_greg        0xa5a5a5a5, r1
        test_grs_a5a5
        test_grs_a5a5
 
 
loop5:
loop5:
        set_grs_a5a5
        set_grs_a5a5
 
 
        ldrs    Loop5_begin
        ldrs    Loop5_begin
        ldre    Loop5_last3+4
        ldre    Loop5_last3+4
        setrc   #5
        setrc   #5
        add     #1, r1  ! Before loop
        add     #1, r1  ! Before loop
        # Loop should execute five instructions five times.
        # Loop should execute five instructions five times.
Loop5_begin:
Loop5_begin:
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
Loop5_last3:
Loop5_last3:
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
Loop5_last2:
Loop5_last2:
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
Loop5_last1:
Loop5_last1:
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
Loop5_last:
Loop5_last:
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
Loop5_end:
Loop5_end:
        add     #2, r1  ! After loop
        add     #2, r1  ! After loop
 
 
        # r1 = 0xa5a5a5a5 + 28 (25 in loop, two after, one before)
        # r1 = 0xa5a5a5a5 + 28 (25 in loop, two after, one before)
        assertreg       0xa5a5a5a5+28, r1
        assertreg       0xa5a5a5a5+28, r1
 
 
        set_greg        0xa5a5a5a5, r0
        set_greg        0xa5a5a5a5, r0
        set_greg        0xa5a5a5a5, r1
        set_greg        0xa5a5a5a5, r1
        test_grs_a5a5
        test_grs_a5a5
 
 
loopn:
loopn:
        set_grs_a5a5
        set_grs_a5a5
 
 
        ldrs    Loopn_begin
        ldrs    Loopn_begin
        ldre    Loopn_last3+4
        ldre    Loopn_last3+4
        setrc   #5
        setrc   #5
        add     #1, r1  ! Before loop
        add     #1, r1  ! Before loop
        # Loop should execute n instructions five times.
        # Loop should execute n instructions five times.
Loopn_begin:
Loopn_begin:
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
Loopn_last3:
Loopn_last3:
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
Loopn_last2:
Loopn_last2:
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
Loopn_last1:
Loopn_last1:
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
Loopn_last:
Loopn_last:
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
Loopn_end:
Loopn_end:
        add     #3, r1  ! After loop
        add     #3, r1  ! After loop
 
 
        # r1 = 0xa5a5a5a5 + 64 (60 in loop, three after, one before)
        # r1 = 0xa5a5a5a5 + 64 (60 in loop, three after, one before)
        assertreg       0xa5a5a5a5+64, r1
        assertreg       0xa5a5a5a5+64, r1
 
 
        set_greg 0xa5a5a5a5, r0
        set_greg 0xa5a5a5a5, r0
        set_greg 0xa5a5a5a5, r1
        set_greg 0xa5a5a5a5, r1
        test_grs_a5a5
        test_grs_a5a5
 
 
loop1e:
loop1e:
        set_grs_a5a5
        set_grs_a5a5
 
 
        ldrs    Loop1e_begin
        ldrs    Loop1e_begin
        ldre    Loop1e_last
        ldre    Loop1e_last
        ldrc    #5
        ldrc    #5
        add     #1, r1  ! Before loop
        add     #1, r1  ! Before loop
        # Loop should execute one instruction five times.
        # Loop should execute one instruction five times.
Loop1e_begin:
Loop1e_begin:
Loop1e_last:
Loop1e_last:
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
Loop1e_end:
Loop1e_end:
        add     #2, r1  ! After loop
        add     #2, r1  ! After loop
 
 
        # r1 = 0xa5a5a5a5 + 8 (five in loop, two after, one before)
        # r1 = 0xa5a5a5a5 + 8 (five in loop, two after, one before)
        assertreg       0xa5a5a5a5+8, r1
        assertreg       0xa5a5a5a5+8, r1
 
 
        set_greg        0xa5a5a5a5, r0
        set_greg        0xa5a5a5a5, r0
        set_greg        0xa5a5a5a5, r1
        set_greg        0xa5a5a5a5, r1
        test_grs_a5a5
        test_grs_a5a5
 
 
loop2e:
loop2e:
        set_grs_a5a5
        set_grs_a5a5
 
 
        ldrs    Loop2e_begin
        ldrs    Loop2e_begin
        ldre    Loop2e_last
        ldre    Loop2e_last
        ldrc    #5
        ldrc    #5
        add     #1, r1  ! Before loop
        add     #1, r1  ! Before loop
        # Loop should execute two instructions five times.
        # Loop should execute two instructions five times.
Loop2e_begin:
Loop2e_begin:
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
Loop2e_last:
Loop2e_last:
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
Loop2e_end:
Loop2e_end:
        add     #2, r1  ! After loop
        add     #2, r1  ! After loop
 
 
        # r1 = 0xa5a5a5a5 + 13 (ten in loop, two after, one before)
        # r1 = 0xa5a5a5a5 + 13 (ten in loop, two after, one before)
        assertreg       0xa5a5a5a5+13, r1
        assertreg       0xa5a5a5a5+13, r1
 
 
        set_greg        0xa5a5a5a5, r0
        set_greg        0xa5a5a5a5, r0
        set_greg        0xa5a5a5a5, r1
        set_greg        0xa5a5a5a5, r1
        test_grs_a5a5
        test_grs_a5a5
 
 
loop3e:
loop3e:
        set_grs_a5a5
        set_grs_a5a5
 
 
        ldrs    Loop3e_begin
        ldrs    Loop3e_begin
        ldre    Loop3e_last
        ldre    Loop3e_last
        ldrc    #5
        ldrc    #5
        add     #1, r1  ! Before loop
        add     #1, r1  ! Before loop
        # Loop should execute three instructions five times.
        # Loop should execute three instructions five times.
Loop3e_begin:
Loop3e_begin:
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
Loop3e_last:
Loop3e_last:
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
Loop3e_end:
Loop3e_end:
        add     #2, r1  ! After loop
        add     #2, r1  ! After loop
 
 
        # r1 = 0xa5a5a5a5 + 18 (fifteen in loop, two after, one before)
        # r1 = 0xa5a5a5a5 + 18 (fifteen in loop, two after, one before)
        assertreg       0xa5a5a5a5+18, r1
        assertreg       0xa5a5a5a5+18, r1
 
 
        set_greg        0xa5a5a5a5, r0
        set_greg        0xa5a5a5a5, r0
        set_greg        0xa5a5a5a5, r1
        set_greg        0xa5a5a5a5, r1
        test_grs_a5a5
        test_grs_a5a5
 
 
loop4e:
loop4e:
        set_grs_a5a5
        set_grs_a5a5
 
 
        ldrs    Loop4e_begin
        ldrs    Loop4e_begin
        ldre    Loop4e_last
        ldre    Loop4e_last
        ldrc    #5
        ldrc    #5
        add     #1, r1  ! Before loop
        add     #1, r1  ! Before loop
        # Loop should execute four instructions five times.
        # Loop should execute four instructions five times.
Loop4e_begin:
Loop4e_begin:
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
Loop4e_last:
Loop4e_last:
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
Loop4e_end:
Loop4e_end:
        add     #2, r1  ! After loop
        add     #2, r1  ! After loop
 
 
        # r1 = 0xa5a5a5a5 + 23 (twenty in loop, two after, one before)
        # r1 = 0xa5a5a5a5 + 23 (twenty in loop, two after, one before)
        assertreg       0xa5a5a5a5+23, r1
        assertreg       0xa5a5a5a5+23, r1
 
 
        set_greg        0xa5a5a5a5, r0
        set_greg        0xa5a5a5a5, r0
        set_greg        0xa5a5a5a5, r1
        set_greg        0xa5a5a5a5, r1
        test_grs_a5a5
        test_grs_a5a5
 
 
loop5e:
loop5e:
        set_grs_a5a5
        set_grs_a5a5
 
 
        ldrs    Loop5e_begin
        ldrs    Loop5e_begin
        ldre    Loop5e_last
        ldre    Loop5e_last
        ldrc    #5
        ldrc    #5
        add     #1, r1  ! Before loop
        add     #1, r1  ! Before loop
        # Loop should execute five instructions five times.
        # Loop should execute five instructions five times.
Loop5e_begin:
Loop5e_begin:
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
Loop5e_last:
Loop5e_last:
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
Loop5e_end:
Loop5e_end:
        add     #2, r1  ! After loop
        add     #2, r1  ! After loop
 
 
        # r1 = 0xa5a5a5a5 + 28 (twenty five in loop, two after, one before)
        # r1 = 0xa5a5a5a5 + 28 (twenty five in loop, two after, one before)
        assertreg       0xa5a5a5a5+28, r1
        assertreg       0xa5a5a5a5+28, r1
 
 
        set_greg        0xa5a5a5a5, r0
        set_greg        0xa5a5a5a5, r0
        set_greg        0xa5a5a5a5, r1
        set_greg        0xa5a5a5a5, r1
        test_grs_a5a5
        test_grs_a5a5
 
 
loop_n_e:
loop_n_e:
        set_grs_a5a5
        set_grs_a5a5
 
 
        ldrs    Loop_n_e_begin
        ldrs    Loop_n_e_begin
        ldre    Loop_n_e_last
        ldre    Loop_n_e_last
        ldrc    #5
        ldrc    #5
        add     #1, r1  ! Before loop
        add     #1, r1  ! Before loop
        # Loop should execute n instructions five times.
        # Loop should execute n instructions five times.
Loop_n_e_begin:
Loop_n_e_begin:
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
Loop_n_e_last:
Loop_n_e_last:
        add     #1, r1  ! Within loop
        add     #1, r1  ! Within loop
Loop_n_e_end:
Loop_n_e_end:
        add     #2, r1  ! After loop
        add     #2, r1  ! After loop
 
 
        # r1 = 0xa5a5a5a5 + 48 (forty five in loop, two after, one before)
        # r1 = 0xa5a5a5a5 + 48 (forty five in loop, two after, one before)
        assertreg       0xa5a5a5a5+48, r1
        assertreg       0xa5a5a5a5+48, r1
 
 
        set_greg        0xa5a5a5a5, r0
        set_greg        0xa5a5a5a5, r0
        set_greg        0xa5a5a5a5, r1
        set_greg        0xa5a5a5a5, r1
        test_grs_a5a5
        test_grs_a5a5
 
 
        pass
        pass
 
 
        exit 0
        exit 0
 
 
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.