n64/tests/testcases/rsp/input/ltv.toml
2020-07-12 14:36:42 -04:00

240 lines
3.9 KiB
TOML

input_desc = [
"v128:dummy",
"v128:v0",
"v128:v1",
"u32:offset",
"u32:dummy",
]
output_desc = [
"v128:v0e0",
"v128:v1e0",
"v128:v2e0",
"v128:v3e0",
"v128:v4e0",
"v128:v5e0",
"v128:v6e0",
"v128:v7e0",
"v128:s7v0e0",
"v128:s7v1e0",
"v128:s7v2e0",
"v128:s7v3e0",
"v128:s7v4e0",
"v128:s7v5e0",
"v128:s7v6e0",
"v128:s7v7e0",
"v128:v0e1",
"v128:v1e1",
"v128:v2e1",
"v128:v3e1",
"v128:v4e1",
"v128:v5e1",
"v128:v6e1",
"v128:v7e1",
"v128:v0e2",
"v128:v1e2",
"v128:v2e2",
"v128:v3e2",
"v128:v4e2",
"v128:v5e2",
"v128:v6e2",
"v128:v7e2",
"v128:v0e12",
"v128:v1e12",
"v128:v2e12",
"v128:v3e12",
"v128:v4e12",
"v128:v5e12",
"v128:v6e12",
"v128:v7e12",
"v128:v0e15",
"v128:v1e15",
"v128:v2e15",
"v128:v3e15",
"v128:v4e15",
"v128:v5e15",
"v128:v6e15",
"v128:v7e15",
"v128:s7v0e15",
"v128:s7v1e15",
"v128:s7v2e15",
"v128:s7v3e15",
"v128:s7v4e15",
"v128:s7v5e15",
"v128:s7v6e15",
"v128:s7v7e15",
"v128:v0e0o7",
"v128:v1e0o7",
"v128:v2e0o7",
"v128:v3e0o7",
"v128:v4e0o7",
"v128:v5e0o7",
"v128:v6e0o7",
"v128:v7e0o7",
"v128:v0e0o8",
"v128:v1e0o8",
"v128:v2e0o8",
"v128:v3e0o8",
"v128:v4e0o8",
"v128:v5e0o8",
"v128:v6e0o8",
"v128:v7e0o8",
"v128:v0e0o15",
"v128:v1e0o15",
"v128:v2e0o15",
"v128:v3e0o15",
"v128:v4e0o15",
"v128:v5e0o15",
"v128:v6e0o15",
"v128:v7e0o15",
]
rsp_code = """
li a0,$0
li a1,$800
lw t4,$90(a0) // input: reg offset
add a0,t4
jal CleanRegs
nop
ltv v0[e0],$10(a0)
jal StoreOut
nop
jal CleanRegs
nop
ltv v7[e0],$10(a0)
jal StoreOut
nop
jal CleanRegs
nop
ltv v0[e1],$10(a0)
jal StoreOut
nop
jal CleanRegs
nop
ltv v0[e2],$10(a0)
jal StoreOut
nop
jal CleanRegs
nop
ltv v0[e12],$10(a0)
jal StoreOut
nop
jal CleanRegs
nop
ltv v0[e15],$10(a0)
jal StoreOut
nop
jal CleanRegs
nop
ltv v7[e15],$10(a0)
jal StoreOut
nop
// Just in case, we test with immediate offset. It must behave
// like adding an offset to a0, but you never know.
jal CleanRegs
nop
ltv v0[e0],$07(a0)
jal StoreOut
nop
jal CleanRegs
nop
ltv v0[e0],$08(a0)
jal StoreOut
nop
jal CleanRegs
nop
ltv v0[e0],$0F(a0)
jal StoreOut
nop
break
CleanRegs:
vxor v0,v0
vxor v1,v1
vxor v2,v2
vxor v3,v3
vxor v4,v4
vxor v5,v5
vxor v6,v6
jr ra
vxor v7,v7
StoreOut:
sqv v0[e0],$00(a1)
sqv v1[e0],$10(a1)
sqv v2[e0],$20(a1)
sqv v3[e0],$30(a1)
sqv v4[e0],$40(a1)
sqv v5[e0],$50(a1)
sqv v6[e0],$60(a1)
sqv v7[e0],$70(a1)
jr ra
addi a1,$80
"""
[[test]]
name = "offset0"
input = [
0,0,0,0, # dummy
0x8081_8283, 0x8485_8687, 0x8889_8AAB, 0x8C8D_8E8F, # v0
0x9091_9293, 0x9495_9697, 0x9899_9AAB, 0x9C9D_9E9F, # v1
0, # offset
0, # dummy
]
[[test]]
name = "offset1"
input = [
0,0,0,0, # dummy
0x8081_8283, 0x8485_8687, 0x8889_8AAB, 0x8C8D_8E8F, # v0
0x9091_9293, 0x9495_9697, 0x9899_9AAB, 0x9C9D_9E9F, # v1
1, # offset
0, # dummy
]
[[test]]
name = "offset7"
input = [
0,0,0,0, # dummy
0x8081_8283, 0x8485_8687, 0x8889_8AAB, 0x8C8D_8E8F, # v0
0x9091_9293, 0x9495_9697, 0x9899_9AAB, 0x9C9D_9E9F, # v1
7, # offset
0, # dummy
]
[[test]]
name = "offset8"
input = [
0,0,0,0, # dummy
0x8081_8283, 0x8485_8687, 0x8889_8AAB, 0x8C8D_8E8F, # v0
0x9091_9293, 0x9495_9697, 0x9899_9AAB, 0x9C9D_9E9F, # v1
8, # offset
0, # dummy
]
[[test]]
name = "offset15"
input = [
0,0,0,0, # dummy
0x8081_8283, 0x8485_8687, 0x8889_8AAB, 0x8C8D_8E8F, # v0
0x9091_9293, 0x9495_9697, 0x9899_9AAB, 0x9C9D_9E9F, # v1
15, # offset
0, # dummy
]