mirror of
https://github.com/Dillonb/n64.git
synced 2025-04-02 10:42:08 -04:00
240 lines
3.9 KiB
TOML
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
|
|
]
|