MCPcopy Create free account
hub / github.com/pydata/numexpr / get_flags

Method get_flags

numexpr3/cpuinfo.py:768–958  ·  view source on GitHub ↗
(self, max_extension_support)

Source from the content-addressed store, hash-verified

766
767 # http://en.wikipedia.org/wiki/CPUID#EAX.3D1:_Processor_Info_and_Feature_Bits
768 def get_flags(self, max_extension_support):
769 # EDX
770 edx = self._run_asm(
771 self._one_eax(),
772 b"\x0f\xa2" # cpuid
773 b"\x89\xD0" # mov ax,dx
774 b"\xC3" # ret
775 )
776
777 # ECX
778 ecx = self._run_asm(
779 self._one_eax(),
780 b"\x0f\xa2" # cpuid
781 b"\x89\xC8" # mov ax,cx
782 b"\xC3" # ret
783 )
784
785 # Get the CPU flags
786 flags = {
787 'fpu' : is_bit_set(edx, 0),
788 'vme' : is_bit_set(edx, 1),
789 'de' : is_bit_set(edx, 2),
790 'pse' : is_bit_set(edx, 3),
791 'tsc' : is_bit_set(edx, 4),
792 'msr' : is_bit_set(edx, 5),
793 'pae' : is_bit_set(edx, 6),
794 'mce' : is_bit_set(edx, 7),
795 'cx8' : is_bit_set(edx, 8),
796 'apic' : is_bit_set(edx, 9),
797 #'reserved1' : is_bit_set(edx, 10),
798 'sep' : is_bit_set(edx, 11),
799 'mtrr' : is_bit_set(edx, 12),
800 'pge' : is_bit_set(edx, 13),
801 'mca' : is_bit_set(edx, 14),
802 'cmov' : is_bit_set(edx, 15),
803 'pat' : is_bit_set(edx, 16),
804 'pse36' : is_bit_set(edx, 17),
805 'pn' : is_bit_set(edx, 18),
806 'clflush' : is_bit_set(edx, 19),
807 #'reserved2' : is_bit_set(edx, 20),
808 'dts' : is_bit_set(edx, 21),
809 'acpi' : is_bit_set(edx, 22),
810 'mmx' : is_bit_set(edx, 23),
811 'fxsr' : is_bit_set(edx, 24),
812 'sse' : is_bit_set(edx, 25),
813 'sse2' : is_bit_set(edx, 26),
814 'ss' : is_bit_set(edx, 27),
815 'ht' : is_bit_set(edx, 28),
816 'tm' : is_bit_set(edx, 29),
817 'ia64' : is_bit_set(edx, 30),
818 'pbe' : is_bit_set(edx, 31),
819
820 'pni' : is_bit_set(ecx, 0),
821 'pclmulqdq' : is_bit_set(ecx, 1),
822 'dtes64' : is_bit_set(ecx, 2),
823 'monitor' : is_bit_set(ecx, 3),
824 'ds_cpl' : is_bit_set(ecx, 4),
825 'vmx' : is_bit_set(ecx, 5),

Callers 1

Calls 3

_run_asmMethod · 0.95
_one_eaxMethod · 0.95
is_bit_setFunction · 0.85

Tested by

no test coverage detected