Lines Matching full:features
402 // Look for the CPU features. in getHostCPUNameForS390x()
405 if (Lines[I].starts_with("features")) { in getHostCPUNameForS390x()
676 // Read control register 0 (XCR0). Used to detect features such as AVX.
707 #define testFeature(F) (Features[F / 32] & (1 << (F % 32))) != 0
711 const unsigned *Features, in getIntelProcessorTypeAndSubtype() argument
1072 const unsigned *Features, in getAMDProcessorTypeAndSubtype() argument
1245 unsigned *Features) { in getAvailableFeatures() argument
1249 Features[F / 32] |= 1U << (F % 32); in getAvailableFeatures()
1388 unsigned Features[(X86::CPU_FEATURE_MAX + 31) / 32] = {0}; in getHostCPUName() local
1390 getAvailableFeatures(ECX, EDX, MaxLeaf, Features); in getHostCPUName()
1400 CPU = getIntelProcessorTypeAndSubtype(Family, Model, Features, &Type, in getHostCPUName()
1403 CPU = getAMDProcessorTypeAndSubtype(Family, Model, Features, &Type, in getHostCPUName()
1743 StringMap<bool> Features; in getHostCPUFeatures() local
1746 return Features; in getHostCPUFeatures()
1750 Features["cx8"] = (EDX >> 8) & 1; in getHostCPUFeatures()
1751 Features["cmov"] = (EDX >> 15) & 1; in getHostCPUFeatures()
1752 Features["mmx"] = (EDX >> 23) & 1; in getHostCPUFeatures()
1753 Features["fxsr"] = (EDX >> 24) & 1; in getHostCPUFeatures()
1754 Features["sse"] = (EDX >> 25) & 1; in getHostCPUFeatures()
1755 Features["sse2"] = (EDX >> 26) & 1; in getHostCPUFeatures()
1757 Features["sse3"] = (ECX >> 0) & 1; in getHostCPUFeatures()
1758 Features["pclmul"] = (ECX >> 1) & 1; in getHostCPUFeatures()
1759 Features["ssse3"] = (ECX >> 9) & 1; in getHostCPUFeatures()
1760 Features["cx16"] = (ECX >> 13) & 1; in getHostCPUFeatures()
1761 Features["sse4.1"] = (ECX >> 19) & 1; in getHostCPUFeatures()
1762 Features["sse4.2"] = (ECX >> 20) & 1; in getHostCPUFeatures()
1763 Features["crc32"] = Features["sse4.2"]; in getHostCPUFeatures()
1764 Features["movbe"] = (ECX >> 22) & 1; in getHostCPUFeatures()
1765 Features["popcnt"] = (ECX >> 23) & 1; in getHostCPUFeatures()
1766 Features["aes"] = (ECX >> 25) & 1; in getHostCPUFeatures()
1767 Features["rdrnd"] = (ECX >> 30) & 1; in getHostCPUFeatures()
1787 Features["avx"] = HasAVXSave; in getHostCPUFeatures()
1788 Features["fma"] = ((ECX >> 12) & 1) && HasAVXSave; in getHostCPUFeatures()
1790 Features["xsave"] = ((ECX >> 26) & 1) && HasAVXSave; in getHostCPUFeatures()
1791 Features["f16c"] = ((ECX >> 29) & 1) && HasAVXSave; in getHostCPUFeatures()
1798 Features["sahf"] = HasExtLeaf1 && ((ECX >> 0) & 1); in getHostCPUFeatures()
1799 Features["lzcnt"] = HasExtLeaf1 && ((ECX >> 5) & 1); in getHostCPUFeatures()
1800 Features["sse4a"] = HasExtLeaf1 && ((ECX >> 6) & 1); in getHostCPUFeatures()
1801 Features["prfchw"] = HasExtLeaf1 && ((ECX >> 8) & 1); in getHostCPUFeatures()
1802 Features["xop"] = HasExtLeaf1 && ((ECX >> 11) & 1) && HasAVXSave; in getHostCPUFeatures()
1803 Features["lwp"] = HasExtLeaf1 && ((ECX >> 15) & 1); in getHostCPUFeatures()
1804 Features["fma4"] = HasExtLeaf1 && ((ECX >> 16) & 1) && HasAVXSave; in getHostCPUFeatures()
1805 Features["tbm"] = HasExtLeaf1 && ((ECX >> 21) & 1); in getHostCPUFeatures()
1806 Features["mwaitx"] = HasExtLeaf1 && ((ECX >> 29) & 1); in getHostCPUFeatures()
1808 Features["64bit"] = HasExtLeaf1 && ((EDX >> 29) & 1); in getHostCPUFeatures()
1810 // Miscellaneous memory related features, detected by in getHostCPUFeatures()
1814 Features["clzero"] = HasExtLeaf8 && ((EBX >> 0) & 1); in getHostCPUFeatures()
1815 Features["rdpru"] = HasExtLeaf8 && ((EBX >> 4) & 1); in getHostCPUFeatures()
1816 Features["wbnoinvd"] = HasExtLeaf8 && ((EBX >> 9) & 1); in getHostCPUFeatures()
1821 Features["fsgsbase"] = HasLeaf7 && ((EBX >> 0) & 1); in getHostCPUFeatures()
1822 Features["sgx"] = HasLeaf7 && ((EBX >> 2) & 1); in getHostCPUFeatures()
1823 Features["bmi"] = HasLeaf7 && ((EBX >> 3) & 1); in getHostCPUFeatures()
1825 Features["avx2"] = HasLeaf7 && ((EBX >> 5) & 1) && HasAVXSave; in getHostCPUFeatures()
1826 Features["bmi2"] = HasLeaf7 && ((EBX >> 8) & 1); in getHostCPUFeatures()
1827 Features["invpcid"] = HasLeaf7 && ((EBX >> 10) & 1); in getHostCPUFeatures()
1828 Features["rtm"] = HasLeaf7 && ((EBX >> 11) & 1); in getHostCPUFeatures()
1830 Features["avx512f"] = HasLeaf7 && ((EBX >> 16) & 1) && HasAVX512Save; in getHostCPUFeatures()
1831 if (Features["avx512f"]) in getHostCPUFeatures()
1832 Features["evex512"] = true; in getHostCPUFeatures()
1833 Features["avx512dq"] = HasLeaf7 && ((EBX >> 17) & 1) && HasAVX512Save; in getHostCPUFeatures()
1834 Features["rdseed"] = HasLeaf7 && ((EBX >> 18) & 1); in getHostCPUFeatures()
1835 Features["adx"] = HasLeaf7 && ((EBX >> 19) & 1); in getHostCPUFeatures()
1836 Features["avx512ifma"] = HasLeaf7 && ((EBX >> 21) & 1) && HasAVX512Save; in getHostCPUFeatures()
1837 Features["clflushopt"] = HasLeaf7 && ((EBX >> 23) & 1); in getHostCPUFeatures()
1838 Features["clwb"] = HasLeaf7 && ((EBX >> 24) & 1); in getHostCPUFeatures()
1839 Features["avx512cd"] = HasLeaf7 && ((EBX >> 28) & 1) && HasAVX512Save; in getHostCPUFeatures()
1840 Features["sha"] = HasLeaf7 && ((EBX >> 29) & 1); in getHostCPUFeatures()
1841 Features["avx512bw"] = HasLeaf7 && ((EBX >> 30) & 1) && HasAVX512Save; in getHostCPUFeatures()
1842 Features["avx512vl"] = HasLeaf7 && ((EBX >> 31) & 1) && HasAVX512Save; in getHostCPUFeatures()
1844 Features["avx512vbmi"] = HasLeaf7 && ((ECX >> 1) & 1) && HasAVX512Save; in getHostCPUFeatures()
1845 Features["pku"] = HasLeaf7 && ((ECX >> 4) & 1); in getHostCPUFeatures()
1846 Features["waitpkg"] = HasLeaf7 && ((ECX >> 5) & 1); in getHostCPUFeatures()
1847 Features["avx512vbmi2"] = HasLeaf7 && ((ECX >> 6) & 1) && HasAVX512Save; in getHostCPUFeatures()
1848 Features["shstk"] = HasLeaf7 && ((ECX >> 7) & 1); in getHostCPUFeatures()
1849 Features["gfni"] = HasLeaf7 && ((ECX >> 8) & 1); in getHostCPUFeatures()
1850 Features["vaes"] = HasLeaf7 && ((ECX >> 9) & 1) && HasAVXSave; in getHostCPUFeatures()
1851 Features["vpclmulqdq"] = HasLeaf7 && ((ECX >> 10) & 1) && HasAVXSave; in getHostCPUFeatures()
1852 Features["avx512vnni"] = HasLeaf7 && ((ECX >> 11) & 1) && HasAVX512Save; in getHostCPUFeatures()
1853 Features["avx512bitalg"] = HasLeaf7 && ((ECX >> 12) & 1) && HasAVX512Save; in getHostCPUFeatures()
1854 Features["avx512vpopcntdq"] = HasLeaf7 && ((ECX >> 14) & 1) && HasAVX512Save; in getHostCPUFeatures()
1855 Features["rdpid"] = HasLeaf7 && ((ECX >> 22) & 1); in getHostCPUFeatures()
1856 Features["kl"] = HasLeaf7 && ((ECX >> 23) & 1); // key locker in getHostCPUFeatures()
1857 Features["cldemote"] = HasLeaf7 && ((ECX >> 25) & 1); in getHostCPUFeatures()
1858 Features["movdiri"] = HasLeaf7 && ((ECX >> 27) & 1); in getHostCPUFeatures()
1859 Features["movdir64b"] = HasLeaf7 && ((ECX >> 28) & 1); in getHostCPUFeatures()
1860 Features["enqcmd"] = HasLeaf7 && ((ECX >> 29) & 1); in getHostCPUFeatures()
1862 Features["uintr"] = HasLeaf7 && ((EDX >> 5) & 1); in getHostCPUFeatures()
1863 Features["avx512vp2intersect"] = in getHostCPUFeatures()
1865 Features["serialize"] = HasLeaf7 && ((EDX >> 14) & 1); in getHostCPUFeatures()
1866 Features["tsxldtrk"] = HasLeaf7 && ((EDX >> 16) & 1); in getHostCPUFeatures()
1875 // detecting features using the "-march=native" flag. in getHostCPUFeatures()
1877 Features["pconfig"] = HasLeaf7 && ((EDX >> 18) & 1); in getHostCPUFeatures()
1878 Features["amx-bf16"] = HasLeaf7 && ((EDX >> 22) & 1) && HasAMXSave; in getHostCPUFeatures()
1879 Features["avx512fp16"] = HasLeaf7 && ((EDX >> 23) & 1) && HasAVX512Save; in getHostCPUFeatures()
1880 Features["amx-tile"] = HasLeaf7 && ((EDX >> 24) & 1) && HasAMXSave; in getHostCPUFeatures()
1881 Features["amx-int8"] = HasLeaf7 && ((EDX >> 25) & 1) && HasAMXSave; in getHostCPUFeatures()
1887 Features["sha512"] = HasLeaf7Subleaf1 && ((EAX >> 0) & 1); in getHostCPUFeatures()
1888 Features["sm3"] = HasLeaf7Subleaf1 && ((EAX >> 1) & 1); in getHostCPUFeatures()
1889 Features["sm4"] = HasLeaf7Subleaf1 && ((EAX >> 2) & 1); in getHostCPUFeatures()
1890 Features["raoint"] = HasLeaf7Subleaf1 && ((EAX >> 3) & 1); in getHostCPUFeatures()
1891 Features["avxvnni"] = HasLeaf7Subleaf1 && ((EAX >> 4) & 1) && HasAVXSave; in getHostCPUFeatures()
1892 Features["avx512bf16"] = HasLeaf7Subleaf1 && ((EAX >> 5) & 1) && HasAVX512Save; in getHostCPUFeatures()
1893 Features["amx-fp16"] = HasLeaf7Subleaf1 && ((EAX >> 21) & 1) && HasAMXSave; in getHostCPUFeatures()
1894 Features["cmpccxadd"] = HasLeaf7Subleaf1 && ((EAX >> 7) & 1); in getHostCPUFeatures()
1895 Features["hreset"] = HasLeaf7Subleaf1 && ((EAX >> 22) & 1); in getHostCPUFeatures()
1896 Features["avxifma"] = HasLeaf7Subleaf1 && ((EAX >> 23) & 1) && HasAVXSave; in getHostCPUFeatures()
1897 Features["avxvnniint8"] = HasLeaf7Subleaf1 && ((EDX >> 4) & 1) && HasAVXSave; in getHostCPUFeatures()
1898 Features["avxneconvert"] = HasLeaf7Subleaf1 && ((EDX >> 5) & 1) && HasAVXSave; in getHostCPUFeatures()
1899 Features["amx-complex"] = HasLeaf7Subleaf1 && ((EDX >> 8) & 1) && HasAMXSave; in getHostCPUFeatures()
1900 Features["avxvnniint16"] = HasLeaf7Subleaf1 && ((EDX >> 10) & 1) && HasAVXSave; in getHostCPUFeatures()
1901 Features["prefetchi"] = HasLeaf7Subleaf1 && ((EDX >> 14) & 1); in getHostCPUFeatures()
1902 Features["usermsr"] = HasLeaf7Subleaf1 && ((EDX >> 15) & 1); in getHostCPUFeatures()
1903 Features["avx10.1-256"] = HasLeaf7Subleaf1 && ((EDX >> 19) & 1); in getHostCPUFeatures()
1905 Features["egpr"] = HasAPXF; in getHostCPUFeatures()
1906 Features["push2pop2"] = HasAPXF; in getHostCPUFeatures()
1907 Features["ppx"] = HasAPXF; in getHostCPUFeatures()
1908 Features["ndd"] = HasAPXF; in getHostCPUFeatures()
1909 Features["ccmp"] = HasAPXF; in getHostCPUFeatures()
1910 Features["cf"] = HasAPXF; in getHostCPUFeatures()
1916 Features["xsaveopt"] = HasLeafD && ((EAX >> 0) & 1) && HasAVXSave; in getHostCPUFeatures()
1917 Features["xsavec"] = HasLeafD && ((EAX >> 1) & 1) && HasAVXSave; in getHostCPUFeatures()
1918 Features["xsaves"] = HasLeafD && ((EAX >> 3) & 1) && HasAVXSave; in getHostCPUFeatures()
1923 Features["ptwrite"] = HasLeaf14 && ((EBX >> 4) & 1); in getHostCPUFeatures()
1927 Features["widekl"] = HasLeaf7 && HasLeaf19 && ((EBX >> 2) & 1); in getHostCPUFeatures()
1931 Features["avx10.1-512"] = in getHostCPUFeatures()
1932 Features["avx10.1-256"] && HasLeaf24 && ((EBX >> 18) & 1); in getHostCPUFeatures()
1934 return Features; in getHostCPUFeatures()
1938 StringMap<bool> Features; in getHostCPUFeatures() local
1941 return Features; in getHostCPUFeatures()
1948 // Look for the CPU features. in getHostCPUFeatures()
1950 if (Lines[I].starts_with("Features")) { in getHostCPUFeatures()
1956 // Keep track of which crypto features we have seen in getHostCPUFeatures()
1995 Features[LLVMFeatureStr] = true; in getHostCPUFeatures()
2001 Features["crypto"] = true; in getHostCPUFeatures()
2004 return Features; in getHostCPUFeatures()
2008 StringMap<bool> Features; in getHostCPUFeatures() local
2011 Features["neon"] = true; in getHostCPUFeatures()
2013 Features["crc"] = true; in getHostCPUFeatures()
2015 Features["crypto"] = true; in getHostCPUFeatures()
2017 return Features; in getHostCPUFeatures()
2027 StringMap<bool> Features; in getHostCPUFeatures() local
2029 Features["f"] = HasFPU && (cpucfg2 & (1U << 1)); // CPUCFG.2.FP_SP in getHostCPUFeatures()
2030 Features["d"] = HasFPU && (cpucfg2 & (1U << 2)); // CPUCFG.2.FP_DP in getHostCPUFeatures()
2032 Features["lsx"] = hwcap & (1UL << 4); // HWCAP_LOONGARCH_LSX in getHostCPUFeatures()
2033 Features["lasx"] = hwcap & (1UL << 5); // HWCAP_LOONGARCH_LASX in getHostCPUFeatures()
2034 Features["lvz"] = hwcap & (1UL << 9); // HWCAP_LOONGARCH_LVZ in getHostCPUFeatures()
2036 return Features; in getHostCPUFeatures()
2053 StringMap<bool> Features; in getHostCPUFeatures() local
2057 Features["i"] = true; in getHostCPUFeatures()
2058 Features["m"] = true; in getHostCPUFeatures()
2059 Features["a"] = true; in getHostCPUFeatures()
2063 Features["f"] = ExtMask & (1 << 0); // RISCV_HWPROBE_IMA_FD in getHostCPUFeatures()
2064 Features["d"] = ExtMask & (1 << 0); // RISCV_HWPROBE_IMA_FD in getHostCPUFeatures()
2065 Features["c"] = ExtMask & (1 << 1); // RISCV_HWPROBE_IMA_C in getHostCPUFeatures()
2066 Features["v"] = ExtMask & (1 << 2); // RISCV_HWPROBE_IMA_V in getHostCPUFeatures()
2067 Features["zba"] = ExtMask & (1 << 3); // RISCV_HWPROBE_EXT_ZBA in getHostCPUFeatures()
2068 Features["zbb"] = ExtMask & (1 << 4); // RISCV_HWPROBE_EXT_ZBB in getHostCPUFeatures()
2069 Features["zbs"] = ExtMask & (1 << 5); // RISCV_HWPROBE_EXT_ZBS in getHostCPUFeatures()
2070 Features["zicboz"] = ExtMask & (1 << 6); // RISCV_HWPROBE_EXT_ZICBOZ in getHostCPUFeatures()
2071 Features["zbc"] = ExtMask & (1 << 7); // RISCV_HWPROBE_EXT_ZBC in getHostCPUFeatures()
2072 Features["zbkb"] = ExtMask & (1 << 8); // RISCV_HWPROBE_EXT_ZBKB in getHostCPUFeatures()
2073 Features["zbkc"] = ExtMask & (1 << 9); // RISCV_HWPROBE_EXT_ZBKC in getHostCPUFeatures()
2074 Features["zbkx"] = ExtMask & (1 << 10); // RISCV_HWPROBE_EXT_ZBKX in getHostCPUFeatures()
2075 Features["zknd"] = ExtMask & (1 << 11); // RISCV_HWPROBE_EXT_ZKND in getHostCPUFeatures()
2076 Features["zkne"] = ExtMask & (1 << 12); // RISCV_HWPROBE_EXT_ZKNE in getHostCPUFeatures()
2077 Features["zknh"] = ExtMask & (1 << 13); // RISCV_HWPROBE_EXT_ZKNH in getHostCPUFeatures()
2078 Features["zksed"] = ExtMask & (1 << 14); // RISCV_HWPROBE_EXT_ZKSED in getHostCPUFeatures()
2079 Features["zksh"] = ExtMask & (1 << 15); // RISCV_HWPROBE_EXT_ZKSH in getHostCPUFeatures()
2080 Features["zkt"] = ExtMask & (1 << 16); // RISCV_HWPROBE_EXT_ZKT in getHostCPUFeatures()
2081 Features["zvbb"] = ExtMask & (1 << 17); // RISCV_HWPROBE_EXT_ZVBB in getHostCPUFeatures()
2082 Features["zvbc"] = ExtMask & (1 << 18); // RISCV_HWPROBE_EXT_ZVBC in getHostCPUFeatures()
2083 Features["zvkb"] = ExtMask & (1 << 19); // RISCV_HWPROBE_EXT_ZVKB in getHostCPUFeatures()
2084 Features["zvkg"] = ExtMask & (1 << 20); // RISCV_HWPROBE_EXT_ZVKG in getHostCPUFeatures()
2085 Features["zvkned"] = ExtMask & (1 << 21); // RISCV_HWPROBE_EXT_ZVKNED in getHostCPUFeatures()
2086 Features["zvknha"] = ExtMask & (1 << 22); // RISCV_HWPROBE_EXT_ZVKNHA in getHostCPUFeatures()
2087 Features["zvknhb"] = ExtMask & (1 << 23); // RISCV_HWPROBE_EXT_ZVKNHB in getHostCPUFeatures()
2088 Features["zvksed"] = ExtMask & (1 << 24); // RISCV_HWPROBE_EXT_ZVKSED in getHostCPUFeatures()
2089 Features["zvksh"] = ExtMask & (1 << 25); // RISCV_HWPROBE_EXT_ZVKSH in getHostCPUFeatures()
2090 Features["zvkt"] = ExtMask & (1 << 26); // RISCV_HWPROBE_EXT_ZVKT in getHostCPUFeatures()
2091 Features["zfh"] = ExtMask & (1 << 27); // RISCV_HWPROBE_EXT_ZFH in getHostCPUFeatures()
2092 Features["zfhmin"] = ExtMask & (1 << 28); // RISCV_HWPROBE_EXT_ZFHMIN in getHostCPUFeatures()
2093 Features["zihintntl"] = ExtMask & (1 << 29); // RISCV_HWPROBE_EXT_ZIHINTNTL in getHostCPUFeatures()
2094 Features["zvfh"] = ExtMask & (1 << 30); // RISCV_HWPROBE_EXT_ZVFH in getHostCPUFeatures()
2095 Features["zvfhmin"] = ExtMask & (1ULL << 31); // RISCV_HWPROBE_EXT_ZVFHMIN in getHostCPUFeatures()
2096 Features["zfa"] = ExtMask & (1ULL << 32); // RISCV_HWPROBE_EXT_ZFA in getHostCPUFeatures()
2097 Features["ztso"] = ExtMask & (1ULL << 33); // RISCV_HWPROBE_EXT_ZTSO in getHostCPUFeatures()
2099 // Features["zacas"] = ExtMask & (1ULL << 34); // RISCV_HWPROBE_EXT_ZACAS in getHostCPUFeatures()
2100 Features["zicond"] = ExtMask & (1ULL << 35); // RISCV_HWPROBE_EXT_ZICOND in getHostCPUFeatures()
2101 Features["zihintpause"] = in getHostCPUFeatures()
2107 return Features; in getHostCPUFeatures()