Lines Matching defs:ECX
607 unsigned EAX = 0, EBX = 0, ECX = 0, EDX = 0;
616 if (getX86CpuIDAndInfo(0, MaxLeaf, &EBX, &ECX, &EDX) || *MaxLeaf < 1)
620 if (EBX == 0x756e6547 && EDX == 0x49656e69 && ECX == 0x6c65746e)
624 if (EBX == 0x68747541 && EDX == 0x69746e65 && ECX == 0x444d4163)
1244 static void getAvailableFeatures(unsigned ECX, unsigned EDX, unsigned MaxLeaf,
1261 if ((ECX >> 0) & 1)
1263 if ((ECX >> 1) & 1)
1265 if ((ECX >> 9) & 1)
1267 if ((ECX >> 12) & 1)
1269 if ((ECX >> 19) & 1)
1271 if ((ECX >> 20) & 1) {
1275 if ((ECX >> 23) & 1)
1277 if ((ECX >> 25) & 1)
1280 if ((ECX >> 22) & 1)
1287 bool HasAVX = ((ECX & AVXBits) == AVXBits) && !getX86XCR0(&EAX, &EDX) &&
1303 MaxLeaf >= 0x7 && !getX86CpuIDAndInfoEx(0x7, 0x0, &EAX, &EBX, &ECX, &EDX);
1332 if (HasLeaf7 && ((ECX >> 1) & 1) && HasAVX512Save)
1334 if (HasLeaf7 && ((ECX >> 6) & 1) && HasAVX512Save)
1336 if (HasLeaf7 && ((ECX >> 8) & 1))
1338 if (HasLeaf7 && ((ECX >> 10) & 1) && HasAVX)
1340 if (HasLeaf7 && ((ECX >> 11) & 1) && HasAVX512Save)
1342 if (HasLeaf7 && ((ECX >> 12) & 1) && HasAVX512Save)
1344 if (HasLeaf7 && ((ECX >> 14) & 1) && HasAVX512Save)
1358 !getX86CpuIDAndInfoEx(0x7, 0x1, &EAX, &EBX, &ECX, &EDX);
1363 getX86CpuIDAndInfo(0x80000000, &MaxExtLevel, &EBX, &ECX, &EDX);
1366 !getX86CpuIDAndInfo(0x80000001, &EAX, &EBX, &ECX, &EDX);
1367 if (HasExtLeaf1 && ((ECX >> 6) & 1))
1369 if (HasExtLeaf1 && ((ECX >> 11) & 1))
1371 if (HasExtLeaf1 && ((ECX >> 16) & 1))
1384 unsigned EAX = 0, EBX = 0, ECX = 0, EDX = 0;
1385 getX86CpuIDAndInfo(0x1, &EAX, &EBX, &ECX, &EDX);
1390 getAvailableFeatures(ECX, EDX, MaxLeaf, Features);
1741 unsigned EAX = 0, EBX = 0, ECX = 0, EDX = 0;
1745 if (getX86CpuIDAndInfo(0, &MaxLevel, &EBX, &ECX, &EDX) || MaxLevel < 1)
1748 getX86CpuIDAndInfo(1, &EAX, &EBX, &ECX, &EDX);
1757 Features["sse3"] = (ECX >> 0) & 1;
1758 Features["pclmul"] = (ECX >> 1) & 1;
1759 Features["ssse3"] = (ECX >> 9) & 1;
1760 Features["cx16"] = (ECX >> 13) & 1;
1761 Features["sse4.1"] = (ECX >> 19) & 1;
1762 Features["sse4.2"] = (ECX >> 20) & 1;
1764 Features["movbe"] = (ECX >> 22) & 1;
1765 Features["popcnt"] = (ECX >> 23) & 1;
1766 Features["aes"] = (ECX >> 25) & 1;
1767 Features["rdrnd"] = (ECX >> 30) & 1;
1772 bool HasXSave = ((ECX >> 27) & 1) && !getX86XCR0(&EAX, &EDX);
1773 bool HasAVXSave = HasXSave && ((ECX >> 28) & 1) && ((EAX & 0x6) == 0x6);
1788 Features["fma"] = ((ECX >> 12) & 1) && HasAVXSave;
1790 Features["xsave"] = ((ECX >> 26) & 1) && HasAVXSave;
1791 Features["f16c"] = ((ECX >> 29) & 1) && HasAVXSave;
1794 getX86CpuIDAndInfo(0x80000000, &MaxExtLevel, &EBX, &ECX, &EDX);
1797 !getX86CpuIDAndInfo(0x80000001, &EAX, &EBX, &ECX, &EDX);
1798 Features["sahf"] = HasExtLeaf1 && ((ECX >> 0) & 1);
1799 Features["lzcnt"] = HasExtLeaf1 && ((ECX >> 5) & 1);
1800 Features["sse4a"] = HasExtLeaf1 && ((ECX >> 6) & 1);
1801 Features["prfchw"] = HasExtLeaf1 && ((ECX >> 8) & 1);
1802 Features["xop"] = HasExtLeaf1 && ((ECX >> 11) & 1) && HasAVXSave;
1803 Features["lwp"] = HasExtLeaf1 && ((ECX >> 15) & 1);
1804 Features["fma4"] = HasExtLeaf1 && ((ECX >> 16) & 1) && HasAVXSave;
1805 Features["tbm"] = HasExtLeaf1 && ((ECX >> 21) & 1);
1806 Features["mwaitx"] = HasExtLeaf1 && ((ECX >> 29) & 1);
1813 !getX86CpuIDAndInfo(0x80000008, &EAX, &EBX, &ECX, &EDX);
1819 MaxLevel >= 7 && !getX86CpuIDAndInfoEx(0x7, 0x0, &EAX, &EBX, &ECX, &EDX);
1844 Features["avx512vbmi"] = HasLeaf7 && ((ECX >> 1) & 1) && HasAVX512Save;
1845 Features["pku"] = HasLeaf7 && ((ECX >> 4) & 1);
1846 Features["waitpkg"] = HasLeaf7 && ((ECX >> 5) & 1);
1847 Features["avx512vbmi2"] = HasLeaf7 && ((ECX >> 6) & 1) && HasAVX512Save;
1848 Features["shstk"] = HasLeaf7 && ((ECX >> 7) & 1);
1849 Features["gfni"] = HasLeaf7 && ((ECX >> 8) & 1);
1850 Features["vaes"] = HasLeaf7 && ((ECX >> 9) & 1) && HasAVXSave;
1851 Features["vpclmulqdq"] = HasLeaf7 && ((ECX >> 10) & 1) && HasAVXSave;
1852 Features["avx512vnni"] = HasLeaf7 && ((ECX >> 11) & 1) && HasAVX512Save;
1853 Features["avx512bitalg"] = HasLeaf7 && ((ECX >> 12) & 1) && HasAVX512Save;
1854 Features["avx512vpopcntdq"] = HasLeaf7 && ((ECX >> 14) & 1) && HasAVX512Save;
1855 Features["rdpid"] = HasLeaf7 && ((ECX >> 22) & 1);
1856 Features["kl"] = HasLeaf7 && ((ECX >> 23) & 1); // key locker
1857 Features["cldemote"] = HasLeaf7 && ((ECX >> 25) & 1);
1858 Features["movdiri"] = HasLeaf7 && ((ECX >> 27) & 1);
1859 Features["movdir64b"] = HasLeaf7 && ((ECX >> 28) & 1);
1860 Features["enqcmd"] = HasLeaf7 && ((ECX >> 29) & 1);
1869 // EAX=0x7, ECX=0x0 indicates the availability of the instruction (via the 18th
1886 !getX86CpuIDAndInfoEx(0x7, 0x1, &EAX, &EBX, &ECX, &EDX);
1913 !getX86CpuIDAndInfoEx(0xd, 0x1, &EAX, &EBX, &ECX, &EDX);
1921 !getX86CpuIDAndInfoEx(0x14, 0x0, &EAX, &EBX, &ECX, &EDX);
1926 MaxLevel >= 0x19 && !getX86CpuIDAndInfo(0x19, &EAX, &EBX, &ECX, &EDX);
1930 MaxLevel >= 0x24 && !getX86CpuIDAndInfo(0x24, &EAX, &EBX, &ECX, &EDX);