mirror of
https://github.com/Dillonb/n64.git
synced 2025-04-02 10:42:08 -04:00
262 lines
5.6 KiB
TOML
262 lines
5.6 KiB
TOML
input_desc = [
|
|
"v128:data",
|
|
"v128:prev",
|
|
"u32:offset",
|
|
"u32:dummy",
|
|
]
|
|
|
|
output_desc = [
|
|
"v128:llv_e0",
|
|
"v128:llv_e1",
|
|
"v128:llv_e2",
|
|
"v128:llv_e3",
|
|
"v128:llv_e4",
|
|
"v128:llv_e5",
|
|
"v128:llv_e6",
|
|
"v128:llv_e7",
|
|
"v128:llv_e8",
|
|
"v128:llv_e9",
|
|
"v128:llv_e10",
|
|
"v128:llv_e11",
|
|
"v128:llv_e12",
|
|
"v128:llv_e13",
|
|
"v128:llv_e14",
|
|
"v128:llv_e15",
|
|
"v128:slv_e0",
|
|
"v128:slv_e1",
|
|
"v128:slv_e2",
|
|
"v128:slv_e3",
|
|
"v128:slv_e4",
|
|
"v128:slv_e5",
|
|
"v128:slv_e6",
|
|
"v128:slv_e7",
|
|
"v128:slv_e8",
|
|
"v128:slv_e9",
|
|
"v128:slv_e10",
|
|
"v128:slv_e11",
|
|
"v128:slv_e12",
|
|
"v128:slv_e13",
|
|
"v128:slv_e14",
|
|
"v128:slv_e15",
|
|
]
|
|
|
|
rsp_code = """
|
|
li a0,$0
|
|
li a1,$800
|
|
lqv v0[e0],$10(a0) // input: prev
|
|
lqv v1[e0],$10(a0) // input: prev
|
|
lqv v2[e0],$10(a0) // input: prev
|
|
lqv v3[e0],$10(a0) // input: prev
|
|
lqv v4[e0],$10(a0) // input: prev
|
|
lqv v5[e0],$10(a0) // input: prev
|
|
lqv v6[e0],$10(a0) // input: prev
|
|
lqv v7[e0],$10(a0) // input: prev
|
|
lqv v8[e0],$10(a0) // input: prev
|
|
lqv v9[e0],$10(a0) // input: prev
|
|
lqv v10[e0],$10(a0) // input: prev
|
|
lqv v11[e0],$10(a0) // input: prev
|
|
lqv v12[e0],$10(a0) // input: prev
|
|
lqv v13[e0],$10(a0) // input: prev
|
|
lqv v14[e0],$10(a0) // input: prev
|
|
lqv v15[e0],$10(a0) // input: prev
|
|
lw t4,$20(a0) // input: offset
|
|
|
|
// This test is very sensitive to possible read/write mistakes to memory
|
|
// and we want to make sure that writes actually happen.
|
|
vxor v31,v31
|
|
|
|
add a2,a1,0
|
|
addi a2,$1F0
|
|
ClearLoop:
|
|
sqv v31[e0],$00(a2)
|
|
bne a1,a2,ClearLoop
|
|
subi a2,$10
|
|
|
|
add a0,t4 // add offset to disalign
|
|
llv v0[e0],$00(a0)
|
|
llv v1[e1],$00(a0)
|
|
llv v2[e2],$00(a0)
|
|
llv v3[e3],$00(a0)
|
|
llv v4[e4],$00(a0)
|
|
llv v5[e5],$00(a0)
|
|
llv v6[e6],$00(a0)
|
|
llv v7[e7],$00(a0)
|
|
llv v8[e8],$00(a0)
|
|
llv v9[e9],$00(a0)
|
|
llv v10[e10],$00(a0)
|
|
llv v11[e11],$00(a0)
|
|
llv v12[e12],$00(a0)
|
|
llv v13[e13],$00(a0)
|
|
llv v14[e14],$00(a0)
|
|
llv v15[e15],$00(a0)
|
|
|
|
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)
|
|
sqv v8[e0],$80(a1)
|
|
sqv v9[e0],$90(a1)
|
|
sqv v10[e0],$A0(a1)
|
|
sqv v11[e0],$B0(a1)
|
|
sqv v12[e0],$C0(a1)
|
|
sqv v13[e0],$D0(a1)
|
|
sqv v14[e0],$E0(a1)
|
|
sqv v15[e0],$F0(a1)
|
|
|
|
li a0,$0
|
|
lqv v0[e0],$00(a0) // input: v0
|
|
|
|
add a1,t4 // add offset to disalign
|
|
addi a1,$100
|
|
slv v0[e15],$F0(a1)
|
|
slv v0[e14],$E0(a1)
|
|
slv v0[e13],$D0(a1)
|
|
slv v0[e12],$C0(a1)
|
|
slv v0[e11],$B0(a1)
|
|
slv v0[e10],$A0(a1)
|
|
slv v0[e9],$90(a1)
|
|
slv v0[e8],$80(a1)
|
|
slv v0[e7],$70(a1)
|
|
slv v0[e6],$60(a1)
|
|
slv v0[e5],$50(a1)
|
|
slv v0[e4],$40(a1)
|
|
slv v0[e3],$30(a1)
|
|
slv v0[e2],$20(a1)
|
|
slv v0[e1],$10(a1)
|
|
slv v0[e0],$00(a1)
|
|
|
|
break
|
|
"""
|
|
|
|
[[test]]
|
|
name = "offset0"
|
|
input = [
|
|
0x1122_3344, 0x5566_7788, 0x99AA_BBCC, 0xDDEE_FFAB, # v0
|
|
0x1234_5678, 0x9ABC_DEF0, 0x2143_6587, 0xA9CB_ED0F, # prev
|
|
0, # offset
|
|
0, # dummy
|
|
]
|
|
[[test]]
|
|
name = "offset1"
|
|
input = [
|
|
0x1122_3344, 0x5566_7788, 0x99AA_BBCC, 0xDDEE_FFAB, # v0
|
|
0x1234_5678, 0x9ABC_DEF0, 0x2143_6587, 0xA9CB_ED0F, # prev
|
|
1, # offset
|
|
0, # dummy
|
|
]
|
|
[[test]]
|
|
name = "offset2"
|
|
input = [
|
|
0x1122_3344, 0x5566_7788, 0x99AA_BBCC, 0xDDEE_FFAB, # v0
|
|
0x1234_5678, 0x9ABC_DEF0, 0x2143_6587, 0xA9CB_ED0F, # prev
|
|
2, # offset
|
|
0, # dummy
|
|
]
|
|
[[test]]
|
|
name = "offset3"
|
|
input = [
|
|
0x1122_3344, 0x5566_7788, 0x99AA_BBCC, 0xDDEE_FFAB, # v0
|
|
0x1234_5678, 0x9ABC_DEF0, 0x2143_6587, 0xA9CB_ED0F, # prev
|
|
3, # offset
|
|
0, # dummy
|
|
]
|
|
[[test]]
|
|
name = "offset4"
|
|
input = [
|
|
0x1122_3344, 0x5566_7788, 0x99AA_BBCC, 0xDDEE_FFAB, # v0
|
|
0x1234_5678, 0x9ABC_DEF0, 0x2143_6587, 0xA9CB_ED0F, # prev
|
|
4, # offset
|
|
0, # dummy
|
|
]
|
|
[[test]]
|
|
name = "offset5"
|
|
input = [
|
|
0x1122_3344, 0x5566_7788, 0x99AA_BBCC, 0xDDEE_FFAB, # v0
|
|
0x1234_5678, 0x9ABC_DEF0, 0x2143_6587, 0xA9CB_ED0F, # prev
|
|
5, # offset
|
|
0, # dummy
|
|
]
|
|
[[test]]
|
|
name = "offset6"
|
|
input = [
|
|
0x1122_3344, 0x5566_7788, 0x99AA_BBCC, 0xDDEE_FFAB, # v0
|
|
0x1234_5678, 0x9ABC_DEF0, 0x2143_6587, 0xA9CB_ED0F, # prev
|
|
6, # offset
|
|
0, # dummy
|
|
]
|
|
[[test]]
|
|
name = "offset7"
|
|
input = [
|
|
0x1122_3344, 0x5566_7788, 0x99AA_BBCC, 0xDDEE_FFAB, # v0
|
|
0x1234_5678, 0x9ABC_DEF0, 0x2143_6587, 0xA9CB_ED0F, # prev
|
|
7, # offset
|
|
0, # dummy
|
|
]
|
|
[[test]]
|
|
name = "offset8"
|
|
input = [
|
|
0x1122_3344, 0x5566_7788, 0x99AA_BBCC, 0xDDEE_FFAB, # v0
|
|
0x1234_5678, 0x9ABC_DEF0, 0x2143_6587, 0xA9CB_ED0F, # prev
|
|
8, # offset
|
|
0, # dummy
|
|
]
|
|
[[test]]
|
|
name = "offset9"
|
|
input = [
|
|
0x1122_3344, 0x5566_7788, 0x99AA_BBCC, 0xDDEE_FFAB, # v0
|
|
0x1234_5678, 0x9ABC_DEF0, 0x2143_6587, 0xA9CB_ED0F, # prev
|
|
9, # offset
|
|
0, # dummy
|
|
]
|
|
[[test]]
|
|
name = "offset10"
|
|
input = [
|
|
0x1122_3344, 0x5566_7788, 0x99AA_BBCC, 0xDDEE_FFAB, # v0
|
|
0x1234_5678, 0x9ABC_DEF0, 0x2143_6587, 0xA9CB_ED0F, # prev
|
|
10, # offset
|
|
0, # dummy
|
|
]
|
|
[[test]]
|
|
name = "offset11"
|
|
input = [
|
|
0x1122_3344, 0x5566_7788, 0x99AA_BBCC, 0xDDEE_FFAB, # v0
|
|
0x1234_5678, 0x9ABC_DEF0, 0x2143_6587, 0xA9CB_ED0F, # prev
|
|
11, # offset
|
|
0, # dummy
|
|
]
|
|
[[test]]
|
|
name = "offset12"
|
|
input = [
|
|
0x1122_3344, 0x5566_7788, 0x99AA_BBCC, 0xDDEE_FFAB, # v0
|
|
0x1234_5678, 0x9ABC_DEF0, 0x2143_6587, 0xA9CB_ED0F, # prev
|
|
12, # offset
|
|
0, # dummy
|
|
]
|
|
[[test]]
|
|
name = "offset13"
|
|
input = [
|
|
0x1122_3344, 0x5566_7788, 0x99AA_BBCC, 0xDDEE_FFAB, # v0
|
|
0x1234_5678, 0x9ABC_DEF0, 0x2143_6587, 0xA9CB_ED0F, # prev
|
|
13, # offset
|
|
0, # dummy
|
|
]
|
|
[[test]]
|
|
name = "offset14"
|
|
input = [
|
|
0x1122_3344, 0x5566_7788, 0x99AA_BBCC, 0xDDEE_FFAB, # v0
|
|
0x1234_5678, 0x9ABC_DEF0, 0x2143_6587, 0xA9CB_ED0F, # prev
|
|
14, # offset
|
|
0, # dummy
|
|
]
|
|
[[test]]
|
|
name = "offset15"
|
|
input = [
|
|
0x1122_3344, 0x5566_7788, 0x99AA_BBCC, 0xDDEE_FFAB, # v0
|
|
0x1234_5678, 0x9ABC_DEF0, 0x2143_6587, 0xA9CB_ED0F, # prev
|
|
15, # offset
|
|
0, # dummy
|
|
]
|