Data Structures | |
struct | YepLibraryVersion |
Contains information about Yeppp! library version. More... | |
struct | YepEnergyCounter |
Energy counter state. More... | |
Library initialization, deinitialization, and version information | |
enum YepStatus | yepLibrary_Init () |
Initialized the Yeppp! library. More... | |
enum YepStatus | yepLibrary_Release () |
Deinitialized the Yeppp! library and releases the consumed system resources. More... | |
struct YepLibraryVersion * | yepLibrary_GetVersion () |
Returns basic information about the library version. More... | |
Processor extensions information | |
enum YepStatus | yepLibrary_GetCpuIsaFeatures (Yep64u *isaFeatures) |
Returns information about the supported ISA extensions (excluding SIMD extensions) More... | |
enum YepStatus | yepLibrary_GetCpuSimdFeatures (Yep64u *simdFeatures) |
Returns information about the supported SIMD extensions. More... | |
enum YepStatus | yepLibrary_GetCpuSystemFeatures (Yep64u *systemFeatures) |
Returns information about processor features other than ISA extensions, and OS features related to CPU. More... | |
Processor vendor information | |
enum | YepCpuVendor { YepCpuVendorUnknown = 0, YepCpuVendorIntel = 1, YepCpuVendorAMD = 2, YepCpuVendorVIA = 3, YepCpuVendorTransmeta = 4, YepCpuVendorCyrix = 5, YepCpuVendorRise = 6, YepCpuVendorNSC = 7, YepCpuVendorSiS = 8, YepCpuVendorNexGen = 9, YepCpuVendorUMC = 10, YepCpuVendorRDC = 11, YepCpuVendorDMP = 12, YepCpuVendorARM = 20, YepCpuVendorMarvell = 21, YepCpuVendorQualcomm = 22, YepCpuVendorDEC = 23, YepCpuVendorTI = 24, YepCpuVendorApple = 25, YepCpuVendorIngenic = 40, YepCpuVendorICT = 41, YepCpuVendorMIPS = 42, YepCpuVendorIBM = 50, YepCpuVendorMotorola = 51, YepCpuVendorPASemi = 52, YepCpuVendorSun = 60, YepCpuVendorOracle = 61, YepCpuVendorFujitsu = 62, YepCpuVendorMCST = 63 } |
The company which designed the processor microarchitecture. More... | |
enum YepStatus | yepLibrary_GetCpuVendor (enum YepCpuVendor *vendor) |
Returns information about the vendor of the processor. More... | |
Processor architecture information | |
enum | YepCpuArchitecture { YepCpuArchitectureUnknown = 0, YepCpuArchitectureX86 = 1, YepCpuArchitectureARM = 2, YepCpuArchitectureMIPS = 3, YepCpuArchitecturePowerPC = 4, YepCpuArchitectureIA64 = 5, YepCpuArchitectureSPARC = 6 } |
The basic instruction set architecture of the processor. More... | |
enum YepStatus | yepLibrary_GetCpuArchitecture (enum YepCpuArchitecture *architecture) |
Returns the type of processor architecture. More... | |
Processor microarchitecture information | |
enum | YepCpuMicroarchitecture { YepCpuMicroarchitectureUnknown = 0, YepCpuMicroarchitectureP5 = (YepCpuArchitectureX86 << 24) + (YepCpuVendorIntel << 16) + 0x0001, YepCpuMicroarchitectureP6 = (YepCpuArchitectureX86 << 24) + (YepCpuVendorIntel << 16) + 0x0002, YepCpuMicroarchitectureWillamette = (YepCpuArchitectureX86 << 24) + (YepCpuVendorIntel << 16) + 0x0003, YepCpuMicroarchitecturePrescott = (YepCpuArchitectureX86 << 24) + (YepCpuVendorIntel << 16) + 0x0004, YepCpuMicroarchitectureDothan = (YepCpuArchitectureX86 << 24) + (YepCpuVendorIntel << 16) + 0x0005, YepCpuMicroarchitectureYonah = (YepCpuArchitectureX86 << 24) + (YepCpuVendorIntel << 16) + 0x0006, YepCpuMicroarchitectureConroe = (YepCpuArchitectureX86 << 24) + (YepCpuVendorIntel << 16) + 0x0007, YepCpuMicroarchitecturePenryn = (YepCpuArchitectureX86 << 24) + (YepCpuVendorIntel << 16) + 0x0008, YepCpuMicroarchitectureBonnell = (YepCpuArchitectureX86 << 24) + (YepCpuVendorIntel << 16) + 0x0009, YepCpuMicroarchitectureNehalem = (YepCpuArchitectureX86 << 24) + (YepCpuVendorIntel << 16) + 0x000A, YepCpuMicroarchitectureSandyBridge = (YepCpuArchitectureX86 << 24) + (YepCpuVendorIntel << 16) + 0x000B, YepCpuMicroarchitectureSaltwell = (YepCpuArchitectureX86 << 24) + (YepCpuVendorIntel << 16) + 0x000C, YepCpuMicroarchitectureIvyBridge = (YepCpuArchitectureX86 << 24) + (YepCpuVendorIntel << 16) + 0x000D, YepCpuMicroarchitectureHaswell = (YepCpuArchitectureX86 << 24) + (YepCpuVendorIntel << 16) + 0x000E, YepCpuMicroarchitectureSilvermont = (YepCpuArchitectureX86 << 24) + (YepCpuVendorIntel << 16) + 0x000F, YepCpuMicroarchitectureKnightsFerry = (YepCpuArchitectureX86 << 24) + (YepCpuVendorIntel << 16) + 0x0100, YepCpuMicroarchitectureKnightsCorner = (YepCpuArchitectureX86 << 24) + (YepCpuVendorIntel << 16) + 0x0101, YepCpuMicroarchitectureK5 = (YepCpuArchitectureX86 << 24) + (YepCpuVendorAMD << 16) + 0x0001, YepCpuMicroarchitectureK6 = (YepCpuArchitectureX86 << 24) + (YepCpuVendorAMD << 16) + 0x0002, YepCpuMicroarchitectureK7 = (YepCpuArchitectureX86 << 24) + (YepCpuVendorAMD << 16) + 0x0003, YepCpuMicroarchitectureGeode = (YepCpuArchitectureX86 << 24) + (YepCpuVendorAMD << 16) + 0x0004, YepCpuMicroarchitectureK8 = (YepCpuArchitectureX86 << 24) + (YepCpuVendorAMD << 16) + 0x0005, YepCpuMicroarchitectureK10 = (YepCpuArchitectureX86 << 24) + (YepCpuVendorAMD << 16) + 0x0006, YepCpuMicroarchitectureBobcat = (YepCpuArchitectureX86 << 24) + (YepCpuVendorAMD << 16) + 0x0007, YepCpuMicroarchitectureBulldozer = (YepCpuArchitectureX86 << 24) + (YepCpuVendorAMD << 16) + 0x0008, YepCpuMicroarchitecturePiledriver = (YepCpuArchitectureX86 << 24) + (YepCpuVendorAMD << 16) + 0x0009, YepCpuMicroarchitectureJaguar = (YepCpuArchitectureX86 << 24) + (YepCpuVendorAMD << 16) + 0x000A, YepCpuMicroarchitectureSteamroller = (YepCpuArchitectureX86 << 24) + (YepCpuVendorAMD << 16) + 0x000B, YepCpuMicroarchitectureStrongARM = (YepCpuArchitectureARM << 24) + (YepCpuVendorIntel << 16) + 0x0001, YepCpuMicroarchitectureXScale = (YepCpuArchitectureARM << 24) + (YepCpuVendorIntel << 16) + 0x0002, YepCpuMicroarchitectureARM7 = (YepCpuArchitectureARM << 24) + (YepCpuVendorARM << 16) + 0x0001, YepCpuMicroarchitectureARM9 = (YepCpuArchitectureARM << 24) + (YepCpuVendorARM << 16) + 0x0002, YepCpuMicroarchitectureARM11 = (YepCpuArchitectureARM << 24) + (YepCpuVendorARM << 16) + 0x0003, YepCpuMicroarchitectureCortexA5 = (YepCpuArchitectureARM << 24) + (YepCpuVendorARM << 16) + 0x0004, YepCpuMicroarchitectureCortexA7 = (YepCpuArchitectureARM << 24) + (YepCpuVendorARM << 16) + 0x0005, YepCpuMicroarchitectureCortexA8 = (YepCpuArchitectureARM << 24) + (YepCpuVendorARM << 16) + 0x0006, YepCpuMicroarchitectureCortexA9 = (YepCpuArchitectureARM << 24) + (YepCpuVendorARM << 16) + 0x0007, YepCpuMicroarchitectureCortexA15 = (YepCpuArchitectureARM << 24) + (YepCpuVendorARM << 16) + 0x0008, YepCpuMicroarchitectureScorpion = (YepCpuArchitectureARM << 24) + (YepCpuVendorQualcomm << 16) + 0x0001, YepCpuMicroarchitectureKrait = (YepCpuArchitectureARM << 24) + (YepCpuVendorQualcomm << 16) + 0x0002, YepCpuMicroarchitecturePJ1 = (YepCpuArchitectureARM << 24) + (YepCpuVendorMarvell << 16) + 0x0001, YepCpuMicroarchitecturePJ4 = (YepCpuArchitectureARM << 24) + (YepCpuVendorMarvell << 16) + 0x0002, YepCpuMicroarchitectureSwift = (YepCpuArchitectureARM << 24) + (YepCpuVendorApple << 16) + 0x0001, YepCpuMicroarchitectureItanium = (YepCpuArchitectureIA64 << 24) + (YepCpuVendorIntel << 16) + 0x0001, YepCpuMicroarchitectureItanium2 = (YepCpuArchitectureIA64 << 24) + (YepCpuVendorIntel << 16) + 0x0002, YepCpuMicroarchitectureMIPS24K = (YepCpuArchitectureMIPS << 24) + (YepCpuVendorMIPS << 16) + 0x0001, YepCpuMicroarchitectureMIPS34K = (YepCpuArchitectureMIPS << 24) + (YepCpuVendorMIPS << 16) + 0x0002, YepCpuMicroarchitectureMIPS74K = (YepCpuArchitectureMIPS << 24) + (YepCpuVendorMIPS << 16) + 0x0003, YepCpuMicroarchitectureXBurst = (YepCpuArchitectureMIPS << 24) + (YepCpuVendorIngenic << 16) + 0x0001, YepCpuMicroarchitectureXBurst2 = (YepCpuArchitectureMIPS << 24) + (YepCpuVendorIngenic << 16) + 0x0002 } |
Type of processor microarchitecture. More... | |
enum YepStatus | yepLibrary_GetCpuMicroarchitecture (enum YepCpuMicroarchitecture *microarchitecture) |
Returns the type of processor microarchitecture used. More... | |
Cycle counter access | |
enum YepStatus | yepLibrary_GetCpuCyclesAcquire (Yep64u *state) |
Initializes the processor cycle counter and starts counting the processor cycles. More... | |
enum YepStatus | yepLibrary_GetCpuCyclesRelease (Yep64u *state, Yep64u *cycles) |
Stops counting the processor cycles, releases the system resources associated with the cycle counter, and returns the number of cycles elapsed. More... | |
Energy counter access | |
enum | YepEnergyCounterType { YepEnergyCounterTypeRaplPackageEnergy = 1, YepEnergyCounterTypeRaplPowerPlane0Energy = 2, YepEnergyCounterTypeRaplPowerPlane1Energy = 3, YepEnergyCounterTypeRaplDRAMEnergy = 4, YepEnergyCounterTypeRaplPackagePower = 5, YepEnergyCounterTypeRaplPowerPlane0Power = 6, YepEnergyCounterTypeRaplPowerPlane1Power = 7, YepEnergyCounterTypeRaplDRAMPower = 8 } |
Energy counter type. More... | |
enum YepStatus | yepLibrary_GetEnergyCounterAcquire (enum YepEnergyCounterType type, struct YepEnergyCounter *state) |
Initializes the specified energy counter and starts energy measurements. More... | |
enum YepStatus | yepLibrary_GetEnergyCounterRelease (struct YepEnergyCounter *state, Yep64f *measurement) |
Stops the energy counter, releases the system resources associated with the energy counter, and reads the counter measurement. More... | |
System timer access | |
enum YepStatus | yepLibrary_GetTimerTicks (Yep64u *ticks) |
Returns the number of ticks of the high-resolution system timer. More... | |
enum YepStatus | yepLibrary_GetTimerFrequency (Yep64u *frequency) |
Returns the number of ticks of the system timer per second. More... | |
enum YepStatus | yepLibrary_GetTimerAccuracy (Yep64u *accuracy) |
Returns the minimum time difference in nanoseconds which can be measured by the high-resolution system timer. More... | |
String representation for enumeration values. | |
enum | YepEnumeration { YepEnumerationStatus = 0, YepEnumerationCpuArchitecture = 1, YepEnumerationCpuVendor = 2, YepEnumerationCpuMicroarchitecture = 3, YepEnumerationCpuBriefName = 4, YepEnumerationCpuFullName = 5, YepEnumerationGenericIsaFeature = YEP_ENUMERATION_ISA_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureUnknown), YepEnumerationGenericSimdFeature = YEP_ENUMERATION_SIMD_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureUnknown), YepEnumerationGenericSystemFeature = YEP_ENUMERATION_SYSTEM_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureUnknown), YepEnumerationX86IsaFeature = YEP_ENUMERATION_ISA_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureX86), YepEnumerationX86SimdFeature = YEP_ENUMERATION_SIMD_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureX86), YepEnumerationX86SystemFeature = YEP_ENUMERATION_SYSTEM_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureX86), YepEnumerationARMIsaFeature = YEP_ENUMERATION_ISA_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureARM), YepEnumerationARMSimdFeature = YEP_ENUMERATION_SIMD_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureARM), YepEnumerationARMSystemFeature = YEP_ENUMERATION_SYSTEM_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureARM), YepEnumerationMIPSIsaFeature = YEP_ENUMERATION_ISA_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureMIPS), YepEnumerationMIPSSimdFeature = YEP_ENUMERATION_SIMD_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureMIPS), YepEnumerationMIPSSystemFeature = YEP_ENUMERATION_SYSTEM_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureMIPS), YepEnumerationPowerPCIsaFeature = YEP_ENUMERATION_ISA_FEATURE_FOR_ARCHITECTURE(YepCpuArchitecturePowerPC), YepEnumerationPowerPCSimdFeature = YEP_ENUMERATION_SIMD_FEATURE_FOR_ARCHITECTURE(YepCpuArchitecturePowerPC), YepEnumerationPowerPCSystemFeature = YEP_ENUMERATION_SYSTEM_FEATURE_FOR_ARCHITECTURE(YepCpuArchitecturePowerPC), YepEnumerationIA64IsaFeature = YEP_ENUMERATION_ISA_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureIA64), YepEnumerationIA64SimdFeature = YEP_ENUMERATION_SIMD_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureIA64), YepEnumerationIA64SystemFeature = YEP_ENUMERATION_SYSTEM_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureIA64), YepEnumerationSPARCIsaFeature = YEP_ENUMERATION_ISA_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureSPARC), YepEnumerationSPARCSimdFeature = YEP_ENUMERATION_SIMD_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureSPARC), YepEnumerationSPARCSystemFeature = YEP_ENUMERATION_SYSTEM_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureSPARC) } |
Indicates how to interpret integer value from one of Yeppp! enumerations. More... | |
enum YepStatus | yepLibrary_GetString (enum YepEnumeration enumerationType, Yep32u enumerationValue, void *buffer, YepSize *length) |
Returns a string representation of an integer value in a enumeration. More... | |
Common CPU and System Features | |
| |
#define | YepSystemFeatureCycleCounter 0x0000000000000001ull |
The processor has a built-in cycle counter, and the operating system provides a way to access it. | |
#define | YepSystemFeatureCycleCounter64Bit 0x0000000000000002ull |
The processor has a 64-bit cycle counter, or the operating system provides an abstraction of a 64-bit cycle counter. | |
#define | YepSystemFeatureAddressSpace64Bit 0x0000000000000004ull |
The processor and the operating system allows to use 64-bit pointers. | |
#define | YepSystemFeatureGPRegisters64Bit 0x0000000000000008ull |
The processor and the operating system allows to do 64-bit arithmetical operations on general-purpose registers. | |
#define | YepSystemFeatureMisalignedAccess 0x0000000000000010ull |
The processor and the operating system allows misaligned memory reads and writes. | |
#define | YepSystemFeatureSingleThreaded 0x0000000000000020ull |
The processor or the operating system support at most one hardware thread. | |
x86 and x86-64 ISA Extensions | |
| |
#define | YepX86IsaFeatureFPU 0x0000000000000001ull |
x87 FPU integrated on chip. | |
#define | YepX86IsaFeatureCpuid 0x0000000000000002ull |
x87 CPUID instruction. | |
#define | YepX86IsaFeatureRdtsc 0x0000000000000004ull |
RDTSC instruction. | |
#define | YepX86IsaFeatureCMOV 0x0000000000000008ull |
CMOV, FCMOV, and FCOMI/FUCOMI instructions. | |
#define | YepX86IsaFeatureSYSENTER 0x0000000000000010ull |
SYSENTER and SYSEXIT instructions. | |
#define | YepX86IsaFeatureSYSCALL 0x0000000000000020ull |
SYSCALL and SYSRET instructions. | |
#define | YepX86IsaFeatureMSR 0x0000000000000040ull |
RDMSR and WRMSR instructions. | |
#define | YepX86IsaFeatureClflush 0x0000000000000080ull |
CLFLUSH instruction. | |
#define | YepX86IsaFeatureMONITOR 0x0000000000000100ull |
MONITOR and MWAIT instructions. | |
#define | YepX86IsaFeatureFXSAVE 0x0000000000000200ull |
FXSAVE and FXRSTOR instructions. | |
#define | YepX86IsaFeatureXSAVE 0x0000000000000400ull |
XSAVE, XRSTOR, XGETBV, and XSETBV instructions. | |
#define | YepX86IsaFeatureCmpxchg8b 0x0000000000000800ull |
CMPXCHG8B instruction. | |
#define | YepX86IsaFeatureCmpxchg16b 0x0000000000001000ull |
CMPXCHG16B instruction. | |
#define | YepX86IsaFeatureX64 0x0000000000002000ull |
Support for 64-bit mode. | |
#define | YepX86IsaFeatureLahfSahf64 0x0000000000004000ull |
Support for LAHF and SAHF instructions in 64-bit mode. | |
#define | YepX86IsaFeatureFsGsBase 0x0000000000008000ull |
RDFSBASE, RDGSBASE, WRFSBASE, and WRGSBASE instructions. | |
#define | YepX86IsaFeatureMovbe 0x0000000000010000ull |
MOVBE instruction. | |
#define | YepX86IsaFeaturePopcnt 0x0000000000020000ull |
POPCNT instruction. | |
#define | YepX86IsaFeatureLzcnt 0x0000000000040000ull |
LZCNT instruction. | |
#define | YepX86IsaFeatureBMI 0x0000000000080000ull |
BMI instruction set. | |
#define | YepX86IsaFeatureBMI2 0x0000000000100000ull |
BMI 2 instruction set. | |
#define | YepX86IsaFeatureTBM 0x0000000000200000ull |
TBM instruction set. | |
#define | YepX86IsaFeatureRdrand 0x0000000000400000ull |
RDRAND instruction. | |
#define | YepX86IsaFeatureACE 0x0000000000800000ull |
Padlock Advanced Cryptography Engine on chip. | |
#define | YepX86IsaFeatureACE2 0x0000000001000000ull |
Padlock Advanced Cryptography Engine 2 on chip. | |
#define | YepX86IsaFeatureRNG 0x0000000002000000ull |
Padlock Random Number Generator on chip. | |
#define | YepX86IsaFeaturePHE 0x0000000004000000ull |
Padlock Hash Engine on chip. | |
#define | YepX86IsaFeaturePMM 0x0000000008000000ull |
Padlock Montgomery Multiplier on chip. | |
#define | YepX86IsaFeatureAES 0x0000000010000000ull |
AES instruction set. | |
#define | YepX86IsaFeaturePclmulqdq 0x0000000020000000ull |
PCLMULQDQ instruction. | |
#define | YepX86IsaFeatureRdtscp 0x0000000040000000ull |
RDTSCP instruction. | |
#define | YepX86IsaFeatureLWP 0x0000000080000000ull |
Lightweight Profiling extension. | |
#define | YepX86IsaFeatureHLE 0x0000000100000000ull |
Hardware Lock Elision extension. | |
#define | YepX86IsaFeatureRTM 0x0000000200000000ull |
Restricted Transactional Memory extension. | |
#define | YepX86IsaFeatureXtest 0x0000000400000000ull |
XTEST instruction. | |
#define | YepX86IsaFeatureRdseed 0x0000000800000000ull |
RDSEED instruction. | |
#define | YepX86IsaFeatureADX 0x0000001000000000ull |
ADCX and ADOX instructions. | |
x86 and x86-64 SIMD Extensions | |
| |
#define | YepX86SimdFeatureMMX 0x0000000000000001ull |
MMX instruction set. More... | |
#define | YepX86SimdFeatureMMXPlus 0x0000000000000002ull |
MMX+ instruction set. More... | |
#define | YepX86SimdFeatureEMMX 0x0000000000000004ull |
EMMX instruction set. | |
#define | YepX86SimdFeature3dnow 0x0000000000000008ull |
3dnow! instruction set. More... | |
#define | YepX86SimdFeature3dnowPlus 0x0000000000000010ull |
3dnow!+ instruction set. More... | |
#define | YepX86SimdFeature3dnowPrefetch 0x0000000000000020ull |
3dnow! prefetch instructions. | |
#define | YepX86SimdFeature3dnowGeode 0x0000000000000040ull |
Geode 3dnow! instructions. | |
#define | YepX86SimdFeatureSSE 0x0000000000000080ull |
SSE instruction set. More... | |
#define | YepX86SimdFeatureSSE2 0x0000000000000100ull |
SSE 2 instruction set. More... | |
#define | YepX86SimdFeatureSSE3 0x0000000000000200ull |
SSE 3 instruction set. More... | |
#define | YepX86SimdFeatureSSSE3 0x0000000000000400ull |
SSSE 3 instruction set. More... | |
#define | YepX86SimdFeatureSSE4_1 0x0000000000000800ull |
SSE 4.1 instruction set. More... | |
#define | YepX86SimdFeatureSSE4_2 0x0000000000001000ull |
SSE 4.2 instruction set. More... | |
#define | YepX86SimdFeatureSSE4A 0x0000000000002000ull |
SSE 4A instruction set. More... | |
#define | YepX86SimdFeatureAVX 0x0000000000004000ull |
AVX instruction set. More... | |
#define | YepX86SimdFeatureAVX2 0x0000000000008000ull |
AVX 2 instruction set. More... | |
#define | YepX86SimdFeatureXOP 0x0000000000010000ull |
XOP instruction set. More... | |
#define | YepX86SimdFeatureF16C 0x0000000000020000ull |
F16C instruction set. More... | |
#define | YepX86SimdFeatureFMA3 0x0000000000040000ull |
FMA3 instruction set. More... | |
#define | YepX86SimdFeatureFMA4 0x0000000000080000ull |
FMA4 instruction set. More... | |
#define | YepX86SimdFeatureKNF 0x0000000000100000ull |
Knights Ferry (aka Larrabee) instruction set. | |
#define | YepX86SimdFeatureKNC 0x0000000000200000ull |
Knights Corner (aka Xeon Phi) instruction set. More... | |
x86 and x86-64 CPU and System Features | |
| |
#define | YepX86SystemFeatureFPU 0x0000000100000000ull |
The CPU has x87 FPU registers, and the operating systems preserves them during context switch. | |
#define | YepX86SystemFeatureSSE 0x0000000200000000ull |
The CPU has SSE registers, and the operating systems preserves them during context switch. | |
#define | YepX86SystemFeatureAVX 0x0000000400000000ull |
The CPU has AVX registers, and the operating systems preserves them during context switch. | |
#define | YepX86SystemFeatureMisalignedSSE 0x0000000800000000ull |
Processor allows to use misaligned memory operands in SSE instructions other than loads and stores. | |
#define | YepX86SystemFeatureACE 0x0000001000000000ull |
Processor and the operating system support the Padlock Advanced Cryptography Engine. | |
#define | YepX86SystemFeatureACE2 0x0000002000000000ull |
Processor and the operating system support the Padlock Advanced Cryptography Engine 2. | |
#define | YepX86SystemFeatureRNG 0x0000004000000000ull |
Processor and the operating system support the Padlock Random Number Generator. | |
#define | YepX86SystemFeaturePHE 0x0000008000000000ull |
Processor and the operating system support the Padlock Hash Engine. | |
#define | YepX86SystemFeaturePMM 0x0000010000000000ull |
Processor and the operating system support the Padlock Montgomery Multiplier. | |
#define | YepX86SystemFeatureMIC 0x0000020000000000ull |
The CPU has MIC registers, and the operating system preserves them during context switch. | |
IA64 ISA Extensions | |
| |
#define | YepIA64IsaFeatureBrl 0x0000000000000001ull |
Long branch instruction. | |
#define | YepIA64IsaFeatureAtomic128 0x0000000000000002ull |
Atomic 128-bit (16-byte) loads, stores, and CAS. | |
#define | YepIA64IsaFeatureClz 0x0000000000000004ull |
CLZ (count leading zeros) instruction. | |
#define | YepIA64IsaFeatureMpy4 0x0000000000000008ull |
MPY4 and MPYSHL4 (Truncated 32-bit multiplication) instructions. | |
ARM ISA Extensions | |
| |
#define | YepARMIsaFeatureV4 0x0000000000000001ull |
ARMv4 instruction set. | |
#define | YepARMIsaFeatureV5 0x0000000000000002ull |
ARMv5 instruciton set. | |
#define | YepARMIsaFeatureV5E 0x0000000000000004ull |
ARMv5 DSP instructions. | |
#define | YepARMIsaFeatureV6 0x0000000000000008ull |
ARMv6 instruction set. | |
#define | YepARMIsaFeatureV6K 0x0000000000000010ull |
ARMv6 Multiprocessing extensions. | |
#define | YepARMIsaFeatureV7 0x0000000000000020ull |
ARMv7 instruction set. | |
#define | YepARMIsaFeatureV7MP 0x0000000000000040ull |
ARMv7 Multiprocessing extensions. | |
#define | YepARMIsaFeatureThumb 0x0000000000000080ull |
Thumb mode. | |
#define | YepARMIsaFeatureThumb2 0x0000000000000100ull |
Thumb 2 mode. | |
#define | YepARMIsaFeatureThumbEE 0x0000000000000200ull |
Thumb EE mode. | |
#define | YepARMIsaFeatureJazelle 0x0000000000000400ull |
Jazelle extensions. | |
#define | YepARMIsaFeatureFPA 0x0000000000000800ull |
FPA instructions. | |
#define | YepARMIsaFeatureVFP 0x0000000000001000ull |
VFP instruction set. | |
#define | YepARMIsaFeatureVFP2 0x0000000000002000ull |
VFPv2 instruction set. | |
#define | YepARMIsaFeatureVFP3 0x0000000000004000ull |
VFPv3 instruction set. | |
#define | YepARMIsaFeatureVFPd32 0x0000000000008000ull |
VFP implementation with 32 double-precision registers. | |
#define | YepARMIsaFeatureVFP3HP 0x0000000000010000ull |
VFPv3 half precision extension. | |
#define | YepARMIsaFeatureVFP4 0x0000000000020000ull |
VFPv4 instruction set. | |
#define | YepARMIsaFeatureDiv 0x0000000000040000ull |
SDIV and UDIV instructions. | |
#define | YepARMIsaFeatureArmada 0x0000000000080000ull |
Marvell Armada instruction extensions. | |
ARM SIMD Extensions | |
| |
#define | YepARMSimdFeatureXScale 0x0000000000000001ull |
XScale instructions. | |
#define | YepARMSimdFeatureWMMX 0x0000000000000002ull |
Wireless MMX instruction set. | |
#define | YepARMSimdFeatureWMMX2 0x0000000000000004ull |
Wireless MMX 2 instruction set. | |
#define | YepARMSimdFeatureNEON 0x0000000000000008ull |
NEON (Advanced SIMD) instruction set. | |
#define | YepARMSimdFeatureNEONHP 0x0000000000000010ull |
NEON (Advanced SIMD) half-precision extension. | |
#define | YepARMSimdFeatureNEON2 0x0000000000000020ull |
NEON (Advanced SIMD) v2 instruction set. | |
ARM CPU and System Features | |
| |
#define | YepARMSystemFeatureVFPVectorMode 0x0000000100000000ull |
VFP vector mode is supported in hardware. | |
MIPS ISA Extensions | |
| |
#define | YepMIPSIsaFeatureR2 0x0000000000000001ull |
MIPS32/MIPS64 Release 2 architecture. | |
#define | YepMIPSIsaFeatureMicroMIPS 0x0000000000000002ull |
MicroMIPS extension. More... | |
#define | YepMIPSIsaFeatureFPU 0x0000000000000004ull |
FPU with S, D, and W formats and instructions. | |
#define | YepMIPSIsaFeatureMT 0x0000000000000008ull |
Multi-threading extension. | |
#define | YepMIPSIsaFeatureMIPS16 0x0000000000000010ull |
MIPS16 extension. | |
#define | YepMIPSIsaFeatureSmartMIPS 0x0000000000000020ull |
SmartMIPS extension. | |
MIPS SIMD Extensions | |
| |
#define | YepMIPSSimdFeatureMDMX 0x0000000000000001ull |
MDMX instruction set. | |
#define | YepMIPSSimdFeatureMIPS3D 0x0000000000000002ull |
MIPS3D instruction set. | |
#define | YepMIPSSimdFeaturePairedSingle 0x0000000000000004ull |
Paired-single instructions. | |
#define | YepMIPSSimdFeatureDSP 0x0000000000000008ull |
MIPS DSP extension. | |
#define | YepMIPSSimdFeatureDSP2 0x0000000000000010ull |
MIPS DSP Release 2 extension. | |
#define | YepMIPSSimdFeatureGodsonMMX 0x0000000000000020ull |
Loongson (Godson) MMX instruction set. More... | |
#define | YepMIPSSimdFeatureIMX 0x0000000000000040ull |
Ingenic Media Extension. | |
struct YepLibraryVersion |
Contains information about Yeppp! library version.
Data Fields | |
Yep32u | major |
The major version. Library releases with the same major versions are guaranteed to be API- and ABI-compatible. | |
Yep32u | minor |
The minor version. A change in minor versions indicates addition of new features, and major bug-fixes. | |
Yep32u | patchLevel |
The patch level. A version with a higher patch level indicates minor bug-fixes. | |
Yep32u | build |
The build number. The build number is unique for the fixed combination of major, minor, and patch-level versions. | |
const char * | releaseName |
A UTF-8 string with a human-readable name of this release. May contain non-ASCII characters. | |
struct YepEnergyCounter |
Energy counter state.
Data Fields | |
Yep64u | state [6] |
#define YepX86SimdFeatureMMX 0x0000000000000001ull |
MMX instruction set.
#define YepX86SimdFeatureMMXPlus 0x0000000000000002ull |
MMX+ instruction set.
#define YepX86SimdFeature3dnow 0x0000000000000008ull |
3dnow! instruction set.
#define YepX86SimdFeature3dnowPlus 0x0000000000000010ull |
3dnow!+ instruction set.
#define YepX86SimdFeatureSSE 0x0000000000000080ull |
SSE instruction set.
#define YepX86SimdFeatureSSE2 0x0000000000000100ull |
SSE 2 instruction set.
#define YepX86SimdFeatureSSE3 0x0000000000000200ull |
SSE 3 instruction set.
#define YepX86SimdFeatureSSSE3 0x0000000000000400ull |
SSSE 3 instruction set.
#define YepX86SimdFeatureSSE4_1 0x0000000000000800ull |
SSE 4.1 instruction set.
#define YepX86SimdFeatureSSE4_2 0x0000000000001000ull |
SSE 4.2 instruction set.
#define YepX86SimdFeatureSSE4A 0x0000000000002000ull |
SSE 4A instruction set.
#define YepX86SimdFeatureAVX 0x0000000000004000ull |
AVX instruction set.
#define YepX86SimdFeatureAVX2 0x0000000000008000ull |
AVX 2 instruction set.
#define YepX86SimdFeatureXOP 0x0000000000010000ull |
XOP instruction set.
#define YepX86SimdFeatureF16C 0x0000000000020000ull |
F16C instruction set.
#define YepX86SimdFeatureFMA3 0x0000000000040000ull |
FMA3 instruction set.
#define YepX86SimdFeatureFMA4 0x0000000000080000ull |
FMA4 instruction set.
#define YepX86SimdFeatureKNC 0x0000000000200000ull |
Knights Corner (aka Xeon Phi) instruction set.
#define YepMIPSIsaFeatureMicroMIPS 0x0000000000000002ull |
MicroMIPS extension.
#define YepMIPSSimdFeatureGodsonMMX 0x0000000000000020ull |
Loongson (Godson) MMX instruction set.
enum YepCpuVendor |
The company which designed the processor microarchitecture.
enum YepCpuArchitecture |
The basic instruction set architecture of the processor.
The ISA is always known at compile-time.
Type of processor microarchitecture.
Low-level instruction performance characteristics, such as latency and throughput, are constant within microarchitecture. Processors of the same microarchitecture can differ in supported instruction sets and other extensions.
enum YepEnergyCounterType |
Energy counter type.
enum YepEnumeration |
Indicates how to interpret integer value from one of Yeppp! enumerations.
Enumerator | |
---|---|
YepEnumerationStatus |
The enumeration type is YepStatus. |
YepEnumerationCpuArchitecture |
The enumeration type is YepCpuArchitecture. |
YepEnumerationCpuVendor |
The enumeration type is YepCpuVendor. |
YepEnumerationCpuMicroarchitecture |
The enumeration type is YepCpuMicroarchitecture. |
YepEnumerationCpuBriefName |
The enumeration type is one of the processor packages for which a brief name (without vendor name) will be requested. |
YepEnumerationCpuFullName |
The enumeration type is one of the processor packages for which a full name (including vendor name) will be requested. |
YepEnumerationGenericIsaFeature |
The enumeration type is one of the common ISA features constants. |
YepEnumerationGenericSimdFeature |
The enumeration type is one of the common SIMD features constants. |
YepEnumerationGenericSystemFeature |
The enumeration type is one of the common non-ISA or system features constants. |
YepEnumerationX86IsaFeature |
The enumeration type is one of the x86 ISA features constants. |
YepEnumerationX86SimdFeature |
The enumeration type is one of the x86 SIMD features constants. |
YepEnumerationX86SystemFeature |
The enumeration type is one of the x86 non-ISA or system features constants. |
YepEnumerationARMIsaFeature |
The enumeration type is one of the ARM ISA features constants. |
YepEnumerationARMSimdFeature |
The enumeration type is one of the ARM SIMD features constants. |
YepEnumerationARMSystemFeature |
The enumeration type is one of the ARM non-ISA or system features constants. |
YepEnumerationMIPSIsaFeature |
The enumeration type is one of the MIPS ISA features constants. |
YepEnumerationMIPSSimdFeature |
The enumeration type is one of the MIPS SIMD features constants. |
YepEnumerationMIPSSystemFeature |
The enumeration type is one of the MIPS non-ISA or system features constants. |
YepEnumerationPowerPCIsaFeature |
The enumeration type is one of the PowerPC ISA features constants. |
YepEnumerationPowerPCSimdFeature |
The enumeration type is one of the PowerPC SIMD features constants. |
YepEnumerationPowerPCSystemFeature |
The enumeration type is one of the PowerPC non-ISA or system features constants. |
YepEnumerationIA64IsaFeature |
The enumeration type is one of the IA64 ISA features constants. |
YepEnumerationIA64SimdFeature |
The enumeration type is one of the IA64 SIMD features constants. |
YepEnumerationIA64SystemFeature |
The enumeration type is one of the IA64 non-ISA or system features constants. |
YepEnumerationSPARCIsaFeature |
The enumeration type is one of the SPARC ISA features constants. |
YepEnumerationSPARCSimdFeature |
The enumeration type is one of the SPARC SIMD features constants. |
YepEnumerationSPARCSystemFeature |
The enumeration type is one of the SPARC non-ISA or system features constants. |
enum YepStatus yepLibrary_Init | ( | ) |
Initialized the Yeppp! library.
YepStatusOk | The library is successfully initialized. |
YepStatusSystemError | An uncoverable error inside the OS kernel occurred during library initialization. |
enum YepStatus yepLibrary_Release | ( | ) |
Deinitialized the Yeppp! library and releases the consumed system resources.
YepStatusOk | The library is successfully initialized. |
YepStatusSystemError | The library failed to release some of the resources due to a failed call to the OS kernel. |
struct YepLibraryVersion* yepLibrary_GetVersion | ( | ) |
Returns basic information about the library version.
Returns information about the supported ISA extensions (excluding SIMD extensions)
[out] | isaFeatures | Pointer to a 64-bit mask where information about the supported ISA extensions will be stored. |
YepStatusOk | The information successfully stored to the mask pointed by isaFeatures parameter. |
YepStatusNullPointer | The isaFeatures pointer is null. |
Returns information about the supported SIMD extensions.
[out] | simdFeatures | Pointer to a 64-bit mask where information about the supported SIMD extensions will be stored. |
YepStatusOk | The information successfully stored to the mask pointed by simdFeatures parameter. |
YepStatusNullPointer | The simdFeatures pointer is null. |
Returns information about processor features other than ISA extensions, and OS features related to CPU.
[out] | systemFeatures | Pointer to a 64-bit mask where information about extended processor and system features will be stored. |
YepStatusOk | The information successfully stored to the mask pointed by systemFeatures parameter. |
YepStatusNullPointer | The systemFeatures pointer is null. |
enum YepStatus yepLibrary_GetCpuVendor | ( | enum YepCpuVendor * | vendor) |
Returns information about the vendor of the processor.
[out] | vendor | Pointer to a variable where information about the processor vendor will be stored. |
YepStatusOk | The information successfully stored to the variable pointed by vendor parameter. |
YepStatusNullPointer | The vendor pointer is null. |
enum YepStatus yepLibrary_GetCpuArchitecture | ( | enum YepCpuArchitecture * | architecture) |
Returns the type of processor architecture.
[out] | architecture | Pointer to a variable where information about the processor architecture will be stored. |
YepStatusOk | The information successfully stored to the variable pointed by architecture parameter. |
YepStatusNullPointer | The architecture pointer is null. |
enum YepStatus yepLibrary_GetCpuMicroarchitecture | ( | enum YepCpuMicroarchitecture * | microarchitecture) |
Returns the type of processor microarchitecture used.
[out] | microarchitecture | Pointer to a variable where information about the processor microarchitecture will be stored. |
YepStatusOk | The information successfully stored to the variable pointed by microarchitecture parameter. |
YepStatusNullPointer | The microarchitecture pointer is null. |
Initializes the processor cycle counter and starts counting the processor cycles.
In the current implementation this function can use:
[out] | state | Pointer to a variable where the state of the cycle counter will be stored. If the function fails, the value of the state variable is not changed. |
YepStatusOk | The cycle counter successfully initialized and its state is stored to the variable pointed by state parameter. |
YepStatusNullPointer | The state pointer is null. |
YepStatusUnsupportedHardware | The processor does not have cycle counter. |
YepStatusUnsupportedSoftware | The operating system does not provide access to the CPU cycle counter. |
YepStatusSystemError | An attempt to initialize cycle counter failed inside the OS kernel. |
Stops counting the processor cycles, releases the system resources associated with the cycle counter, and returns the number of cycles elapsed.
[in,out] | state | Pointer to a variable with the state of the cycle counter saved by yepLibrary_GetCpuCyclesAcquire. The cycle counter should be released only once, and the function zeroes out the state variable. |
[out] | cycles | Pointer to a variable where the number of cycles elapsed will be stored. The pointer can be the same as state pointer. |
YepStatusOk | The number of cycles elapsed is saved to the variable pointed by cycles parameter, and the system resources are successfully released. |
YepStatusNullPointer | Either the state pointer or the cycles pointer is null. |
YepStatusInvalidState | The state variable does not specify a valid state of the cycle counter. This can happen if the state variable was not initialized, or it was released previously. |
YepStatusUnsupportedHardware | The processor does not have cycle counter. |
YepStatusUnsupportedSoftware | The operating system does not provide access to the CPU cycle counter. |
YepStatusSystemError | An attempt to read the cycle counter or release the OS resources failed inside the OS kernel. |
enum YepStatus yepLibrary_GetEnergyCounterAcquire | ( | enum YepEnergyCounterType | type, |
struct YepEnergyCounter * | state | ||
) |
Initializes the specified energy counter and starts energy measurements.
[in] | type | The type of the energy counter to initialize. |
[out] | state | The state variable corresponding to the initialized energy counter. If the function fails, the value of the state variable is not changed. It is recommended to initialize the state variables to all zeroes before calling this function. |
YepStatusOk | The energy counter successfully initialized and its state is store to the variable pointed by state parameter. |
YepStatusNullPointer | The state pointer is null. |
YepStatusInvalidArgument | The type parameter does not specify a valid energy counter type. |
YepStatusUnsupportedHardware | The hardware does not support the requested energy counter type. |
YepStatusUnsupportedSoftware | The operating system does not provide access to the specified energy counter. |
YepStatusSystemError | An attempt to read the energy counter or release the OS resources failed inside the OS kernel. |
YepStatusAccessDenied | The user does not possess the required access rights to read the energy counter. |
enum YepStatus yepLibrary_GetEnergyCounterRelease | ( | struct YepEnergyCounter * | state, |
Yep64f * | measurement | ||
) |
Stops the energy counter, releases the system resources associated with the energy counter, and reads the counter measurement.
[in,out] | state | Pointer to a variable with the state of the energy counter saved by yepLibrary_GetEnergyCounterAcquire. The energy counter should be released only once, and the function zeroes out the state variable. |
[out] | measurement | Pointer to a variable where the number of cycles elapsed will be stored. The pointer can be the same as state pointer. |
YepStatusOk | The energy counter measurement is saved to the variable pointed by measurement parameter, and the system resources are successfully released. |
YepStatusNullPointer | Either the state pointer or the measurement pointer is null. |
YepStatusInvalidState | The state variable does not specify a valid state of the energy counter. This can happen if the state variable was not initialized, or it was released previously. |
YepStatusUnsupportedHardware | The hardware does not support the requested energy counter type. |
YepStatusUnsupportedSoftware | The operating system does not provide access to the specified energy counter. |
YepStatusSystemError | An attempt to read the energy counter or release the OS resources failed inside the OS kernel. |
YepStatusAccessDenied | The user does not possess the required access rights to read the energy counter. |
Returns the number of ticks of the high-resolution system timer.
[out] | ticks | Pointer to a variable where the number of timer ticks will be stored. If the function fails, the value of the variable at this address is not changed. |
YepStatusOk | The number of timer ticks is successfully stored to the variable pointed by ticks parameter. |
YepStatusNullPointer | The ticks pointer is null. |
YepStatusSystemError | An attempt to read the high-resolution timer failed inside the OS kernel. |
Returns the number of ticks of the system timer per second.
[out] | frequency | Pointer to a variable where the number of timer ticks per second will be stored. |
YepStatusOk | The number of timer ticks is successfully stored to the variable pointed by frequency parameter. |
YepStatusNullPointer | The frequency pointer is null. |
YepStatusSystemError | An attempt to query the high-resolution timer parameters failed inside the OS kernel. |
Returns the minimum time difference in nanoseconds which can be measured by the high-resolution system timer.
[out] | accuracy | Pointer to a variable where the timer accuracy will be stored. |
YepStatusOk | The accuracy of the timer is successfully stored to the variable pointed by accuracy parameter. |
YepStatusNullPointer | The accuracy pointer is null. |
YepStatusSystemError | An attempt to measure the accuracy of high-resolution timer failed inside the OS kernel. |
enum YepStatus yepLibrary_GetString | ( | enum YepEnumeration | enumerationType, |
Yep32u | enumerationValue, | ||
void * | buffer, | ||
YepSize * | length | ||
) |
Returns a string representation of an integer value in a enumeration.
[in] | enumerationType | Indicates the type of integer value passed to the function in enumerationValue parameter. |
[in] | enumerationValue | The enumeration value of type specified in enumerationType which must be converted to string. |
[out] | buffer | An output buffer of size specified by the length parameter. On successfull return the buffer will contain the string representation of enumerationValue. The string representation does not include the terminating zero. If the function fails, the content of the buffer is not changed. |
[in,out] | length | On function call this variable must contain the length (in bytes) of the buffer. On successfull return this variable will contain the length (in bytes) of the string written to the buffer. If the function fails with YepStatusInsufficientBuffer error, on return the length variable will contain the required size of the buffer. In the function fails with any other error, this variable is unchanged. |
YepStatusOk | The string is successfully stored in the buffer. |
YepStatusNullPointer | Buffer or length pointer is null. |
YepStatusInvalidArgument | Either enumerationType or enumerationValue contain values unknown to the library. |
YepStatusInsufficientBuffer | The output buffer is too small for the string. The content of the output buffer is unchanged, and the required size of the buffer is returned in the length variable. |