Yeppp!
 All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
yepLibrary.h
1 /*
2  * Yeppp! library header
3  *
4  * This file is part of Yeppp! library and licensed under the New BSD license.
5  *
6  * Copyright (C) 2010-2012 Marat Dukhan
7  * Copyright (C) 2012-2013 Georgia Institute of Technology
8  * All rights reserved.
9  *
10  * Redistribution and use in source and binary forms, with or without
11  * modification, are permitted provided that the following conditions are met:
12  * * Redistributions of source code must retain the above copyright
13  * notice, this list of conditions and the following disclaimer.
14  * * Redistributions in binary form must reproduce the above copyright
15  * notice, this list of conditions and the following disclaimer in the
16  * documentation and/or other materials provided with the distribution.
17  * * Neither the name of the Georgia Institute of Technology nor the
18  * names of its contributors may be used to endorse or promote products
19  * derived from this software without specific prior written permission.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
22  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
23  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
24  * DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
25  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
26  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
27  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
28  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
30  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32 
33 #pragma once
34 
35 #include <yepPredefines.h>
36 #include <yepTypes.h>
37 
40 #ifdef __cplusplus
41 extern "C" {
42 #endif
43 
53  YEP_PUBLIC_SYMBOL enum YepStatus YEPABI yepLibrary_Init();
61  YEP_PUBLIC_SYMBOL enum YepStatus YEPABI yepLibrary_Release();
77  const char* releaseName;
78  };
84  YEP_PUBLIC_SYMBOL const struct YepLibraryVersion *YEPABI yepLibrary_GetVersion();
98  YEP_PUBLIC_SYMBOL enum YepStatus YEPABI yepLibrary_GetCpuIsaFeatures(Yep64u *isaFeatures);
108  YEP_PUBLIC_SYMBOL enum YepStatus YEPABI yepLibrary_GetCpuSimdFeatures(Yep64u *simdFeatures);
119  YEP_PUBLIC_SYMBOL enum YepStatus YEPABI yepLibrary_GetCpuSystemFeatures(Yep64u *systemFeatures);
132 
133  /* x86/x86-64 CPUs */
134 
173 
174  /* ARM CPUs */
175 
189 
190  /* MIPS CPUs */
191 
198 
199  /* PowerPC CPUs */
200 
208 
209  /* SPARC CPUs */
210 
220  };
228  YEP_PUBLIC_SYMBOL enum YepStatus YEPABI yepLibrary_GetCpuVendor(enum YepCpuVendor *vendor);
255  };
263  YEP_PUBLIC_SYMBOL enum YepStatus YEPABI yepLibrary_GetCpuArchitecture(enum YepCpuArchitecture *architecture);
278 
309 
314 
337 
342 
359 
364 
369 
372 
377 
384 
389  };
397  YEP_PUBLIC_SYMBOL enum YepStatus YEPABI yepLibrary_GetCpuMicroarchitecture(enum YepCpuMicroarchitecture *microarchitecture);
400  YEP_PUBLIC_SYMBOL enum YepStatus YEPABI yepLibrary_GetCpuDataCacheSize(Yep32u level, Yep32u *cacheSize);
401  YEP_PUBLIC_SYMBOL enum YepStatus YEPABI yepLibrary_GetCpuInstructionCacheSize(Yep32u level, Yep32u *cacheSize);
402  YEP_PUBLIC_SYMBOL enum YepStatus YEPABI yepLibrary_GetLogicalCoresCount(Yep32u *logicalCoresCount);
403 
428  YEP_PUBLIC_SYMBOL enum YepStatus YEPABI yepLibrary_GetCpuCyclesAcquire(Yep64u *state);
445  YEP_PUBLIC_SYMBOL enum YepStatus YEPABI yepLibrary_GetCpuCyclesRelease(Yep64u *state, Yep64u *cycles);
456  Yep64u state[6];
457  };
494  };
511  YEP_PUBLIC_SYMBOL enum YepStatus YEPABI yepLibrary_GetEnergyCounterAcquire(enum YepEnergyCounterType type, struct YepEnergyCounter *state);
529  YEP_PUBLIC_SYMBOL enum YepStatus YEPABI yepLibrary_GetEnergyCounterRelease(struct YepEnergyCounter *state, Yep64f *measurement);
543  YEP_PUBLIC_SYMBOL enum YepStatus YEPABI yepLibrary_GetTimerTicks(Yep64u *ticks);
552  YEP_PUBLIC_SYMBOL enum YepStatus YEPABI yepLibrary_GetTimerFrequency(Yep64u *frequency);
561  YEP_PUBLIC_SYMBOL enum YepStatus YEPABI yepLibrary_GetTimerAccuracy(Yep64u *accuracy);
566  #define YEP_ENUMERATION_ISA_FEATURE_FOR_ARCHITECTURE(architecture) (256 + (architecture))
567  #define YEP_ENUMERATION_SIMD_FEATURE_FOR_ARCHITECTURE(architecture) (512 + (architecture))
568  #define YEP_ENUMERATION_SYSTEM_FEATURE_FOR_ARCHITECTURE(architecture) (768 + (architecture))
569 
586  YepEnumerationGenericIsaFeature = YEP_ENUMERATION_ISA_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureUnknown),
588  YepEnumerationGenericSimdFeature = YEP_ENUMERATION_SIMD_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureUnknown),
590  YepEnumerationGenericSystemFeature = YEP_ENUMERATION_SYSTEM_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureUnknown),
592  YepEnumerationX86IsaFeature = YEP_ENUMERATION_ISA_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureX86),
594  YepEnumerationX86SimdFeature = YEP_ENUMERATION_SIMD_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureX86),
596  YepEnumerationX86SystemFeature = YEP_ENUMERATION_SYSTEM_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureX86),
598  YepEnumerationARMIsaFeature = YEP_ENUMERATION_ISA_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureARM),
600  YepEnumerationARMSimdFeature = YEP_ENUMERATION_SIMD_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureARM),
602  YepEnumerationARMSystemFeature = YEP_ENUMERATION_SYSTEM_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureARM),
604  YepEnumerationMIPSIsaFeature = YEP_ENUMERATION_ISA_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureMIPS),
606  YepEnumerationMIPSSimdFeature = YEP_ENUMERATION_SIMD_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureMIPS),
608  YepEnumerationMIPSSystemFeature = YEP_ENUMERATION_SYSTEM_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureMIPS),
610  YepEnumerationPowerPCIsaFeature = YEP_ENUMERATION_ISA_FEATURE_FOR_ARCHITECTURE(YepCpuArchitecturePowerPC),
612  YepEnumerationPowerPCSimdFeature = YEP_ENUMERATION_SIMD_FEATURE_FOR_ARCHITECTURE(YepCpuArchitecturePowerPC),
614  YepEnumerationPowerPCSystemFeature = YEP_ENUMERATION_SYSTEM_FEATURE_FOR_ARCHITECTURE(YepCpuArchitecturePowerPC),
616  YepEnumerationIA64IsaFeature = YEP_ENUMERATION_ISA_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureIA64),
618  YepEnumerationIA64SimdFeature = YEP_ENUMERATION_SIMD_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureIA64),
620  YepEnumerationIA64SystemFeature = YEP_ENUMERATION_SYSTEM_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureIA64),
622  YepEnumerationSPARCIsaFeature = YEP_ENUMERATION_ISA_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureSPARC),
624  YepEnumerationSPARCSimdFeature = YEP_ENUMERATION_SIMD_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureSPARC),
626  YepEnumerationSPARCSystemFeature = YEP_ENUMERATION_SYSTEM_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureSPARC)
627  };
640  YEP_PUBLIC_SYMBOL enum YepStatus YEPABI yepLibrary_GetString(enum YepEnumeration enumerationType, Yep32u enumerationValue, void *buffer, YepSize *length);
643 #ifdef __cplusplus
644  const Yep64u YepIsaFeaturesDefault = 0x0000000000000000ull;
645  const Yep64u YepSimdFeaturesDefault = 0x0000000000000000ull;
646  const Yep64u YepSystemFeaturesDefault = 0x0000000000000000ull;
647 #else
648  #define YepIsaFeaturesDefault 0x0000000000000000ull
649  #define YepSimdFeaturesDefault 0x0000000000000000ull
650  #define YepSystemFeaturesDefault 0x0000000000000000ull
651 #endif
652 
653 #ifdef __cplusplus
654  const Yep64u YepSystemFeatureCycleCounter = 0x0000000000000001ull;
655  const Yep64u YepSystemFeatureCycleCounter64Bit = 0x0000000000000002ull;
656  const Yep64u YepSystemFeatureAddressSpace64Bit = 0x0000000000000004ull;
657  const Yep64u YepSystemFeatureGPRegisters64Bit = 0x0000000000000008ull;
658  const Yep64u YepSystemFeatureMisalignedAccess = 0x0000000000000010ull;
659  const Yep64u YepSystemFeatureSingleThreaded = 0x0000000000000020ull;
660 #else
661 
667  #define YepSystemFeatureCycleCounter 0x0000000000000001ull
668 
670  #define YepSystemFeatureCycleCounter64Bit 0x0000000000000002ull
671 
673  #define YepSystemFeatureAddressSpace64Bit 0x0000000000000004ull
674 
676  #define YepSystemFeatureGPRegisters64Bit 0x0000000000000008ull
677 
679  #define YepSystemFeatureMisalignedAccess 0x0000000000000010ull
680 
682  #define YepSystemFeatureSingleThreaded 0x0000000000000020ull
683 
684 #endif
685 
686 #ifdef __cplusplus
687  const Yep64u YepX86IsaFeatureFPU = 0x0000000000000001ull;
688  const Yep64u YepX86IsaFeatureCpuid = 0x0000000000000002ull;
689  const Yep64u YepX86IsaFeatureRdtsc = 0x0000000000000004ull;
690  const Yep64u YepX86IsaFeatureCMOV = 0x0000000000000008ull;
691  const Yep64u YepX86IsaFeatureSYSENTER = 0x0000000000000010ull;
692  const Yep64u YepX86IsaFeatureSYSCALL = 0x0000000000000020ull;
693  const Yep64u YepX86IsaFeatureMSR = 0x0000000000000040ull;
694  const Yep64u YepX86IsaFeatureClflush = 0x0000000000000080ull;
695  const Yep64u YepX86IsaFeatureMONITOR = 0x0000000000000100ull;
696  const Yep64u YepX86IsaFeatureFXSAVE = 0x0000000000000200ull;
697  const Yep64u YepX86IsaFeatureXSAVE = 0x0000000000000400ull;
698  const Yep64u YepX86IsaFeatureCmpxchg8b = 0x0000000000000800ull;
699  const Yep64u YepX86IsaFeatureCmpxchg16b = 0x0000000000001000ull;
700  const Yep64u YepX86IsaFeatureX64 = 0x0000000000002000ull;
701  const Yep64u YepX86IsaFeatureLahfSahf64 = 0x0000000000004000ull;
702  const Yep64u YepX86IsaFeatureFsGsBase = 0x0000000000008000ull;
703  const Yep64u YepX86IsaFeatureMovbe = 0x0000000000010000ull;
704  const Yep64u YepX86IsaFeaturePopcnt = 0x0000000000020000ull;
705  const Yep64u YepX86IsaFeatureLzcnt = 0x0000000000040000ull;
706  const Yep64u YepX86IsaFeatureBMI = 0x0000000000080000ull;
707  const Yep64u YepX86IsaFeatureBMI2 = 0x0000000000100000ull;
708  const Yep64u YepX86IsaFeatureTBM = 0x0000000000200000ull;
709  const Yep64u YepX86IsaFeatureRdrand = 0x0000000000400000ull;
710  const Yep64u YepX86IsaFeatureACE = 0x0000000000800000ull;
711  const Yep64u YepX86IsaFeatureACE2 = 0x0000000001000000ull;
712  const Yep64u YepX86IsaFeatureRNG = 0x0000000002000000ull;
713  const Yep64u YepX86IsaFeaturePHE = 0x0000000004000000ull;
714  const Yep64u YepX86IsaFeaturePMM = 0x0000000008000000ull;
715  const Yep64u YepX86IsaFeatureAES = 0x0000000010000000ull;
716  const Yep64u YepX86IsaFeaturePclmulqdq = 0x0000000020000000ull;
717  const Yep64u YepX86IsaFeatureRdtscp = 0x0000000040000000ull;
718  const Yep64u YepX86IsaFeatureLWP = 0x0000000080000000ull;
719  const Yep64u YepX86IsaFeatureHLE = 0x0000000100000000ull;
720  const Yep64u YepX86IsaFeatureRTM = 0x0000000200000000ull;
721  const Yep64u YepX86IsaFeatureXtest = 0x0000000400000000ull;
722  const Yep64u YepX86IsaFeatureRdseed = 0x0000000800000000ull;
723  const Yep64u YepX86IsaFeatureADX = 0x0000001000000000ull;
724 #else
725 
731  #define YepX86IsaFeatureFPU 0x0000000000000001ull
732 
734  #define YepX86IsaFeatureCpuid 0x0000000000000002ull
735 
737  #define YepX86IsaFeatureRdtsc 0x0000000000000004ull
738 
740  #define YepX86IsaFeatureCMOV 0x0000000000000008ull
741 
743  #define YepX86IsaFeatureSYSENTER 0x0000000000000010ull
744 
746  #define YepX86IsaFeatureSYSCALL 0x0000000000000020ull
747 
749  #define YepX86IsaFeatureMSR 0x0000000000000040ull
750 
752  #define YepX86IsaFeatureClflush 0x0000000000000080ull
753 
755  #define YepX86IsaFeatureMONITOR 0x0000000000000100ull
756 
758  #define YepX86IsaFeatureFXSAVE 0x0000000000000200ull
759 
761  #define YepX86IsaFeatureXSAVE 0x0000000000000400ull
762 
764  #define YepX86IsaFeatureCmpxchg8b 0x0000000000000800ull
765 
767  #define YepX86IsaFeatureCmpxchg16b 0x0000000000001000ull
768 
770  #define YepX86IsaFeatureX64 0x0000000000002000ull
771 
773  #define YepX86IsaFeatureLahfSahf64 0x0000000000004000ull
774 
776  #define YepX86IsaFeatureFsGsBase 0x0000000000008000ull
777 
779  #define YepX86IsaFeatureMovbe 0x0000000000010000ull
780 
782  #define YepX86IsaFeaturePopcnt 0x0000000000020000ull
783 
785  #define YepX86IsaFeatureLzcnt 0x0000000000040000ull
786 
788  #define YepX86IsaFeatureBMI 0x0000000000080000ull
789 
791  #define YepX86IsaFeatureBMI2 0x0000000000100000ull
792 
794  #define YepX86IsaFeatureTBM 0x0000000000200000ull
795 
797  #define YepX86IsaFeatureRdrand 0x0000000000400000ull
798 
800  #define YepX86IsaFeatureACE 0x0000000000800000ull
801 
803  #define YepX86IsaFeatureACE2 0x0000000001000000ull
804 
806  #define YepX86IsaFeatureRNG 0x0000000002000000ull
807 
809  #define YepX86IsaFeaturePHE 0x0000000004000000ull
810 
812  #define YepX86IsaFeaturePMM 0x0000000008000000ull
813 
815  #define YepX86IsaFeatureAES 0x0000000010000000ull
816 
818  #define YepX86IsaFeaturePclmulqdq 0x0000000020000000ull
819 
821  #define YepX86IsaFeatureRdtscp 0x0000000040000000ull
822 
824  #define YepX86IsaFeatureLWP 0x0000000080000000ull
825 
827  #define YepX86IsaFeatureHLE 0x0000000100000000ull
828 
830  #define YepX86IsaFeatureRTM 0x0000000200000000ull
831 
833  #define YepX86IsaFeatureXtest 0x0000000400000000ull
834 
836  #define YepX86IsaFeatureRdseed 0x0000000800000000ull
837 
839  #define YepX86IsaFeatureADX 0x0000001000000000ull
840 
841 #endif
842 
843 #ifdef __cplusplus
844  const Yep64u YepX86SimdFeatureMMX = 0x0000000000000001ull;
845  const Yep64u YepX86SimdFeatureMMXPlus = 0x0000000000000002ull;
846  const Yep64u YepX86SimdFeatureEMMX = 0x0000000000000004ull;
847  const Yep64u YepX86SimdFeature3dnow = 0x0000000000000008ull;
848  const Yep64u YepX86SimdFeature3dnowPlus = 0x0000000000000010ull;
849  const Yep64u YepX86SimdFeature3dnowPrefetch = 0x0000000000000020ull;
850  const Yep64u YepX86SimdFeature3dnowGeode = 0x0000000000000040ull;
851  const Yep64u YepX86SimdFeatureSSE = 0x0000000000000080ull;
852  const Yep64u YepX86SimdFeatureSSE2 = 0x0000000000000100ull;
853  const Yep64u YepX86SimdFeatureSSE3 = 0x0000000000000200ull;
854  const Yep64u YepX86SimdFeatureSSSE3 = 0x0000000000000400ull;
855  const Yep64u YepX86SimdFeatureSSE4_1 = 0x0000000000000800ull;
856  const Yep64u YepX86SimdFeatureSSE4_2 = 0x0000000000001000ull;
857  const Yep64u YepX86SimdFeatureSSE4A = 0x0000000000002000ull;
858  const Yep64u YepX86SimdFeatureAVX = 0x0000000000004000ull;
859  const Yep64u YepX86SimdFeatureAVX2 = 0x0000000000008000ull;
860  const Yep64u YepX86SimdFeatureXOP = 0x0000000000010000ull;
861  const Yep64u YepX86SimdFeatureF16C = 0x0000000000020000ull;
862  const Yep64u YepX86SimdFeatureFMA3 = 0x0000000000040000ull;
863  const Yep64u YepX86SimdFeatureFMA4 = 0x0000000000080000ull;
864  const Yep64u YepX86SimdFeatureKNF = 0x0000000000100000ull;
865  const Yep64u YepX86SimdFeatureKNC = 0x0000000000200000ull;
866 #else
867 
874  #define YepX86SimdFeatureMMX 0x0000000000000001ull
875 
878  #define YepX86SimdFeatureMMXPlus 0x0000000000000002ull
879 
881  #define YepX86SimdFeatureEMMX 0x0000000000000004ull
882 
885  #define YepX86SimdFeature3dnow 0x0000000000000008ull
886 
889  #define YepX86SimdFeature3dnowPlus 0x0000000000000010ull
890 
892  #define YepX86SimdFeature3dnowPrefetch 0x0000000000000020ull
893 
895  #define YepX86SimdFeature3dnowGeode 0x0000000000000040ull
896 
899  #define YepX86SimdFeatureSSE 0x0000000000000080ull
900 
903  #define YepX86SimdFeatureSSE2 0x0000000000000100ull
904 
907  #define YepX86SimdFeatureSSE3 0x0000000000000200ull
908 
911  #define YepX86SimdFeatureSSSE3 0x0000000000000400ull
912 
915  #define YepX86SimdFeatureSSE4_1 0x0000000000000800ull
916 
919  #define YepX86SimdFeatureSSE4_2 0x0000000000001000ull
920 
923  #define YepX86SimdFeatureSSE4A 0x0000000000002000ull
924 
927  #define YepX86SimdFeatureAVX 0x0000000000004000ull
928 
931  #define YepX86SimdFeatureAVX2 0x0000000000008000ull
932 
935  #define YepX86SimdFeatureXOP 0x0000000000010000ull
936 
939  #define YepX86SimdFeatureF16C 0x0000000000020000ull
940 
943  #define YepX86SimdFeatureFMA3 0x0000000000040000ull
944 
947  #define YepX86SimdFeatureFMA4 0x0000000000080000ull
948 
950  #define YepX86SimdFeatureKNF 0x0000000000100000ull
951 
954  #define YepX86SimdFeatureKNC 0x0000000000200000ull
955 
956 #endif
957 
958 #ifdef __cplusplus
959  const Yep64u YepX86SystemFeatureFPU = 0x0000000100000000ull;
960  const Yep64u YepX86SystemFeatureSSE = 0x0000000200000000ull;
961  const Yep64u YepX86SystemFeatureAVX = 0x0000000400000000ull;
962  const Yep64u YepX86SystemFeatureMisalignedSSE = 0x0000000800000000ull;
963  const Yep64u YepX86SystemFeatureACE = 0x0000001000000000ull;
964  const Yep64u YepX86SystemFeatureACE2 = 0x0000002000000000ull;
965  const Yep64u YepX86SystemFeatureRNG = 0x0000004000000000ull;
966  const Yep64u YepX86SystemFeaturePHE = 0x0000008000000000ull;
967  const Yep64u YepX86SystemFeaturePMM = 0x0000010000000000ull;
968  const Yep64u YepX86SystemFeatureMIC = 0x0000020000000000ull;
969 #else
970 
976  #define YepX86SystemFeatureFPU 0x0000000100000000ull
977 
979  #define YepX86SystemFeatureSSE 0x0000000200000000ull
980 
982  #define YepX86SystemFeatureAVX 0x0000000400000000ull
983 
985  #define YepX86SystemFeatureMisalignedSSE 0x0000000800000000ull
986 
988  #define YepX86SystemFeatureACE 0x0000001000000000ull
989 
991  #define YepX86SystemFeatureACE2 0x0000002000000000ull
992 
994  #define YepX86SystemFeatureRNG 0x0000004000000000ull
995 
997  #define YepX86SystemFeaturePHE 0x0000008000000000ull
998 
1000  #define YepX86SystemFeaturePMM 0x0000010000000000ull
1001 
1003  #define YepX86SystemFeatureMIC 0x0000020000000000ull
1004 
1005 #endif
1006 
1007 #ifdef __cplusplus
1008  const Yep64u YepIA64IsaFeatureBrl = 0x0000000000000001ull;
1009  const Yep64u YepIA64IsaFeatureAtomic128 = 0x0000000000000002ull;
1010  const Yep64u YepIA64IsaFeatureClz = 0x0000000000000004ull;
1011  const Yep64u YepIA64IsaFeatureMpy4 = 0x0000000000000008ull;
1012 #else
1013 
1019  #define YepIA64IsaFeatureBrl 0x0000000000000001ull
1020 
1022  #define YepIA64IsaFeatureAtomic128 0x0000000000000002ull
1023 
1025  #define YepIA64IsaFeatureClz 0x0000000000000004ull
1026 
1028  #define YepIA64IsaFeatureMpy4 0x0000000000000008ull
1029 
1030 #endif
1031 
1032 #ifdef __cplusplus
1033  const Yep64u YepARMIsaFeatureV4 = 0x0000000000000001ull;
1034  const Yep64u YepARMIsaFeatureV5 = 0x0000000000000002ull;
1035  const Yep64u YepARMIsaFeatureV5E = 0x0000000000000004ull;
1036  const Yep64u YepARMIsaFeatureV6 = 0x0000000000000008ull;
1037  const Yep64u YepARMIsaFeatureV6K = 0x0000000000000010ull;
1038  const Yep64u YepARMIsaFeatureV7 = 0x0000000000000020ull;
1039  const Yep64u YepARMIsaFeatureV7MP = 0x0000000000000040ull;
1040  const Yep64u YepARMIsaFeatureThumb = 0x0000000000000080ull;
1041  const Yep64u YepARMIsaFeatureThumb2 = 0x0000000000000100ull;
1042  const Yep64u YepARMIsaFeatureThumbEE = 0x0000000000000200ull;
1043  const Yep64u YepARMIsaFeatureJazelle = 0x0000000000000400ull;
1044  const Yep64u YepARMIsaFeatureFPA = 0x0000000000000800ull;
1045  const Yep64u YepARMIsaFeatureVFP = 0x0000000000001000ull;
1046  const Yep64u YepARMIsaFeatureVFP2 = 0x0000000000002000ull;
1047  const Yep64u YepARMIsaFeatureVFP3 = 0x0000000000004000ull;
1048  const Yep64u YepARMIsaFeatureVFPd32 = 0x0000000000008000ull;
1049  const Yep64u YepARMIsaFeatureVFP3HP = 0x0000000000010000ull;
1050  const Yep64u YepARMIsaFeatureVFP4 = 0x0000000000020000ull;
1051  const Yep64u YepARMIsaFeatureDiv = 0x0000000000040000ull;
1052  const Yep64u YepARMIsaFeatureArmada = 0x0000000000080000ull;
1053 #else
1054 
1060  #define YepARMIsaFeatureV4 0x0000000000000001ull
1061 
1063  #define YepARMIsaFeatureV5 0x0000000000000002ull
1064 
1066  #define YepARMIsaFeatureV5E 0x0000000000000004ull
1067 
1069  #define YepARMIsaFeatureV6 0x0000000000000008ull
1070 
1072  #define YepARMIsaFeatureV6K 0x0000000000000010ull
1073 
1075  #define YepARMIsaFeatureV7 0x0000000000000020ull
1076 
1078  #define YepARMIsaFeatureV7MP 0x0000000000000040ull
1079 
1081  #define YepARMIsaFeatureThumb 0x0000000000000080ull
1082 
1084  #define YepARMIsaFeatureThumb2 0x0000000000000100ull
1085 
1087  #define YepARMIsaFeatureThumbEE 0x0000000000000200ull
1088 
1090  #define YepARMIsaFeatureJazelle 0x0000000000000400ull
1091 
1093  #define YepARMIsaFeatureFPA 0x0000000000000800ull
1094 
1096  #define YepARMIsaFeatureVFP 0x0000000000001000ull
1097 
1099  #define YepARMIsaFeatureVFP2 0x0000000000002000ull
1100 
1102  #define YepARMIsaFeatureVFP3 0x0000000000004000ull
1103 
1105  #define YepARMIsaFeatureVFPd32 0x0000000000008000ull
1106 
1108  #define YepARMIsaFeatureVFP3HP 0x0000000000010000ull
1109 
1111  #define YepARMIsaFeatureVFP4 0x0000000000020000ull
1112 
1114  #define YepARMIsaFeatureDiv 0x0000000000040000ull
1115 
1117  #define YepARMIsaFeatureArmada 0x0000000000080000ull
1118 
1119 #endif
1120 
1121 #ifdef __cplusplus
1122  const Yep64u YepARMSimdFeatureXScale = 0x0000000000000001ull;
1123  const Yep64u YepARMSimdFeatureWMMX = 0x0000000000000002ull;
1124  const Yep64u YepARMSimdFeatureWMMX2 = 0x0000000000000004ull;
1125  const Yep64u YepARMSimdFeatureNEON = 0x0000000000000008ull;
1126  const Yep64u YepARMSimdFeatureNEONHP = 0x0000000000000010ull;
1127  const Yep64u YepARMSimdFeatureNEON2 = 0x0000000000000020ull;
1128 #else
1129 
1135  #define YepARMSimdFeatureXScale 0x0000000000000001ull
1136 
1138  #define YepARMSimdFeatureWMMX 0x0000000000000002ull
1139 
1141  #define YepARMSimdFeatureWMMX2 0x0000000000000004ull
1142 
1144  #define YepARMSimdFeatureNEON 0x0000000000000008ull
1145 
1147  #define YepARMSimdFeatureNEONHP 0x0000000000000010ull
1148 
1150  #define YepARMSimdFeatureNEON2 0x0000000000000020ull
1151 
1152 #endif
1153 
1154 #ifdef __cplusplus
1155  const Yep64u YepARMSystemFeatureVFPVectorMode = 0x0000000100000000ull;
1156 #else
1157 
1163  #define YepARMSystemFeatureVFPVectorMode 0x0000000100000000ull
1164 
1165 #endif
1166 
1167 #ifdef __cplusplus
1168  const Yep64u YepMIPSIsaFeatureR2 = 0x0000000000000001ull;
1169  const Yep64u YepMIPSIsaFeatureMicroMIPS = 0x0000000000000002ull;
1170  const Yep64u YepMIPSIsaFeatureFPU = 0x0000000000000004ull;
1171  const Yep64u YepMIPSIsaFeatureMT = 0x0000000000000008ull;
1172  const Yep64u YepMIPSIsaFeatureMIPS16 = 0x0000000000000010ull;
1173  const Yep64u YepMIPSIsaFeatureSmartMIPS = 0x0000000000000020ull;
1174 #else
1175 
1181  #define YepMIPSIsaFeatureR2 0x0000000000000001ull
1182 
1185  #define YepMIPSIsaFeatureMicroMIPS 0x0000000000000002ull
1186 
1188  #define YepMIPSIsaFeatureFPU 0x0000000000000004ull
1189 
1191  #define YepMIPSIsaFeatureMT 0x0000000000000008ull
1192 
1194  #define YepMIPSIsaFeatureMIPS16 0x0000000000000010ull
1195 
1197  #define YepMIPSIsaFeatureSmartMIPS 0x0000000000000020ull
1198 
1199 #endif
1200 
1201 #ifdef __cplusplus
1202  const Yep64u YepMIPSSimdFeatureMDMX = 0x0000000000000001ull;
1203  const Yep64u YepMIPSSimdFeatureMIPS3D = 0x0000000000000002ull;
1204  const Yep64u YepMIPSSimdFeaturePairedSingle = 0x0000000000000004ull;
1205  const Yep64u YepMIPSSimdFeatureDSP = 0x0000000000000008ull;
1206  const Yep64u YepMIPSSimdFeatureDSP2 = 0x0000000000000010ull;
1207  const Yep64u YepMIPSSimdFeatureGodsonMMX = 0x0000000000000020ull;
1208  const Yep64u YepMIPSSimdFeatureIMX = 0x0000000000000040ull;
1209 #else
1210 
1216  #define YepMIPSSimdFeatureMDMX 0x0000000000000001ull
1217 
1219  #define YepMIPSSimdFeatureMIPS3D 0x0000000000000002ull
1220 
1222  #define YepMIPSSimdFeaturePairedSingle 0x0000000000000004ull
1223 
1225  #define YepMIPSSimdFeatureDSP 0x0000000000000008ull
1226 
1228  #define YepMIPSSimdFeatureDSP2 0x0000000000000010ull
1229 
1232  #define YepMIPSSimdFeatureGodsonMMX 0x0000000000000020ull
1233 
1235  #define YepMIPSSimdFeatureIMX 0x0000000000000040ull
1236 
1237 #endif
1238 
1239 #ifdef __cplusplus
1240 }
1241 #endif