blob: f418c11974aa4a67a05f273a8f890d1792613dee [file] [log] [blame]
#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