Home | History | Annotate | Line # | Download | only in sh
      1  1.1  christos # sh testcase for loop control
      2  1.1  christos # mach:	 shdsp
      3  1.1  christos # as(shdsp):	-defsym sim_cpu=1 -dsp
      4  1.1  christos 
      5  1.1  christos 	.include "testutils.inc"
      6  1.1  christos 
      7  1.1  christos 	start
      8  1.1  christos loop1:
      9  1.1  christos 	set_grs_a5a5
     10  1.1  christos 
     11  1.1  christos 	ldrs	Loop1_start0+8
     12  1.1  christos 	ldre	Loop1_start0+4
     13  1.1  christos 	setrc	#5
     14  1.1  christos Loop1_start0:
     15  1.1  christos 	add	#1, r1	! Before loop
     16  1.1  christos 	# Loop should execute one instruction five times.
     17  1.1  christos Loop1_begin:
     18  1.1  christos 	add	#1, r1	! Within loop
     19  1.1  christos Loop1_end:
     20  1.1  christos 	add	#2, r1	! After loop
     21  1.1  christos 
     22  1.1  christos 	# r1 = 0xa5a5a5a5 + 8 (five in loop, two after, one before)
     23  1.1  christos 	assertreg	0xa5a5a5a5+8, r1
     24  1.1  christos 
     25  1.1  christos 	set_greg	0xa5a5a5a5, r0
     26  1.1  christos 	set_greg	0xa5a5a5a5, r1
     27  1.1  christos 	test_grs_a5a5
     28  1.1  christos 
     29  1.1  christos loop2:
     30  1.1  christos 	set_grs_a5a5
     31  1.1  christos 
     32  1.1  christos 	ldrs	Loop2_start0+6
     33  1.1  christos 	ldre	Loop2_start0+4
     34  1.1  christos 	setrc	#5
     35  1.1  christos Loop2_start0:
     36  1.1  christos 	add	#1, r1	! Before loop
     37  1.1  christos 	# Loop should execute two instructions five times.
     38  1.1  christos Loop2_begin:
     39  1.1  christos 	add	#1, r1	! Within loop
     40  1.1  christos 	add	#1, r1	! Within loop
     41  1.1  christos Loop2_end:
     42  1.1  christos 	add	#3, r1	! After loop
     43  1.1  christos 
     44  1.1  christos 	# r1 = 0xa5a5a5a5 + 14 (ten in loop, three after, one before)
     45  1.1  christos 	assertreg	0xa5a5a5a5+14, r1
     46  1.1  christos 
     47  1.1  christos 	set_greg	0xa5a5a5a5, r0
     48  1.1  christos 	set_greg	0xa5a5a5a5, r1
     49  1.1  christos 	test_grs_a5a5
     50  1.1  christos 
     51  1.1  christos loop3:
     52  1.1  christos 	set_grs_a5a5
     53  1.1  christos 
     54  1.1  christos 	ldrs	Loop3_start0+4
     55  1.1  christos 	ldre	Loop3_start0+4
     56  1.1  christos 	setrc	#5
     57  1.1  christos Loop3_start0:
     58  1.1  christos 	add	#1, r1	! Before loop
     59  1.1  christos 	# Loop should execute three instructions five times.
     60  1.1  christos Loop3_begin:
     61  1.1  christos 	add	#1, r1	! Within loop
     62  1.1  christos 	add	#1, r1	! Within loop
     63  1.1  christos 	add	#1, r1	! Within loop
     64  1.1  christos Loop3_end:
     65  1.1  christos 	add	#2, r1	! After loop
     66  1.1  christos 
     67  1.1  christos 	# r1 = 0xa5a5a5a5 + 18 (fifteen in loop, two after, one before)
     68  1.1  christos 	assertreg	0xa5a5a5a5+18, r1
     69  1.1  christos 
     70  1.1  christos 	set_greg	0xa5a5a5a5, r0
     71  1.1  christos 	set_greg	0xa5a5a5a5, r1
     72  1.1  christos 	test_grs_a5a5
     73  1.1  christos 
     74  1.1  christos loop4:
     75  1.1  christos 	set_grs_a5a5
     76  1.1  christos 
     77  1.1  christos 	ldrs	Loop4_begin
     78  1.1  christos 	ldre	Loop4_last3+4
     79  1.1  christos 	setrc	#5
     80  1.1  christos 	add	#1, r1	! Before loop
     81  1.1  christos 	# Loop should execute four instructions five times.
     82  1.1  christos Loop4_begin:
     83  1.1  christos Loop4_last3:
     84  1.1  christos 	add	#1, r1	! Within loop
     85  1.1  christos Loop4_last2:
     86  1.1  christos 	add	#1, r1	! Within loop
     87  1.1  christos Loop4_last1:
     88  1.1  christos 	add	#1, r1	! Within loop
     89  1.1  christos Loop4_last:
     90  1.1  christos 	add	#1, r1	! Within loop
     91  1.1  christos Loop4_end:
     92  1.1  christos 	add	#2, r1	! After loop
     93  1.1  christos 
     94  1.1  christos 	# r1 = 0xa5a5a5a5 + 23 (20 in loop, two after, one before)
     95  1.1  christos 	assertreg	0xa5a5a5a5+23, r1
     96  1.1  christos 
     97  1.1  christos 	set_greg	0xa5a5a5a5, r0
     98  1.1  christos 	set_greg	0xa5a5a5a5, r1
     99  1.1  christos 	test_grs_a5a5
    100  1.1  christos 
    101  1.1  christos loop5:
    102  1.1  christos 	set_grs_a5a5
    103  1.1  christos 
    104  1.1  christos 	ldrs	Loop5_begin
    105  1.1  christos 	ldre	Loop5_last3+4
    106  1.1  christos 	setrc	#5
    107  1.1  christos 	add	#1, r1	! Before loop
    108  1.1  christos 	# Loop should execute five instructions five times.
    109  1.1  christos Loop5_begin:
    110  1.1  christos 	add	#1, r1	! Within loop
    111  1.1  christos Loop5_last3:
    112  1.1  christos 	add	#1, r1	! Within loop
    113  1.1  christos Loop5_last2:
    114  1.1  christos 	add	#1, r1	! Within loop
    115  1.1  christos Loop5_last1:
    116  1.1  christos 	add	#1, r1	! Within loop
    117  1.1  christos Loop5_last:
    118  1.1  christos 	add	#1, r1	! Within loop
    119  1.1  christos Loop5_end:
    120  1.1  christos 	add	#2, r1	! After loop
    121  1.1  christos 
    122  1.1  christos 	# r1 = 0xa5a5a5a5 + 28 (25 in loop, two after, one before)
    123  1.1  christos 	assertreg	0xa5a5a5a5+28, r1
    124  1.1  christos 
    125  1.1  christos 	set_greg	0xa5a5a5a5, r0
    126  1.1  christos 	set_greg	0xa5a5a5a5, r1
    127  1.1  christos 	test_grs_a5a5
    128  1.1  christos 
    129  1.1  christos loopn:
    130  1.1  christos 	set_grs_a5a5
    131  1.1  christos 
    132  1.1  christos 	ldrs	Loopn_begin
    133  1.1  christos 	ldre	Loopn_last3+4
    134  1.1  christos 	setrc	#5
    135  1.1  christos 	add	#1, r1	! Before loop
    136  1.1  christos 	# Loop should execute n instructions five times.
    137  1.1  christos Loopn_begin:
    138  1.1  christos 	add	#1, r1	! Within loop
    139  1.1  christos 	add	#1, r1	! Within loop
    140  1.1  christos 	add	#1, r1	! Within loop
    141  1.1  christos 	add	#1, r1	! Within loop
    142  1.1  christos 	add	#1, r1	! Within loop
    143  1.1  christos 	add	#1, r1	! Within loop
    144  1.1  christos 	add	#1, r1	! Within loop
    145  1.1  christos 	add	#1, r1	! Within loop
    146  1.1  christos Loopn_last3:
    147  1.1  christos 	add	#1, r1	! Within loop
    148  1.1  christos Loopn_last2:
    149  1.1  christos 	add	#1, r1	! Within loop
    150  1.1  christos Loopn_last1:
    151  1.1  christos 	add	#1, r1	! Within loop
    152  1.1  christos Loopn_last:
    153  1.1  christos 	add	#1, r1	! Within loop
    154  1.1  christos Loopn_end:
    155  1.1  christos 	add	#3, r1	! After loop
    156  1.1  christos 
    157  1.1  christos 	# r1 = 0xa5a5a5a5 + 64 (60 in loop, three after, one before)
    158  1.1  christos 	assertreg	0xa5a5a5a5+64, r1
    159  1.1  christos 
    160  1.1  christos 	set_greg 0xa5a5a5a5, r0
    161  1.1  christos 	set_greg 0xa5a5a5a5, r1
    162  1.1  christos 	test_grs_a5a5
    163  1.1  christos 
    164  1.1  christos loop1e:
    165  1.1  christos 	set_grs_a5a5
    166  1.1  christos 
    167  1.1  christos 	ldrs	Loop1e_begin
    168  1.1  christos 	ldre	Loop1e_last
    169  1.1  christos 	ldrc	#5
    170  1.1  christos 	add	#1, r1	! Before loop
    171  1.1  christos 	# Loop should execute one instruction five times.
    172  1.1  christos Loop1e_begin:
    173  1.1  christos Loop1e_last:
    174  1.1  christos 	add	#1, r1	! Within loop
    175  1.1  christos Loop1e_end:
    176  1.1  christos 	add	#2, r1	! After loop
    177  1.1  christos 
    178  1.1  christos 	# r1 = 0xa5a5a5a5 + 8 (five in loop, two after, one before)
    179  1.1  christos 	assertreg	0xa5a5a5a5+8, r1
    180  1.1  christos 
    181  1.1  christos 	set_greg	0xa5a5a5a5, r0
    182  1.1  christos 	set_greg	0xa5a5a5a5, r1
    183  1.1  christos 	test_grs_a5a5
    184  1.1  christos 
    185  1.1  christos loop2e:
    186  1.1  christos 	set_grs_a5a5
    187  1.1  christos 
    188  1.1  christos 	ldrs	Loop2e_begin
    189  1.1  christos 	ldre	Loop2e_last
    190  1.1  christos 	ldrc	#5
    191  1.1  christos 	add	#1, r1	! Before loop
    192  1.1  christos 	# Loop should execute two instructions five times.
    193  1.1  christos Loop2e_begin:
    194  1.1  christos 	add	#1, r1	! Within loop
    195  1.1  christos Loop2e_last:
    196  1.1  christos 	add	#1, r1	! Within loop
    197  1.1  christos Loop2e_end:
    198  1.1  christos 	add	#2, r1	! After loop
    199  1.1  christos 
    200  1.1  christos 	# r1 = 0xa5a5a5a5 + 13 (ten in loop, two after, one before)
    201  1.1  christos 	assertreg	0xa5a5a5a5+13, r1
    202  1.1  christos 
    203  1.1  christos 	set_greg	0xa5a5a5a5, r0
    204  1.1  christos 	set_greg	0xa5a5a5a5, r1
    205  1.1  christos 	test_grs_a5a5
    206  1.1  christos 
    207  1.1  christos loop3e:
    208  1.1  christos 	set_grs_a5a5
    209  1.1  christos 
    210  1.1  christos 	ldrs	Loop3e_begin
    211  1.1  christos 	ldre	Loop3e_last
    212  1.1  christos 	ldrc	#5
    213  1.1  christos 	add	#1, r1	! Before loop
    214  1.1  christos 	# Loop should execute three instructions five times.
    215  1.1  christos Loop3e_begin:
    216  1.1  christos 	add	#1, r1	! Within loop
    217  1.1  christos 	add	#1, r1	! Within loop
    218  1.1  christos Loop3e_last:
    219  1.1  christos 	add	#1, r1	! Within loop
    220  1.1  christos Loop3e_end:
    221  1.1  christos 	add	#2, r1	! After loop
    222  1.1  christos 
    223  1.1  christos 	# r1 = 0xa5a5a5a5 + 18 (fifteen in loop, two after, one before)
    224  1.1  christos 	assertreg	0xa5a5a5a5+18, r1
    225  1.1  christos 
    226  1.1  christos 	set_greg	0xa5a5a5a5, r0
    227  1.1  christos 	set_greg	0xa5a5a5a5, r1
    228  1.1  christos 	test_grs_a5a5
    229  1.1  christos 
    230  1.1  christos loop4e:
    231  1.1  christos 	set_grs_a5a5
    232  1.1  christos 
    233  1.1  christos 	ldrs	Loop4e_begin
    234  1.1  christos 	ldre	Loop4e_last
    235  1.1  christos 	ldrc	#5
    236  1.1  christos 	add	#1, r1	! Before loop
    237  1.1  christos 	# Loop should execute four instructions five times.
    238  1.1  christos Loop4e_begin:
    239  1.1  christos 	add	#1, r1	! Within loop
    240  1.1  christos 	add	#1, r1	! Within loop
    241  1.1  christos 	add	#1, r1	! Within loop
    242  1.1  christos Loop4e_last:
    243  1.1  christos 	add	#1, r1	! Within loop
    244  1.1  christos Loop4e_end:
    245  1.1  christos 	add	#2, r1	! After loop
    246  1.1  christos 
    247  1.1  christos 	# r1 = 0xa5a5a5a5 + 23 (twenty in loop, two after, one before)
    248  1.1  christos 	assertreg	0xa5a5a5a5+23, r1
    249  1.1  christos 
    250  1.1  christos 	set_greg	0xa5a5a5a5, r0
    251  1.1  christos 	set_greg	0xa5a5a5a5, r1
    252  1.1  christos 	test_grs_a5a5
    253  1.1  christos 
    254  1.1  christos loop5e:
    255  1.1  christos 	set_grs_a5a5
    256  1.1  christos 
    257  1.1  christos 	ldrs	Loop5e_begin
    258  1.1  christos 	ldre	Loop5e_last
    259  1.1  christos 	ldrc	#5
    260  1.1  christos 	add	#1, r1	! Before loop
    261  1.1  christos 	# Loop should execute five instructions five times.
    262  1.1  christos Loop5e_begin:
    263  1.1  christos 	add	#1, r1	! Within loop
    264  1.1  christos 	add	#1, r1	! Within loop
    265  1.1  christos 	add	#1, r1	! Within loop
    266  1.1  christos 	add	#1, r1	! Within loop
    267  1.1  christos Loop5e_last:
    268  1.1  christos 	add	#1, r1	! Within loop
    269  1.1  christos Loop5e_end:
    270  1.1  christos 	add	#2, r1	! After loop
    271  1.1  christos 
    272  1.1  christos 	# r1 = 0xa5a5a5a5 + 28 (twenty five in loop, two after, one before)
    273  1.1  christos 	assertreg	0xa5a5a5a5+28, r1
    274  1.1  christos 
    275  1.1  christos 	set_greg	0xa5a5a5a5, r0
    276  1.1  christos 	set_greg	0xa5a5a5a5, r1
    277  1.1  christos 	test_grs_a5a5
    278  1.1  christos 
    279  1.1  christos loop_n_e:
    280  1.1  christos 	set_grs_a5a5
    281  1.1  christos 
    282  1.1  christos 	ldrs	Loop_n_e_begin
    283  1.1  christos 	ldre	Loop_n_e_last
    284  1.1  christos 	ldrc	#5
    285  1.1  christos 	add	#1, r1	! Before loop
    286  1.1  christos 	# Loop should execute n instructions five times.
    287  1.1  christos Loop_n_e_begin:
    288  1.1  christos 	add	#1, r1	! Within loop
    289  1.1  christos 	add	#1, r1	! Within loop
    290  1.1  christos 	add	#1, r1	! Within loop
    291  1.1  christos 	add	#1, r1	! Within loop
    292  1.1  christos 	add	#1, r1	! Within loop
    293  1.1  christos 	add	#1, r1	! Within loop
    294  1.1  christos 	add	#1, r1	! Within loop
    295  1.1  christos 	add	#1, r1	! Within loop
    296  1.1  christos Loop_n_e_last:
    297  1.1  christos 	add	#1, r1	! Within loop
    298  1.1  christos Loop_n_e_end:
    299  1.1  christos 	add	#2, r1	! After loop
    300  1.1  christos 
    301  1.1  christos 	# r1 = 0xa5a5a5a5 + 48 (forty five in loop, two after, one before)
    302  1.1  christos 	assertreg	0xa5a5a5a5+48, r1
    303  1.1  christos 
    304  1.1  christos 	set_greg	0xa5a5a5a5, r0
    305  1.1  christos 	set_greg	0xa5a5a5a5, r1
    306  1.1  christos 	test_grs_a5a5
    307  1.1  christos 
    308  1.1  christos 	pass
    309  1.1  christos 
    310  1.1  christos 	exit 0
    311  1.1  christos 
    312