diff --git a/libc-test/build.rs b/libc-test/build.rs index 98c802e338157..7934e24d70e30 100644 --- a/libc-test/build.rs +++ b/libc-test/build.rs @@ -3480,6 +3480,10 @@ fn test_linux(target: &str) { return true; } } + if name.starts_with("X86_FEATURE_") + { + return true + } match name { // These constants are not available if gnu headers have been included // and can therefore not be tested here diff --git a/src/unix/linux_like/linux/arch/generic/mod.rs b/src/unix/linux_like/linux/arch/generic/mod.rs index 40bc30a4f336b..42d1c6fdebf1f 100644 --- a/src/unix/linux_like/linux/arch/generic/mod.rs +++ b/src/unix/linux_like/linux/arch/generic/mod.rs @@ -111,6 +111,71 @@ cfg_if! { target_arch = "aarch64"))] { pub const FICLONE: ::c_ulong = 0x40049409; pub const FICLONERANGE: ::c_ulong = 0x4020940D; + // getauxval bits flags - from asm/cpufeatures.h kernel header + pub const X86_FEATURE_FPU: ::c_ulong = 0; + pub const X86_FEATURE_TSC: ::c_ulong = 4; + pub const X86_FEATURE_CX8: ::c_ulong = 8; + pub const X86_FEATURE_CLFLUSH: ::c_ulong = 19; + pub const X86_FEATURE_MMX: ::c_ulong = 23; + pub const X86_FEATURE_AES: ::c_ulong = 128 + 25; + pub const X86_FEATURE_ERMS: ::c_ulong = 288 + 9; + pub const X86_FEATURE_F16C: ::c_ulong = 128 + 29; + pub const X86_FEATURE_FMA4: ::c_ulong = 160 + 16; + pub const X86_FEATURE_FMA: ::c_ulong = 128 + 12; + pub const X86_FEATURE_VAES: ::c_ulong = 512 + 9; + pub const X86_FEATURE_VPCLMULQDQ: ::c_ulong = 512 + 10; + pub const X86_FEATURE_BMI1: ::c_ulong = 288 + 3; + pub const X86_FEATURE_HLE: ::c_ulong = 288 + 4; + pub const X86_FEATURE_BMI2: ::c_ulong = 288 + 8; + pub const X86_FEATURE_RTM: ::c_ulong = 288 + 11; + pub const X86_FEATURE_RDSEED: ::c_ulong = 288 + 18; + pub const X86_FEATURE_CLFLUSHOPT: ::c_ulong = 288 + 23; + pub const X86_FEATURE_CLWB: ::c_ulong = 288 + 24; + pub const X86_FEATURE_XMM: ::c_ulong = 25; + pub const X86_FEATURE_XMM2: ::c_ulong = 26; + pub const X86_FEATURE_XMM3: ::c_ulong = 128 + 0; + pub const X86_FEATURE_SSSE3: ::c_ulong = 128 + 9; + pub const X86_FEATURE_XMM4_1: ::c_ulong = 128 + 19; + pub const X86_FEATURE_XMM4_2: ::c_ulong = 128 + 20; + pub const X86_FEATURE_SSE4A: ::c_ulong = 160 + 6; + pub const X86_FEATURE_AVX: ::c_ulong = 128 + 28; + pub const X86_FEATURE_AVX_VNNI: ::c_ulong = 384 + 4; + pub const X86_FEATURE_AVX2: ::c_ulong = 288 + 5; + pub const X86_FEATURE_AVX512F: ::c_ulong = 288 + 16; + pub const X86_FEATURE_AVX512DQ: ::c_ulong = 288 + 17; + pub const X86_FEATURE_AVX512IFMA: ::c_ulong = 288 + 21; + pub const X86_FEATURE_AVX512PF: ::c_ulong = 288 + 26; + pub const X86_FEATURE_AVX512ER: ::c_ulong = 288 + 27; + pub const X86_FEATURE_AVX512CD: ::c_ulong = 288 + 28; + pub const X86_FEATURE_AVX512BW: ::c_ulong = 288 + 30; + pub const X86_FEATURE_AVX512VL: ::c_ulong = 288 + 31; + pub const X86_FEATURE_AVX512_BF16: ::c_ulong = 384 + 5; + pub const X86_FEATURE_AVX512_VBMI2: ::c_ulong = 512 + 6; + pub const X86_FEATURE_AVX512_VNNI: ::c_ulong = 512 + 11; + pub const X86_FEATURE_AVX512_BITALG: ::c_ulong = 512 + 12; + pub const X86_FEATURE_AVX512_VPOPCNTDQ: ::c_ulong = 512 + 14; + pub const X86_FEATURE_AVX512_4VNNIW: ::c_ulong = 576 + 2; + pub const X86_FEATURE_AVX512_4FMAPS: ::c_ulong = 576 + 3; + pub const X86_FEATURE_AVX512_VP2INTERSECT: ::c_ulong = 576 + 8; + pub const X86_FEATURE_AVX512_FP16: ::c_ulong = 576 + 23; + pub const X86_FEATURE_AMX_BF16: ::c_ulong = 576 + 22; + pub const X86_FEATURE_AMX_TILE: ::c_ulong = 576 + 24; + pub const X86_FEATURE_AMX_INT8: ::c_ulong = 576 + 25; + pub const X86_FEATURE_PCLMULQDQ: ::c_ulong = 128 + 1; + pub const X86_FEATURE_SMX: ::c_ulong = 128 + 6; + pub const X86_FEATURE_SGX: ::c_ulong = 288 + 2; + pub const X86_FEATURE_CX16: ::c_ulong = 128 + 13; + pub const X86_FEATURE_SHA_NI: ::c_ulong = 288 + 29; + pub const X86_FEATURE_POPCNT: ::c_ulong = 128 + 23; + pub const X86_FEATURE_MOVBE: ::c_ulong = 128 + 22; + pub const X86_FEATURE_RDRAND: ::c_ulong = 128 + 30; + pub const X86_FEATURE_DCA: ::c_ulong = 128 + 18; + pub const X86_FEATURE_SSBD: ::c_ulong = 224 + 17; + pub const X86_FEATURE_ADX: ::c_ulong = 288 + 19; + pub const X86_FEATURE_ABM: ::c_ulong = 160 + 5; + pub const X86_FEATURE_GFNI: ::c_ulong = 512 + 8; + pub const X86_FEATURE_MOVDIRI: ::c_ulong = 512 + 27; + pub const X86_FEATURE_MOVDIR64B: ::c_ulong = 512 + 28; } } // pub const SO_PREFER_BUSY_POLL: ::c_int = 69;