mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
kselftest/arm64: Add 2025 dpISA coverage to hwcaps
Add coverage of the new hwcaps to the test program, encodings cross checked against LLVM 22. Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Will Deacon <will@kernel.org>
This commit is contained in:
parent
f2db075234
commit
7da70f41da
|
|
@ -108,6 +108,24 @@ static void f8mm8_sigill(void)
|
|||
asm volatile(".inst 0x6e80ec00");
|
||||
}
|
||||
|
||||
static void f16f32dot_sigill(void)
|
||||
{
|
||||
/* FDOT V0.2S, V0.4H, V0.2H[0] */
|
||||
asm volatile(".inst 0xf409000");
|
||||
}
|
||||
|
||||
static void f16f32mm_sigill(void)
|
||||
{
|
||||
/* FMMLA V0.4S, V0.8H, V0.8H */
|
||||
asm volatile(".inst 0x4e40ec00");
|
||||
}
|
||||
|
||||
static void f16mm_sigill(void)
|
||||
{
|
||||
/* FMMLA V0.8H, V0.8H, V0.8H */
|
||||
asm volatile(".inst 0x4ec0ec00");
|
||||
}
|
||||
|
||||
static void faminmax_sigill(void)
|
||||
{
|
||||
/* FAMIN V0.4H, V0.4H, V0.4H */
|
||||
|
|
@ -191,6 +209,12 @@ static void lut_sigill(void)
|
|||
asm volatile(".inst 0x4e801000");
|
||||
}
|
||||
|
||||
static void sve_lut6_sigill(void)
|
||||
{
|
||||
/* LUTI6 Z0.H, { Z0.H, Z1.H }, Z0[0] */
|
||||
asm volatile(".inst 0x4560ac00");
|
||||
}
|
||||
|
||||
static void mops_sigill(void)
|
||||
{
|
||||
char dst[1], src[1];
|
||||
|
|
@ -282,6 +306,18 @@ static void sme2p2_sigill(void)
|
|||
asm volatile("msr S0_3_C4_C6_3, xzr" : : : );
|
||||
}
|
||||
|
||||
static void sme2p3_sigill(void)
|
||||
{
|
||||
/* SMSTART SM */
|
||||
asm volatile("msr S0_3_C4_C3_3, xzr" : : : );
|
||||
|
||||
/* ADDQP Z0.B, Z0.B, Z0.B */
|
||||
asm volatile(".inst 0x4207800" : : : "z0");
|
||||
|
||||
/* SMSTOP */
|
||||
asm volatile("msr S0_3_C4_C6_3, xzr" : : : );
|
||||
}
|
||||
|
||||
static void sme_aes_sigill(void)
|
||||
{
|
||||
/* SMSTART SM */
|
||||
|
|
@ -378,6 +414,18 @@ static void smef8f32_sigill(void)
|
|||
asm volatile("msr S0_3_C4_C6_3, xzr" : : : );
|
||||
}
|
||||
|
||||
static void smelut6_sigill(void)
|
||||
{
|
||||
/* SMSTART */
|
||||
asm volatile("msr S0_3_C4_C7_3, xzr" : : : );
|
||||
|
||||
/* LUTI6 { Z0.B-Z3.B }, ZT0, { Z0-Z2 } */
|
||||
asm volatile(".inst 0xc08a0000" : : : );
|
||||
|
||||
/* SMSTOP */
|
||||
asm volatile("msr S0_3_C4_C6_3, xzr" : : : );
|
||||
}
|
||||
|
||||
static void smelutv2_sigill(void)
|
||||
{
|
||||
/* SMSTART */
|
||||
|
|
@ -486,6 +534,12 @@ static void sve2p2_sigill(void)
|
|||
asm volatile(".inst 0x4cea000" : : : "z0");
|
||||
}
|
||||
|
||||
static void sve2p3_sigill(void)
|
||||
{
|
||||
/* ADDQP Z0.B, Z0.B, Z0.B */
|
||||
asm volatile(".inst 0x4207800" : : : "z0");
|
||||
}
|
||||
|
||||
static void sveaes_sigill(void)
|
||||
{
|
||||
/* AESD z0.b, z0.b, z0.b */
|
||||
|
|
@ -504,6 +558,12 @@ static void sveb16b16_sigill(void)
|
|||
asm volatile(".inst 0x65000000" : : : );
|
||||
}
|
||||
|
||||
static void sveb16mm_sigill(void)
|
||||
{
|
||||
/* BFMMLA Z0.H, Z0.H, Z0.H */
|
||||
asm volatile(".inst 0x64e0e000" : : : );
|
||||
}
|
||||
|
||||
static void svebfscale_sigill(void)
|
||||
{
|
||||
/* BFSCALE Z0.H, P0/M, Z0.H, Z0.H */
|
||||
|
|
@ -729,6 +789,27 @@ static const struct hwcap_data {
|
|||
.cpuinfo = "f8mm4",
|
||||
.sigill_fn = f8mm4_sigill,
|
||||
},
|
||||
{
|
||||
.name = "F16MM",
|
||||
.at_hwcap = AT_HWCAP3,
|
||||
.hwcap_bit = HWCAP3_F16MM,
|
||||
.cpuinfo = "f16mm",
|
||||
.sigill_fn = f16mm_sigill,
|
||||
},
|
||||
{
|
||||
.name = "F16F32DOT",
|
||||
.at_hwcap = AT_HWCAP3,
|
||||
.hwcap_bit = HWCAP3_F16F32DOT,
|
||||
.cpuinfo = "f16f32dot",
|
||||
.sigill_fn = f16f32dot_sigill,
|
||||
},
|
||||
{
|
||||
.name = "F16F32MM",
|
||||
.at_hwcap = AT_HWCAP3,
|
||||
.hwcap_bit = HWCAP3_F16F32MM,
|
||||
.cpuinfo = "f16f32mm",
|
||||
.sigill_fn = f16f32mm_sigill,
|
||||
},
|
||||
{
|
||||
.name = "FAMINMAX",
|
||||
.at_hwcap = AT_HWCAP2,
|
||||
|
|
@ -918,6 +999,13 @@ static const struct hwcap_data {
|
|||
.cpuinfo = "sme2p2",
|
||||
.sigill_fn = sme2p2_sigill,
|
||||
},
|
||||
{
|
||||
.name = "SME 2.3",
|
||||
.at_hwcap = AT_HWCAP3,
|
||||
.hwcap_bit = HWCAP3_SME2P3,
|
||||
.cpuinfo = "sme2p3",
|
||||
.sigill_fn = sme2p3_sigill,
|
||||
},
|
||||
{
|
||||
.name = "SME AES",
|
||||
.at_hwcap = AT_HWCAP,
|
||||
|
|
@ -967,6 +1055,13 @@ static const struct hwcap_data {
|
|||
.cpuinfo = "smef8f32",
|
||||
.sigill_fn = smef8f32_sigill,
|
||||
},
|
||||
{
|
||||
.name = "SME LUT6",
|
||||
.at_hwcap = AT_HWCAP3,
|
||||
.hwcap_bit = HWCAP3_SME_LUT6,
|
||||
.cpuinfo = "smelut6",
|
||||
.sigill_fn = smelut6_sigill,
|
||||
},
|
||||
{
|
||||
.name = "SME LUTV2",
|
||||
.at_hwcap = AT_HWCAP2,
|
||||
|
|
@ -1052,6 +1147,13 @@ static const struct hwcap_data {
|
|||
.cpuinfo = "sve2p2",
|
||||
.sigill_fn = sve2p2_sigill,
|
||||
},
|
||||
{
|
||||
.name = "SVE 2.3",
|
||||
.at_hwcap = AT_HWCAP3,
|
||||
.hwcap_bit = HWCAP3_SVE2P3,
|
||||
.cpuinfo = "sve2p3",
|
||||
.sigill_fn = sve2p3_sigill,
|
||||
},
|
||||
{
|
||||
.name = "SVE AES",
|
||||
.at_hwcap = AT_HWCAP2,
|
||||
|
|
@ -1066,6 +1168,13 @@ static const struct hwcap_data {
|
|||
.cpuinfo = "sveaes2",
|
||||
.sigill_fn = sveaes2_sigill,
|
||||
},
|
||||
{
|
||||
.name = "SVE B16MM",
|
||||
.at_hwcap = AT_HWCAP3,
|
||||
.hwcap_bit = HWCAP3_SVE_B16MM,
|
||||
.cpuinfo = "sveb16mm",
|
||||
.sigill_fn = sveb16mm_sigill,
|
||||
},
|
||||
{
|
||||
.name = "SVE BFSCALE",
|
||||
.at_hwcap = AT_HWCAP,
|
||||
|
|
@ -1087,6 +1196,13 @@ static const struct hwcap_data {
|
|||
.cpuinfo = "svef16mm",
|
||||
.sigill_fn = svef16mm_sigill,
|
||||
},
|
||||
{
|
||||
.name = "SVE_LUT6",
|
||||
.at_hwcap = AT_HWCAP3,
|
||||
.hwcap_bit = HWCAP3_SVE_LUT6,
|
||||
.cpuinfo = "svelut6",
|
||||
.sigill_fn = sve_lut6_sigill,
|
||||
},
|
||||
{
|
||||
.name = "SVE2 B16B16",
|
||||
.at_hwcap = AT_HWCAP2,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user