| .include "macros.inc" | |
| test_suite loop | |
| test loop | |
| movi a2, 0 | |
| movi a3, 5 | |
| loop a3, 1f | |
| addi a2, a2, 1 | |
| 1: | |
| assert eqi, a2, 5 | |
| test_end | |
| test loop0 | |
| movi a2, 0 | |
| loop a2, 1f | |
| rsr a2, lcount | |
| assert eqi, a2, -1 | |
| j 1f | |
| 1: | |
| test_end | |
| test loop_jump | |
| movi a2, 0 | |
| movi a3, 5 | |
| loop a3, 1f | |
| addi a2, a2, 1 | |
| j 1f | |
| 1: | |
| assert eqi, a2, 1 | |
| test_end | |
| test loop_branch | |
| movi a2, 0 | |
| movi a3, 5 | |
| loop a3, 1f | |
| addi a2, a2, 1 | |
| beqi a2, 3, 1f | |
| 1: | |
| assert eqi, a2, 3 | |
| test_end | |
| test loop_manual | |
| movi a2, 0 | |
| movi a3, 5 | |
| movi a4, 1f | |
| movi a5, 2f | |
| wsr a3, lcount | |
| wsr a4, lbeg | |
| wsr a5, lend | |
| isync | |
| j 1f | |
| .align 4 | |
| 1: | |
| addi a2, a2, 1 | |
| 2: | |
| assert eqi, a2, 6 | |
| test_end | |
| test loop_excm | |
| movi a2, 0 | |
| movi a3, 5 | |
| rsr a4, ps | |
| movi a5, 0x10 | |
| or a4, a4, a5 | |
| wsr a4, ps | |
| isync | |
| loop a3, 1f | |
| addi a2, a2, 1 | |
| 1: | |
| xor a4, a4, a5 | |
| isync | |
| wsr a4, ps | |
| assert eqi, a2, 1 | |
| test_end | |
| test_suite_end |