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