test(arch): pin the golden vectors of the last four families
Assisted-by: GLM 5.3 Flash
This commit is contained in:
1 parent
aeb109a64c
commit
7aba29ac67
3 files changed
+77
No files matched your search
@@ -776,6 +776,8 @@ func (f ExtForm) Arity() int {
|
|||||||
case ExtFormSveLoad, ExtFormSveStore, ExtFormNarrow, ExtFormQuadReduce, ExtFormShiftWide,
|
case ExtFormSveLoad, ExtFormSveStore, ExtFormNarrow, ExtFormQuadReduce, ExtFormShiftWide,
|
||||||
ExtFormConvert, ExtFormLongMul:
|
ExtFormConvert, ExtFormLongMul:
|
||||||
return 3
|
return 3
|
||||||
|
case ExtFormVLArith:
|
||||||
|
return 3
|
||||||
case ExtFormNone:
|
case ExtFormNone:
|
||||||
return 0
|
return 0
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -1584,6 +1584,57 @@ func TestArm64ExtStage4Golden(t *testing.T) {
|
|||||||
{"ZST2Q [Z8.Q, Z9.Q], P3, (R6<<4)(RSP)", "ZST2Q", ExtFormSveStore, ExtQualNone, ExtArrQ,
|
{"ZST2Q [Z8.Q, Z9.Q], P3, (R6<<4)(RSP)", "ZST2Q", ExtFormSveStore, ExtQualNone, ExtArrQ,
|
||||||
[]ExtOperand{ExtOperand{Kind: ExtZReg, Reg: 8, Arr: ExtArrQ, List: 2}, ExtPredicateSized(3, ExtArrNone), ExtSveMemPair(6, 4, 31, true)},
|
[]ExtOperand{ExtOperand{Kind: ExtZReg, Reg: 8, Arr: ExtArrQ, List: 2}, ExtPredicateSized(3, ExtArrNone), ExtSveMemPair(6, 4, 31, true)},
|
||||||
0xe4660fe8},
|
0xe4660fe8},
|
||||||
|
// The rest of the BFloat16 wall.
|
||||||
|
{"ZBFCVT Z13.S, P1.M, Z22.H", "ZBFCVT", ExtFormConvert, ExtQualMerging, ExtArrNone,
|
||||||
|
[]ExtOperand{ExtVector(13, ExtArrS), ExtPredicate(1, ExtQualMerging), ExtVector(22, ExtArrH)},
|
||||||
|
0x658aa5b6},
|
||||||
|
{"ZBFCVT Z13.S, P1.Z, Z22.H", "ZBFCVT", ExtFormConvert, ExtQualZeroing, ExtArrNone,
|
||||||
|
[]ExtOperand{ExtVector(13, ExtArrS), ExtPredicate(1, ExtQualZeroing), ExtVector(22, ExtArrH)},
|
||||||
|
0x649ac5b6},
|
||||||
|
{"ZBFDOT Z7.H, Z6.H, Z23.S", "ZBFDOT", ExtFormLongMul, ExtQualNone, ExtArrH,
|
||||||
|
[]ExtOperand{ExtVector(7, ExtArrH), ExtVector(6, ExtArrH), ExtVector(23, ExtArrS)},
|
||||||
|
0x646780d7},
|
||||||
|
{"ZBFMLA Z23.H, Z13.H, P1.M, Z22.H", "ZBFMLA", ExtFormMulPred, ExtQualNone, ExtArrNone,
|
||||||
|
[]ExtOperand{ExtVector(23, ExtArrH), ExtVector(13, ExtArrH), ExtPredicate(1, ExtQualMerging), ExtVector(22, ExtArrH)},
|
||||||
|
0x653705b6},
|
||||||
|
{"ZBFMLALB Z7.H, Z6.H, Z23.S", "ZBFMLALB", ExtFormLongMul, ExtQualNone, ExtArrH,
|
||||||
|
[]ExtOperand{ExtVector(7, ExtArrH), ExtVector(6, ExtArrH), ExtVector(23, ExtArrS)},
|
||||||
|
0x64e780d7},
|
||||||
|
{"ZBFMMLA Z7.H, Z6.H, Z23.S", "ZBFMMLA", ExtFormLongMul, ExtQualNone, ExtArrH,
|
||||||
|
[]ExtOperand{ExtVector(7, ExtArrH), ExtVector(6, ExtArrH), ExtVector(23, ExtArrS)},
|
||||||
|
0x6467e4d7},
|
||||||
|
{"ZBFSCALE Z23.H, Z13.H, P1.M, Z13.H", "ZBFSCALE", ExtFormZPredicatedSource, ExtQualMerging, ExtArrH,
|
||||||
|
[]ExtOperand{ExtVector(23, ExtArrH), ExtVector(13, ExtArrH), ExtPredicate(1, ExtQualMerging), ExtVector(13, ExtArrH)},
|
||||||
|
0x650986ed},
|
||||||
|
// The last-active vector shape and the compares to a predicate.
|
||||||
|
{"ZCLASTA Z15.B, Z0.B, P3, Z0.B", "ZCLASTA", ExtFormZPredicatedSource, ExtQualNone, ExtArrNone,
|
||||||
|
[]ExtOperand{ExtVector(15, ExtArrB), ExtVector(0, ExtArrB), ExtPredicateSized(3, ExtArrNone), ExtVector(0, ExtArrB)},
|
||||||
|
0x05288de0},
|
||||||
|
{"ZCLASTB Z15.B, Z0.B, P3, Z0.B", "ZCLASTB", ExtFormZPredicatedSource, ExtQualNone, ExtArrNone,
|
||||||
|
[]ExtOperand{ExtVector(15, ExtArrB), ExtVector(0, ExtArrB), ExtPredicateSized(3, ExtArrNone), ExtVector(0, ExtArrB)},
|
||||||
|
0x05298de0},
|
||||||
|
{"ZCMPEQ Z0.H, Z2.H, P0.Z, P14.H", "ZCMPEQ", ExtFormCompare, ExtQualNone, ExtArrNone,
|
||||||
|
[]ExtOperand{ExtVector(0, ExtArrH), ExtVector(2, ExtArrH), ExtPredicate(0, ExtQualZeroing), ExtPredicateSized(14, ExtArrH)},
|
||||||
|
0x2440a04e},
|
||||||
|
{"ZCMPEQ Z0.D, Z12.S, P0.Z, P14.S", "ZCMPEQ", ExtFormCompareWide, ExtQualNone, ExtArrNone,
|
||||||
|
[]ExtOperand{ExtVector(0, ExtArrD), ExtVector(12, ExtArrS), ExtPredicate(0, ExtQualZeroing), ExtPredicateSized(14, ExtArrS)},
|
||||||
|
0x2480218e},
|
||||||
|
{"ZCMPHS Z0.H, Z2.H, P0.Z, P14.H", "ZCMPHS", ExtFormCompare, ExtQualNone, ExtArrNone,
|
||||||
|
[]ExtOperand{ExtVector(0, ExtArrH), ExtVector(2, ExtArrH), ExtPredicate(0, ExtQualZeroing), ExtPredicateSized(14, ExtArrH)},
|
||||||
|
0x2440004e},
|
||||||
|
{"ZCMPNE Z0.D, Z12.S, P0.Z, P14.S", "ZCMPNE", ExtFormCompareWide, ExtQualNone, ExtArrNone,
|
||||||
|
[]ExtOperand{ExtVector(0, ExtArrD), ExtVector(12, ExtArrS), ExtPredicate(0, ExtQualZeroing), ExtPredicateSized(14, ExtArrS)},
|
||||||
|
0x2480219e},
|
||||||
|
// The vector-length arithmetic.
|
||||||
|
{"ADDPL $9, R11, RSP", "ADDPL", ExtFormVLArith, ExtQualNone, ExtArrNone,
|
||||||
|
[]ExtOperand{ExtImmediate(9), ExtGeneral(11), ExtStackPointer()},
|
||||||
|
0x046b513f},
|
||||||
|
{"ADDVL $9, R11, RSP", "ADDVL", ExtFormVLArith, ExtQualNone, ExtArrNone,
|
||||||
|
[]ExtOperand{ExtImmediate(9), ExtGeneral(11), ExtStackPointer()},
|
||||||
|
0x042b513f},
|
||||||
|
{"RDVL $1, R27", "RDVL", ExtFormVLRead, ExtQualNone, ExtArrNone,
|
||||||
|
[]ExtOperand{ExtImmediate(1), ExtGeneral(27)},
|
||||||
|
0x04bf503b},
|
||||||
} {
|
} {
|
||||||
in := extInstructionMeta(t, tt.mnem, tt.form, tt.qual, tt.arr)
|
in := extInstructionMeta(t, tt.mnem, tt.form, tt.qual, tt.arr)
|
||||||
got, err := in.Encode(tt.ops)
|
got, err := in.Encode(tt.ops)
|
||||||
|
|||||||
@@ -846,6 +846,30 @@ func TestArm64AssembleExtensionStage4Golden(t *testing.T) {
|
|||||||
{"ZST2Q [Z8.Q, Z9.Q], P3, (R6<<4)(RSP)", 0xe4660fe8},
|
{"ZST2Q [Z8.Q, Z9.Q], P3, (R6<<4)(RSP)", 0xe4660fe8},
|
||||||
{"ZST3D [Z8.D, Z9.D, Z10.D], P3, (R6<<3)(RSP)", 0xe5c66fe8},
|
{"ZST3D [Z8.D, Z9.D, Z10.D], P3, (R6<<3)(RSP)", 0xe5c66fe8},
|
||||||
{"ZST4Q [Z8.Q, Z9.Q, Z10.Q, Z11.Q], P3, (R6<<4)(RSP)", 0xe4e60fe8},
|
{"ZST4Q [Z8.Q, Z9.Q, Z10.Q, Z11.Q], P3, (R6<<4)(RSP)", 0xe4e60fe8},
|
||||||
|
// The rest of the BFloat16 wall.
|
||||||
|
{"ZBFCVT Z13.S, P1.M, Z22.H", 0x658aa5b6},
|
||||||
|
{"ZBFCVT Z13.S, P1.Z, Z22.H", 0x649ac5b6},
|
||||||
|
{"ZBFCVTNT Z13.S, P1.M, Z22.H", 0x648aa5b6},
|
||||||
|
{"ZBFDOT Z7.H, Z6.H, Z23.S", 0x646780d7},
|
||||||
|
{"ZBFMLA Z23.H, Z13.H, P1.M, Z22.H", 0x653705b6},
|
||||||
|
{"ZBFMLALB Z7.H, Z6.H, Z23.S", 0x64e780d7},
|
||||||
|
{"ZBFMLALT Z7.H, Z6.H, Z23.S", 0x64e784d7},
|
||||||
|
{"ZBFMLS Z23.H, Z13.H, P1.M, Z22.H", 0x653725b6},
|
||||||
|
{"ZBFMLSLB Z7.H, Z6.H, Z23.S", 0x64e7a0d7},
|
||||||
|
{"ZBFMLSLT Z7.H, Z6.H, Z23.S", 0x64e7a4d7},
|
||||||
|
{"ZBFMMLA Z7.H, Z6.H, Z23.S", 0x6467e4d7},
|
||||||
|
{"ZBFSCALE Z23.H, Z13.H, P1.M, Z13.H", 0x650986ed},
|
||||||
|
// The last-active vector shape and the compares to a predicate.
|
||||||
|
{"ZCLASTA Z15.B, Z0.B, P3, Z0.B", 0x05288de0},
|
||||||
|
{"ZCLASTB Z15.B, Z0.B, P3, Z0.B", 0x05298de0},
|
||||||
|
{"ZCMPEQ Z0.H, Z2.H, P0.Z, P14.H", 0x2440a04e},
|
||||||
|
{"ZCMPEQ Z0.D, Z12.S, P0.Z, P14.S", 0x2480218e},
|
||||||
|
{"ZCMPHS Z0.H, Z2.H, P0.Z, P14.H", 0x2440004e},
|
||||||
|
{"ZCMPNE Z0.D, Z12.S, P0.Z, P14.S", 0x2480219e},
|
||||||
|
// The vector-length arithmetic.
|
||||||
|
{"ADDPL $9, R11, RSP", 0x046b513f},
|
||||||
|
{"ADDVL $9, R11, RSP", 0x042b513f},
|
||||||
|
{"RDVL $1, R27", 0x04bf503b},
|
||||||
}
|
}
|
||||||
for _, tt := range tests {
|
for _, tt := range tests {
|
||||||
words := assembleArm64Words(t, arm64ExtProbeHead+"\t"+tt.stmt+"\n\tRET\n")
|
words := assembleArm64Words(t, arm64ExtProbeHead+"\t"+tt.stmt+"\n\tRET\n")
|
||||||
|
|||||||
Reference in new issue
Block a user