kselftest/arm64: Verify HWCAP2_SVE_B16B16
authorMark Brown <broonie@kernel.org>
Fri, 15 Sep 2023 12:18:07 +0000 (13:18 +0100)
committerCatalin Marinas <catalin.marinas@arm.com>
Fri, 29 Sep 2023 14:56:17 +0000 (15:56 +0100)
Validate that SVE B16B16 support is reported correctly and consistently to
userspace.

Signed-off-by: Mark Brown <broonie@kernel.org>
Link: https://lore.kernel.org/r/20230915-arm64-zfr-b16b16-el0-v1-2-f9aba807bdb5@kernel.org
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
tools/testing/selftests/arm64/abi/hwcap.c

index e3d2628..d8a1442 100644 (file)
@@ -226,6 +226,12 @@ static void sveaes_sigill(void)
        asm volatile(".inst 0x4522e400" : : : "z0");
 }
 
+static void sveb16b16_sigill(void)
+{
+       /* BFADD ZA.H[W0, 0], {Z0.H-Z1.H} */
+       asm volatile(".inst 0xC1E41C00" : : : );
+}
+
 static void svepmull_sigill(void)
 {
        /* PMULLB Z0.Q, Z0.D, Z0.D */
@@ -493,6 +499,13 @@ static const struct hwcap_data {
                .cpuinfo = "sveaes",
                .sigill_fn = sveaes_sigill,
        },
+       {
+               .name = "SVE2 B16B16",
+               .at_hwcap = AT_HWCAP2,
+               .hwcap_bit = HWCAP2_SVE_B16B16,
+               .cpuinfo = "sveb16b16",
+               .sigill_fn = sveb16b16_sigill,
+       },
        {
                .name = "SVE2 PMULL",
                .at_hwcap = AT_HWCAP2,