17d890b40SMax Filippov.include "macros.inc" 27d890b40SMax Filippov 37d890b40SMax Filippovtest_suite loop 47d890b40SMax Filippov 57d890b40SMax Filippovtest loop 67d890b40SMax Filippov movi a2, 0 77d890b40SMax Filippov movi a3, 5 87d890b40SMax Filippov loop a3, 1f 97d890b40SMax Filippov addi a2, a2, 1 107d890b40SMax Filippov1: 117d890b40SMax Filippov assert eqi, a2, 5 127d890b40SMax Filippovtest_end 137d890b40SMax Filippov 147d890b40SMax Filippovtest loop0 157d890b40SMax Filippov movi a2, 0 167d890b40SMax Filippov loop a2, 1f 177d890b40SMax Filippov rsr a2, lcount 187d890b40SMax Filippov assert eqi, a2, -1 197d890b40SMax Filippov j 1f 207d890b40SMax Filippov1: 217d890b40SMax Filippovtest_end 227d890b40SMax Filippov 237d890b40SMax Filippovtest loop_jump 247d890b40SMax Filippov movi a2, 0 257d890b40SMax Filippov movi a3, 5 267d890b40SMax Filippov loop a3, 1f 277d890b40SMax Filippov addi a2, a2, 1 287d890b40SMax Filippov j 1f 297d890b40SMax Filippov1: 307d890b40SMax Filippov assert eqi, a2, 1 317d890b40SMax Filippovtest_end 327d890b40SMax Filippov 337d890b40SMax Filippovtest loop_branch 347d890b40SMax Filippov movi a2, 0 357d890b40SMax Filippov movi a3, 5 367d890b40SMax Filippov loop a3, 1f 377d890b40SMax Filippov addi a2, a2, 1 387d890b40SMax Filippov beqi a2, 3, 1f 397d890b40SMax Filippov1: 407d890b40SMax Filippov assert eqi, a2, 3 417d890b40SMax Filippovtest_end 427d890b40SMax Filippov 437d890b40SMax Filippovtest loop_manual 447d890b40SMax Filippov movi a2, 0 457d890b40SMax Filippov movi a3, 5 467d890b40SMax Filippov movi a4, 1f 477d890b40SMax Filippov movi a5, 2f 487d890b40SMax Filippov wsr a3, lcount 497d890b40SMax Filippov wsr a4, lbeg 507d890b40SMax Filippov wsr a5, lend 517d890b40SMax Filippov isync 527d890b40SMax Filippov j 1f 537d890b40SMax Filippov.align 4 547d890b40SMax Filippov1: 557d890b40SMax Filippov addi a2, a2, 1 567d890b40SMax Filippov2: 577d890b40SMax Filippov assert eqi, a2, 6 587d890b40SMax Filippovtest_end 597d890b40SMax Filippov 607d890b40SMax Filippovtest loop_excm 617d890b40SMax Filippov movi a2, 0 627d890b40SMax Filippov movi a3, 5 637d890b40SMax Filippov rsr a4, ps 647d890b40SMax Filippov movi a5, 0x10 657d890b40SMax Filippov or a4, a4, a5 667d890b40SMax Filippov wsr a4, ps 677d890b40SMax Filippov isync 687d890b40SMax Filippov loop a3, 1f 697d890b40SMax Filippov addi a2, a2, 1 707d890b40SMax Filippov1: 717d890b40SMax Filippov xor a4, a4, a5 727d890b40SMax Filippov isync 737d890b40SMax Filippov wsr a4, ps 747d890b40SMax Filippov assert eqi, a2, 1 757d890b40SMax Filippovtest_end 767d890b40SMax Filippov 77ec9fe93eSMax Filippovtest lbeg_invalidation 78ec9fe93eSMax Filippov movi a2, 0 79ec9fe93eSMax Filippov movi a3, 1 80ec9fe93eSMax Filippov movi a4, 1f 81ec9fe93eSMax Filippov movi a5, 3f 82ec9fe93eSMax Filippov wsr a3, lcount 83ec9fe93eSMax Filippov wsr a4, lbeg 84ec9fe93eSMax Filippov wsr a5, lend 85ec9fe93eSMax Filippov isync 86ec9fe93eSMax Filippov j 1f 87ec9fe93eSMax Filippov.align 4 88ec9fe93eSMax Filippov1: 89ec9fe93eSMax Filippov addi a2, a2, 1 90ec9fe93eSMax Filippov j 2f 91ec9fe93eSMax Filippov.align 4 92ec9fe93eSMax Filippov2: 93ec9fe93eSMax Filippov addi a2, a2, 2 94ec9fe93eSMax Filippov movi a3, 2b 95ec9fe93eSMax Filippov wsr a3, lbeg 96ec9fe93eSMax Filippov isync 97ec9fe93eSMax Filippov nop 98ec9fe93eSMax Filippov3: 99ec9fe93eSMax Filippov assert eqi, a2, 5 100ec9fe93eSMax Filippovtest_end 101ec9fe93eSMax Filippov 102ec9fe93eSMax Filippovtest lend_invalidation 103ec9fe93eSMax Filippov movi a2, 0 104ec9fe93eSMax Filippov movi a3, 5 105ec9fe93eSMax Filippov movi a4, 1f 106ec9fe93eSMax Filippov movi a5, 2f 107ec9fe93eSMax Filippov wsr a3, lcount 108ec9fe93eSMax Filippov wsr a4, lbeg 109ec9fe93eSMax Filippov wsr a5, lend 110ec9fe93eSMax Filippov isync 111ec9fe93eSMax Filippov j 1f 112ec9fe93eSMax Filippov.align 4 113ec9fe93eSMax Filippov1: 114ec9fe93eSMax Filippov addi a2, a2, 1 115ec9fe93eSMax Filippov2: 116ec9fe93eSMax Filippov beqi a3, 3, 1f 117ec9fe93eSMax Filippov assert eqi, a2, 6 118ec9fe93eSMax Filippov movi a3, 3 119ec9fe93eSMax Filippov wsr a3, lcount 120ec9fe93eSMax Filippov wsr a4, lend 121ec9fe93eSMax Filippov isync 122ec9fe93eSMax Filippov j 1b 123ec9fe93eSMax Filippov1: 124ec9fe93eSMax Filippov assert eqi, a2, 7 125ec9fe93eSMax Filippovtest_end 126ec9fe93eSMax Filippov 127*536a98d4SMax Filippovtest loopnez 128*536a98d4SMax Filippov movi a2, 0 129*536a98d4SMax Filippov movi a3, 5 130*536a98d4SMax Filippov loopnez a3, 1f 131*536a98d4SMax Filippov addi a2, a2, 1 132*536a98d4SMax Filippov1: 133*536a98d4SMax Filippov assert eqi, a2, 5 134*536a98d4SMax Filippov 135*536a98d4SMax Filippov movi a2, 0 136*536a98d4SMax Filippov movi a3, 0 137*536a98d4SMax Filippov loopnez a3, 1f 138*536a98d4SMax Filippov test_fail 139*536a98d4SMax Filippov1: 140*536a98d4SMax Filippovtest_end 141*536a98d4SMax Filippov 142*536a98d4SMax Filippovtest loopgtz 143*536a98d4SMax Filippov movi a2, 0 144*536a98d4SMax Filippov movi a3, 5 145*536a98d4SMax Filippov loopgtz a3, 1f 146*536a98d4SMax Filippov addi a2, a2, 1 147*536a98d4SMax Filippov1: 148*536a98d4SMax Filippov assert eqi, a2, 5 149*536a98d4SMax Filippov 150*536a98d4SMax Filippov movi a2, 0 151*536a98d4SMax Filippov movi a3, 0 152*536a98d4SMax Filippov loopgtz a3, 1f 153*536a98d4SMax Filippov test_fail 154*536a98d4SMax Filippov1: 155*536a98d4SMax Filippov 156*536a98d4SMax Filippov movi a2, 0 157*536a98d4SMax Filippov movi a3, 0x80000000 158*536a98d4SMax Filippov loopgtz a3, 1f 159*536a98d4SMax Filippov test_fail 160*536a98d4SMax Filippov1: 161*536a98d4SMax Filippovtest_end 162*536a98d4SMax Filippov 1637d890b40SMax Filippovtest_suite_end 164