1a2e67072SMax Filippov#include "macros.inc" 27d890b40SMax Filippov 37d890b40SMax Filippovtest_suite loop 47d890b40SMax Filippov 5*50f0171aSMax Filippov#if XCHAL_HAVE_LOOPS 6*50f0171aSMax Filippov 77d890b40SMax Filippovtest loop 87d890b40SMax Filippov movi a2, 0 97d890b40SMax Filippov movi a3, 5 107d890b40SMax Filippov loop a3, 1f 117d890b40SMax Filippov addi a2, a2, 1 127d890b40SMax Filippov1: 137d890b40SMax Filippov assert eqi, a2, 5 147d890b40SMax Filippovtest_end 157d890b40SMax Filippov 167d890b40SMax Filippovtest loop0 177d890b40SMax Filippov movi a2, 0 187d890b40SMax Filippov loop a2, 1f 197d890b40SMax Filippov rsr a2, lcount 207d890b40SMax Filippov assert eqi, a2, -1 217d890b40SMax Filippov j 1f 227d890b40SMax Filippov1: 237d890b40SMax Filippovtest_end 247d890b40SMax Filippov 257d890b40SMax Filippovtest loop_jump 267d890b40SMax Filippov movi a2, 0 277d890b40SMax Filippov movi a3, 5 287d890b40SMax Filippov loop a3, 1f 297d890b40SMax Filippov addi a2, a2, 1 307d890b40SMax Filippov j 1f 317d890b40SMax Filippov1: 327d890b40SMax Filippov assert eqi, a2, 1 337d890b40SMax Filippovtest_end 347d890b40SMax Filippov 357d890b40SMax Filippovtest loop_branch 367d890b40SMax Filippov movi a2, 0 377d890b40SMax Filippov movi a3, 5 387d890b40SMax Filippov loop a3, 1f 397d890b40SMax Filippov addi a2, a2, 1 407d890b40SMax Filippov beqi a2, 3, 1f 417d890b40SMax Filippov1: 427d890b40SMax Filippov assert eqi, a2, 3 437d890b40SMax Filippovtest_end 447d890b40SMax Filippov 457d890b40SMax Filippovtest loop_manual 467d890b40SMax Filippov movi a2, 0 477d890b40SMax Filippov movi a3, 5 487d890b40SMax Filippov movi a4, 1f 497d890b40SMax Filippov movi a5, 2f 507d890b40SMax Filippov wsr a3, lcount 517d890b40SMax Filippov wsr a4, lbeg 527d890b40SMax Filippov wsr a5, lend 537d890b40SMax Filippov isync 547d890b40SMax Filippov j 1f 557d890b40SMax Filippov.align 4 567d890b40SMax Filippov1: 577d890b40SMax Filippov addi a2, a2, 1 587d890b40SMax Filippov2: 597d890b40SMax Filippov assert eqi, a2, 6 607d890b40SMax Filippovtest_end 617d890b40SMax Filippov 627d890b40SMax Filippovtest loop_excm 637d890b40SMax Filippov movi a2, 0 647d890b40SMax Filippov movi a3, 5 657d890b40SMax Filippov rsr a4, ps 667d890b40SMax Filippov movi a5, 0x10 677d890b40SMax Filippov or a4, a4, a5 687d890b40SMax Filippov wsr a4, ps 697d890b40SMax Filippov isync 707d890b40SMax Filippov loop a3, 1f 717d890b40SMax Filippov addi a2, a2, 1 727d890b40SMax Filippov1: 737d890b40SMax Filippov xor a4, a4, a5 747d890b40SMax Filippov isync 757d890b40SMax Filippov wsr a4, ps 767d890b40SMax Filippov assert eqi, a2, 1 777d890b40SMax Filippovtest_end 787d890b40SMax Filippov 79ec9fe93eSMax Filippovtest lbeg_invalidation 80ec9fe93eSMax Filippov movi a2, 0 81ec9fe93eSMax Filippov movi a3, 1 82ec9fe93eSMax Filippov movi a4, 1f 83ec9fe93eSMax Filippov movi a5, 3f 84ec9fe93eSMax Filippov wsr a3, lcount 85ec9fe93eSMax Filippov wsr a4, lbeg 86ec9fe93eSMax Filippov wsr a5, lend 87ec9fe93eSMax Filippov isync 88ec9fe93eSMax Filippov j 1f 89ec9fe93eSMax Filippov.align 4 90ec9fe93eSMax Filippov1: 91ec9fe93eSMax Filippov addi a2, a2, 1 92ec9fe93eSMax Filippov j 2f 93ec9fe93eSMax Filippov.align 4 94ec9fe93eSMax Filippov2: 95ec9fe93eSMax Filippov addi a2, a2, 2 96ec9fe93eSMax Filippov movi a3, 2b 97ec9fe93eSMax Filippov wsr a3, lbeg 98ec9fe93eSMax Filippov isync 99ec9fe93eSMax Filippov nop 100ec9fe93eSMax Filippov3: 101ec9fe93eSMax Filippov assert eqi, a2, 5 102ec9fe93eSMax Filippovtest_end 103ec9fe93eSMax Filippov 104ec9fe93eSMax Filippovtest lend_invalidation 105ec9fe93eSMax Filippov movi a2, 0 106ec9fe93eSMax Filippov movi a3, 5 107ec9fe93eSMax Filippov movi a4, 1f 108ec9fe93eSMax Filippov movi a5, 2f 109ec9fe93eSMax Filippov wsr a3, lcount 110ec9fe93eSMax Filippov wsr a4, lbeg 111ec9fe93eSMax Filippov wsr a5, lend 112ec9fe93eSMax Filippov isync 113ec9fe93eSMax Filippov j 1f 114ec9fe93eSMax Filippov.align 4 115ec9fe93eSMax Filippov1: 116ec9fe93eSMax Filippov addi a2, a2, 1 117ec9fe93eSMax Filippov2: 118ec9fe93eSMax Filippov beqi a3, 3, 1f 119ec9fe93eSMax Filippov assert eqi, a2, 6 120ec9fe93eSMax Filippov movi a3, 3 121ec9fe93eSMax Filippov wsr a3, lcount 122ec9fe93eSMax Filippov wsr a4, lend 123ec9fe93eSMax Filippov isync 124ec9fe93eSMax Filippov j 1b 125ec9fe93eSMax Filippov1: 126ec9fe93eSMax Filippov assert eqi, a2, 7 127ec9fe93eSMax Filippovtest_end 128ec9fe93eSMax Filippov 129536a98d4SMax Filippovtest loopnez 130536a98d4SMax Filippov movi a2, 0 131536a98d4SMax Filippov movi a3, 5 132536a98d4SMax Filippov loopnez a3, 1f 133536a98d4SMax Filippov addi a2, a2, 1 134536a98d4SMax Filippov1: 135536a98d4SMax Filippov assert eqi, a2, 5 136536a98d4SMax Filippov 137536a98d4SMax Filippov movi a2, 0 138536a98d4SMax Filippov movi a3, 0 139536a98d4SMax Filippov loopnez a3, 1f 140536a98d4SMax Filippov test_fail 141536a98d4SMax Filippov1: 142536a98d4SMax Filippovtest_end 143536a98d4SMax Filippov 144536a98d4SMax Filippovtest loopgtz 145536a98d4SMax Filippov movi a2, 0 146536a98d4SMax Filippov movi a3, 5 147536a98d4SMax Filippov loopgtz a3, 1f 148536a98d4SMax Filippov addi a2, a2, 1 149536a98d4SMax Filippov1: 150536a98d4SMax Filippov assert eqi, a2, 5 151536a98d4SMax Filippov 152536a98d4SMax Filippov movi a2, 0 153536a98d4SMax Filippov movi a3, 0 154536a98d4SMax Filippov loopgtz a3, 1f 155536a98d4SMax Filippov test_fail 156536a98d4SMax Filippov1: 157536a98d4SMax Filippov 158536a98d4SMax Filippov movi a2, 0 159536a98d4SMax Filippov movi a3, 0x80000000 160536a98d4SMax Filippov loopgtz a3, 1f 161536a98d4SMax Filippov test_fail 162536a98d4SMax Filippov1: 163536a98d4SMax Filippovtest_end 164536a98d4SMax Filippov 165*50f0171aSMax Filippov#endif 166*50f0171aSMax Filippov 1677d890b40SMax Filippovtest_suite_end 168