diff --git a/lib/std/os/linux.zig b/lib/std/os/linux.zig index 99a1bf62548a1fb4066dd7de2455256379659743..2d062be1c1d90843b4cac93e9ce81b7bf34eeeed 100644 --- a/lib/std/os/linux.zig +++ b/lib/std/os/linux.zig @@ -619,6 +619,138 @@ pub const O = switch (native_arch) { }; pub const HWCAP = switch (native_arch) { + .aarch64, .aarch64_be => struct { + pub const FP = 1 << 0; + pub const ASIMD = 1 << 1; + pub const EVTSTRM = 1 << 2; + pub const AES = 1 << 3; + pub const PMULL = 1 << 4; + pub const SHA1 = 1 << 5; + pub const SHA2 = 1 << 6; + pub const CRC32 = 1 << 7; + pub const ATOMICS = 1 << 8; + pub const FPHP = 1 << 9; + pub const ASIMDHP = 1 << 10; + pub const CPUID = 1 << 11; + pub const ASIMDRDM = 1 << 12; + pub const JSCVT = 1 << 13; + pub const FCMA = 1 << 14; + pub const LRCPC = 1 << 15; + pub const DCPOP = 1 << 16; + pub const SHA3 = 1 << 17; + pub const SM3 = 1 << 18; + pub const SM4 = 1 << 19; + pub const ASIMDDP = 1 << 20; + pub const SHA512 = 1 << 21; + pub const SVE = 1 << 22; + pub const ASIMDFHM = 1 << 23; + pub const DIT = 1 << 24; + pub const USCAT = 1 << 25; + pub const ILRCPC = 1 << 26; + pub const FLAGM = 1 << 27; + pub const SSBS = 1 << 28; + pub const SB = 1 << 29; + pub const PACA = 1 << 30; + pub const PACG = 1 << 31; + pub const GCS = 1 << 32; + pub const CMPBR = 1 << 33; + pub const FPRCVT = 1 << 34; + pub const F8MM8 = 1 << 35; + pub const F8MM4 = 1 << 36; + pub const SVE_F16MM = 1 << 37; + pub const SVE_ELTPERM = 1 << 38; + pub const SVE_AES2 = 1 << 39; + pub const SVE_BFSCALE = 1 << 40; + pub const SVE2P2 = 1 << 41; + pub const SME2P2 = 1 << 42; + pub const SME_SBITPERM = 1 << 43; + pub const SME_AES = 1 << 44; + pub const SME_SFEXPA = 1 << 45; + pub const SME_STMOP = 1 << 46; + pub const SME_SMOP4 = 1 << 47; + + pub const @"2" = struct { + pub const DCPODP = 1 << 0; + pub const SVE2 = 1 << 1; + pub const SVEAES = 1 << 2; + pub const SVEPMULL = 1 << 3; + pub const SVEBITPERM = 1 << 4; + pub const SVESHA3 = 1 << 5; + pub const SVESM4 = 1 << 6; + pub const FLAGM2 = 1 << 7; + pub const FRINT = 1 << 8; + pub const SVEI8MM = 1 << 9; + pub const SVEF32MM = 1 << 10; + pub const SVEF64MM = 1 << 11; + pub const SVEBF16 = 1 << 12; + pub const I8MM = 1 << 13; + pub const BF16 = 1 << 14; + pub const DGH = 1 << 15; + pub const RNG = 1 << 16; + pub const BTI = 1 << 17; + pub const MTE = 1 << 18; + pub const ECV = 1 << 19; + pub const AFP = 1 << 20; + pub const RPRES = 1 << 21; + pub const MTE3 = 1 << 22; + pub const SME = 1 << 23; + pub const SME_I16I64 = 1 << 24; + pub const SME_F64F64 = 1 << 25; + pub const SME_I8I32 = 1 << 26; + pub const SME_F16F32 = 1 << 27; + pub const SME_B16F32 = 1 << 28; + pub const SME_F32F32 = 1 << 29; + pub const SME_FA64 = 1 << 30; + pub const WFXT = 1 << 31; + pub const EBF16 = 1 << 32; + pub const SVE_EBF16 = 1 << 33; + pub const CSSC = 1 << 34; + pub const RPRFM = 1 << 35; + pub const SVE2P1 = 1 << 36; + pub const SME2 = 1 << 37; + pub const SME2P1 = 1 << 38; + pub const SME_I16I32 = 1 << 39; + pub const SME_BI32I32 = 1 << 40; + pub const SME_B16B16 = 1 << 41; + pub const SME_F16F16 = 1 << 42; + pub const MOPS = 1 << 43; + pub const HBC = 1 << 44; + pub const SVE_B16B16 = 1 << 45; + pub const LRCPC3 = 1 << 46; + pub const LSE128 = 1 << 47; + pub const FPMR = 1 << 48; + pub const LUT = 1 << 49; + pub const FAMINMAX = 1 << 50; + pub const F8CVT = 1 << 51; + pub const F8FMA = 1 << 52; + pub const F8DP4 = 1 << 53; + pub const F8DP2 = 1 << 54; + pub const F8E4M3 = 1 << 55; + pub const F8E5M2 = 1 << 56; + pub const SME_LUTV2 = 1 << 57; + pub const SME_F8F16 = 1 << 58; + pub const SME_F8F32 = 1 << 59; + pub const SME_SF8FMA = 1 << 60; + pub const SME_SF8DP4 = 1 << 61; + pub const SME_SF8DP2 = 1 << 62; + pub const POE = 1 << 63; + }; + + pub const @"3" = struct { + pub const MTE_FAR = 1 << 0; + pub const MTE_STORE_ONLY = 1 << 1; + pub const LSFE = 1 << 2; + pub const LS64 = 1 << 3; + pub const SVE_B16MM = 1 << 4; + pub const SVE2P3 = 1 << 5; + pub const SME_LUT6 = 1 << 6; + pub const SME2P3 = 1 << 7; + pub const F16MM = 1 << 8; + pub const F16F32DOT = 1 << 9; + pub const F16F32MM = 1 << 10; + pub const SVE_LUT6 = 1 << 11; + }; + }, .arm, .armeb, .thumb, .thumbeb => struct { pub const SWP = 1 << 0; pub const HALF = 1 << 1;