.include "macros.inc" .purgem test .macro test name movi a2, 1f movi a3, 99f 0: ipf a2, 0 ipf a2, 4 ipf a2, 8 ipf a2, 12 addi a2, a2, 16 blt a2, a3, 0b j 1f .align 4 1: .endm test_suite pipeline test register_no_stall rsr a3, ccount add a5, a6, a6 add a6, a5, a5 rsr a4, ccount sub a3, a4, a3 assert eqi, a3, 3 test_end test register_stall l32i a5, a1, 0 /* data cache preload */ nop rsr a3, ccount l32i a5, a1, 0 add a6, a5, a5 /* M-to-E interlock */ rsr a4, ccount sub a3, a4, a3 assert eqi, a3, 4 test_end test j0_stall rsr a3, ccount j 1f /* E + 2-cycle penalty */ 1: rsr a4, ccount /* E */ sub a3, a4, a3 assert eqi, a3, 4 test_end test j1_stall rsr a3, ccount j 1f nop 1: rsr a4, ccount sub a3, a4, a3 assert eqi, a3, 4 test_end test j5_stall rsr a3, ccount j 1f nop nop nop nop nop 1: rsr a4, ccount sub a3, a4, a3 assert eqi, a3, 4 test_end test b_no_stall movi a5, 1 rsr a3, ccount beqi a5, 2, 1f rsr a4, ccount sub a3, a4, a3 assert eqi, a3, 2 1: test_end test b1_stall movi a5, 1 rsr a3, ccount beqi a5, 1, 1f nop 1: rsr a4, ccount sub a3, a4, a3 assert eqi, a3, 4 test_end test b5_stall movi a5, 1 rsr a3, ccount beqi a5, 1, 1f nop nop nop nop nop 1: rsr a4, ccount sub a3, a4, a3 assert eqi, a3, 4 test_end /* PS *SYNC */ test ps_dsync rsr a5, ps isync rsr a3, ccount wsr a5, ps dsync rsr a4, ccount sub a3, a4, a3 assert eqi, a3, 5 test_end test ps_esync rsr a5, ps isync rsr a3, ccount wsr a5, ps esync rsr a4, ccount sub a3, a4, a3 assert eqi, a3, 5 test_end test ps_rsync rsr a5, ps isync rsr a3, ccount wsr a5, ps rsync rsr a4, ccount sub a3, a4, a3 assert eqi, a3, 5 test_end test ps_isync rsr a5, ps isync rsr a3, ccount wsr a5, ps isync rsr a4, ccount sub a3, a4, a3 movi a4, 9 assert eq, a3, a4 test_end test_suite_end