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 
56  YEP_PUBLIC_SYMBOL enum YepStatus YEPABI yepLibrary_Init();
64  YEP_PUBLIC_SYMBOL enum YepStatus YEPABI yepLibrary_Release();
80  const char* releaseName;
81  };
88  YEP_PUBLIC_SYMBOL const struct YepLibraryVersion *YEPABI yepLibrary_GetVersion();
89 
104  YEP_PUBLIC_SYMBOL enum YepStatus YEPABI yepLibrary_GetCpuIsaFeatures(Yep64u *isaFeatures);
114  YEP_PUBLIC_SYMBOL enum YepStatus YEPABI yepLibrary_GetCpuSimdFeatures(Yep64u *simdFeatures);
125  YEP_PUBLIC_SYMBOL enum YepStatus YEPABI yepLibrary_GetCpuSystemFeatures(Yep64u *systemFeatures);
126 
142 
143  /* x86/x86-64 CPUs */
144 
183 
184  /* ARM CPUs */
185 
199 
200  /* MIPS CPUs */
201 
208 
209  /* PowerPC CPUs */
210 
218 
219  /* SPARC CPUs */
220 
230  };
238  YEP_PUBLIC_SYMBOL enum YepStatus YEPABI yepLibrary_GetCpuVendor(enum YepCpuVendor *vendor);
265  };
273  YEP_PUBLIC_SYMBOL enum YepStatus YEPABI yepLibrary_GetCpuArchitecture(enum YepCpuArchitecture *architecture);
288 
319 
324 
347 
352 
369 
374 
379 
382 
387 
394 
399  };
407  YEP_PUBLIC_SYMBOL enum YepStatus YEPABI yepLibrary_GetCpuMicroarchitecture(enum YepCpuMicroarchitecture *microarchitecture);
410  YEP_PUBLIC_SYMBOL enum YepStatus YEPABI yepLibrary_GetCpuDataCacheSize(Yep32u level, Yep32u *cacheSize);
411  YEP_PUBLIC_SYMBOL enum YepStatus YEPABI yepLibrary_GetCpuInstructionCacheSize(Yep32u level, Yep32u *cacheSize);
412  YEP_PUBLIC_SYMBOL enum YepStatus YEPABI yepLibrary_GetLogicalCoresCount(Yep32u *logicalCoresCount);
413 
441  YEP_PUBLIC_SYMBOL enum YepStatus YEPABI yepLibrary_GetCpuCyclesAcquire(Yep64u *state);
458  YEP_PUBLIC_SYMBOL enum YepStatus YEPABI yepLibrary_GetCpuCyclesRelease(Yep64u *state, Yep64u *cycles);
459 
471  Yep64u state[6];
472  };
509  };
526  YEP_PUBLIC_SYMBOL enum YepStatus YEPABI yepLibrary_GetEnergyCounterAcquire(enum YepEnergyCounterType type, struct YepEnergyCounter *state);
544  YEP_PUBLIC_SYMBOL enum YepStatus YEPABI yepLibrary_GetEnergyCounterRelease(struct YepEnergyCounter *state, Yep64f *measurement);
545 
560  YEP_PUBLIC_SYMBOL enum YepStatus YEPABI yepLibrary_GetTimerTicks(Yep64u *ticks);
569  YEP_PUBLIC_SYMBOL enum YepStatus YEPABI yepLibrary_GetTimerFrequency(Yep64u *frequency);
578  YEP_PUBLIC_SYMBOL enum YepStatus YEPABI yepLibrary_GetTimerAccuracy(Yep64u *accuracy);
579 
587  #define YEP_ENUMERATION_ISA_FEATURE_FOR_ARCHITECTURE(architecture) (256 + (architecture))
588 
591  #define YEP_ENUMERATION_SIMD_FEATURE_FOR_ARCHITECTURE(architecture) (512 + (architecture))
592 
595  #define YEP_ENUMERATION_SYSTEM_FEATURE_FOR_ARCHITECTURE(architecture) (768 + (architecture))
596 
654  };
663  };
725  YEP_PUBLIC_SYMBOL enum YepStatus YEPABI yepLibrary_GetString(enum YepEnumeration enumerationType, Yep32u enumerationValue, enum YepStringType stringType, void *buffer, YepSize *length);
726 
727 #ifdef __cplusplus
728  const Yep64u YepIsaFeaturesDefault = 0x0000000000000000ull;
729  const Yep64u YepSimdFeaturesDefault = 0x0000000000000000ull;
730  const Yep64u YepSystemFeaturesDefault = 0x0000000000000000ull;
731 #else
732  #define YepIsaFeaturesDefault 0x0000000000000000ull
733  #define YepSimdFeaturesDefault 0x0000000000000000ull
734  #define YepSystemFeaturesDefault 0x0000000000000000ull
735 #endif
736 
737 #ifdef __cplusplus
738  const Yep64u YepSystemFeatureCycleCounter = 0x0000000000000001ull;
739  const Yep64u YepSystemFeatureCycleCounter64Bit = 0x0000000000000002ull;
740  const Yep64u YepSystemFeatureAddressSpace64Bit = 0x0000000000000004ull;
741  const Yep64u YepSystemFeatureGPRegisters64Bit = 0x0000000000000008ull;
742  const Yep64u YepSystemFeatureMisalignedAccess = 0x0000000000000010ull;
743  const Yep64u YepSystemFeatureSingleThreaded = 0x0000000000000020ull;
744 #else
745 
751  #define YepSystemFeatureCycleCounter 0x0000000000000001ull
752 
754  #define YepSystemFeatureCycleCounter64Bit 0x0000000000000002ull
755 
757  #define YepSystemFeatureAddressSpace64Bit 0x0000000000000004ull
758 
760  #define YepSystemFeatureGPRegisters64Bit 0x0000000000000008ull
761 
763  #define YepSystemFeatureMisalignedAccess 0x0000000000000010ull
764 
766  #define YepSystemFeatureSingleThreaded 0x0000000000000020ull
767 
768 #endif
769 
770 #ifdef __cplusplus
771  const Yep64u YepX86IsaFeatureFPU = 0x0000000000000001ull;
772  const Yep64u YepX86IsaFeatureCpuid = 0x0000000000000002ull;
773  const Yep64u YepX86IsaFeatureRdtsc = 0x0000000000000004ull;
774  const Yep64u YepX86IsaFeatureCMOV = 0x0000000000000008ull;
775  const Yep64u YepX86IsaFeatureSYSENTER = 0x0000000000000010ull;
776  const Yep64u YepX86IsaFeatureSYSCALL = 0x0000000000000020ull;
777  const Yep64u YepX86IsaFeatureMSR = 0x0000000000000040ull;
778  const Yep64u YepX86IsaFeatureClflush = 0x0000000000000080ull;
779  const Yep64u YepX86IsaFeatureMONITOR = 0x0000000000000100ull;
780  const Yep64u YepX86IsaFeatureFXSAVE = 0x0000000000000200ull;
781  const Yep64u YepX86IsaFeatureXSAVE = 0x0000000000000400ull;
782  const Yep64u YepX86IsaFeatureCmpxchg8b = 0x0000000000000800ull;
783  const Yep64u YepX86IsaFeatureCmpxchg16b = 0x0000000000001000ull;
784  const Yep64u YepX86IsaFeatureX64 = 0x0000000000002000ull;
785  const Yep64u YepX86IsaFeatureLahfSahf64 = 0x0000000000004000ull;
786  const Yep64u YepX86IsaFeatureFsGsBase = 0x0000000000008000ull;
787  const Yep64u YepX86IsaFeatureMovbe = 0x0000000000010000ull;
788  const Yep64u YepX86IsaFeaturePopcnt = 0x0000000000020000ull;
789  const Yep64u YepX86IsaFeatureLzcnt = 0x0000000000040000ull;
790  const Yep64u YepX86IsaFeatureBMI = 0x0000000000080000ull;
791  const Yep64u YepX86IsaFeatureBMI2 = 0x0000000000100000ull;
792  const Yep64u YepX86IsaFeatureTBM = 0x0000000000200000ull;
793  const Yep64u YepX86IsaFeatureRdrand = 0x0000000000400000ull;
794  const Yep64u YepX86IsaFeatureACE = 0x0000000000800000ull;
795  const Yep64u YepX86IsaFeatureACE2 = 0x0000000001000000ull;
796  const Yep64u YepX86IsaFeatureRNG = 0x0000000002000000ull;
797  const Yep64u YepX86IsaFeaturePHE = 0x0000000004000000ull;
798  const Yep64u YepX86IsaFeaturePMM = 0x0000000008000000ull;
799  const Yep64u YepX86IsaFeatureAES = 0x0000000010000000ull;
800  const Yep64u YepX86IsaFeaturePclmulqdq = 0x0000000020000000ull;
801  const Yep64u YepX86IsaFeatureRdtscp = 0x0000000040000000ull;
802  const Yep64u YepX86IsaFeatureLWP = 0x0000000080000000ull;
803  const Yep64u YepX86IsaFeatureHLE = 0x0000000100000000ull;
804  const Yep64u YepX86IsaFeatureRTM = 0x0000000200000000ull;
805  const Yep64u YepX86IsaFeatureXtest = 0x0000000400000000ull;
806  const Yep64u YepX86IsaFeatureRdseed = 0x0000000800000000ull;
807  const Yep64u YepX86IsaFeatureADX = 0x0000001000000000ull;
808  const Yep64u YepX86IsaFeatureSHA = 0x0000002000000000ull;
809  const Yep64u YepX86IsaFeatureMPX = 0x0000004000000000ull;
810 #else
811 
817  #define YepX86IsaFeatureFPU 0x0000000000000001ull
818 
820  #define YepX86IsaFeatureCpuid 0x0000000000000002ull
821 
823  #define YepX86IsaFeatureRdtsc 0x0000000000000004ull
824 
826  #define YepX86IsaFeatureCMOV 0x0000000000000008ull
827 
829  #define YepX86IsaFeatureSYSENTER 0x0000000000000010ull
830 
832  #define YepX86IsaFeatureSYSCALL 0x0000000000000020ull
833 
835  #define YepX86IsaFeatureMSR 0x0000000000000040ull
836 
838  #define YepX86IsaFeatureClflush 0x0000000000000080ull
839 
841  #define YepX86IsaFeatureMONITOR 0x0000000000000100ull
842 
844  #define YepX86IsaFeatureFXSAVE 0x0000000000000200ull
845 
847  #define YepX86IsaFeatureXSAVE 0x0000000000000400ull
848 
850  #define YepX86IsaFeatureCmpxchg8b 0x0000000000000800ull
851 
853  #define YepX86IsaFeatureCmpxchg16b 0x0000000000001000ull
854 
856  #define YepX86IsaFeatureX64 0x0000000000002000ull
857 
859  #define YepX86IsaFeatureLahfSahf64 0x0000000000004000ull
860 
862  #define YepX86IsaFeatureFsGsBase 0x0000000000008000ull
863 
865  #define YepX86IsaFeatureMovbe 0x0000000000010000ull
866 
868  #define YepX86IsaFeaturePopcnt 0x0000000000020000ull
869 
871  #define YepX86IsaFeatureLzcnt 0x0000000000040000ull
872 
874  #define YepX86IsaFeatureBMI 0x0000000000080000ull
875 
877  #define YepX86IsaFeatureBMI2 0x0000000000100000ull
878 
880  #define YepX86IsaFeatureTBM 0x0000000000200000ull
881 
883  #define YepX86IsaFeatureRdrand 0x0000000000400000ull
884 
886  #define YepX86IsaFeatureACE 0x0000000000800000ull
887 
889  #define YepX86IsaFeatureACE2 0x0000000001000000ull
890 
892  #define YepX86IsaFeatureRNG 0x0000000002000000ull
893 
895  #define YepX86IsaFeaturePHE 0x0000000004000000ull
896 
898  #define YepX86IsaFeaturePMM 0x0000000008000000ull
899 
901  #define YepX86IsaFeatureAES 0x0000000010000000ull
902 
904  #define YepX86IsaFeaturePclmulqdq 0x0000000020000000ull
905 
907  #define YepX86IsaFeatureRdtscp 0x0000000040000000ull
908 
910  #define YepX86IsaFeatureLWP 0x0000000080000000ull
911 
913  #define YepX86IsaFeatureHLE 0x0000000100000000ull
914 
916  #define YepX86IsaFeatureRTM 0x0000000200000000ull
917 
919  #define YepX86IsaFeatureXtest 0x0000000400000000ull
920 
922  #define YepX86IsaFeatureRdseed 0x0000000800000000ull
923 
925  #define YepX86IsaFeatureADX 0x0000001000000000ull
926 
928  #define YepX86IsaFeatureSHA 0x0000002000000000ull
929 
931  #define YepX86IsaFeatureMPX 0x0000004000000000ull
932 
933 #endif
934 
935 #ifdef __cplusplus
936  const Yep64u YepX86SimdFeatureMMX = 0x0000000000000001ull;
937  const Yep64u YepX86SimdFeatureMMXPlus = 0x0000000000000002ull;
938  const Yep64u YepX86SimdFeatureEMMX = 0x0000000000000004ull;
939  const Yep64u YepX86SimdFeature3dnow = 0x0000000000000008ull;
940  const Yep64u YepX86SimdFeature3dnowPlus = 0x0000000000000010ull;
941  const Yep64u YepX86SimdFeature3dnowPrefetch = 0x0000000000000020ull;
942  const Yep64u YepX86SimdFeature3dnowGeode = 0x0000000000000040ull;
943  const Yep64u YepX86SimdFeatureSSE = 0x0000000000000080ull;
944  const Yep64u YepX86SimdFeatureSSE2 = 0x0000000000000100ull;
945  const Yep64u YepX86SimdFeatureSSE3 = 0x0000000000000200ull;
946  const Yep64u YepX86SimdFeatureSSSE3 = 0x0000000000000400ull;
947  const Yep64u YepX86SimdFeatureSSE4_1 = 0x0000000000000800ull;
948  const Yep64u YepX86SimdFeatureSSE4_2 = 0x0000000000001000ull;
949  const Yep64u YepX86SimdFeatureSSE4A = 0x0000000000002000ull;
950  const Yep64u YepX86SimdFeatureAVX = 0x0000000000004000ull;
951  const Yep64u YepX86SimdFeatureAVX2 = 0x0000000000008000ull;
952  const Yep64u YepX86SimdFeatureXOP = 0x0000000000010000ull;
953  const Yep64u YepX86SimdFeatureF16C = 0x0000000000020000ull;
954  const Yep64u YepX86SimdFeatureFMA3 = 0x0000000000040000ull;
955  const Yep64u YepX86SimdFeatureFMA4 = 0x0000000000080000ull;
956  const Yep64u YepX86SimdFeatureKNF = 0x0000000000100000ull;
957  const Yep64u YepX86SimdFeatureKNC = 0x0000000000200000ull;
958  const Yep64u YepX86SimdFeatureAVX512F = 0x0000000000400000ull;
959  const Yep64u YepX86SimdFeatureAVX512CD = 0x0000000000800000ull;
960  const Yep64u YepX86SimdFeatureAVX512ER = 0x0000000001000000ull;
961  const Yep64u YepX86SimdFeatureAVX512PF = 0x0000000002000000ull;
962 #else
963 
970  #define YepX86SimdFeatureMMX 0x0000000000000001ull
971 
974  #define YepX86SimdFeatureMMXPlus 0x0000000000000002ull
975 
977  #define YepX86SimdFeatureEMMX 0x0000000000000004ull
978 
981  #define YepX86SimdFeature3dnow 0x0000000000000008ull
982 
985  #define YepX86SimdFeature3dnowPlus 0x0000000000000010ull
986 
988  #define YepX86SimdFeature3dnowPrefetch 0x0000000000000020ull
989 
991  #define YepX86SimdFeature3dnowGeode 0x0000000000000040ull
992 
995  #define YepX86SimdFeatureSSE 0x0000000000000080ull
996 
999  #define YepX86SimdFeatureSSE2 0x0000000000000100ull
1000 
1003  #define YepX86SimdFeatureSSE3 0x0000000000000200ull
1004 
1007  #define YepX86SimdFeatureSSSE3 0x0000000000000400ull
1008 
1011  #define YepX86SimdFeatureSSE4_1 0x0000000000000800ull
1012 
1015  #define YepX86SimdFeatureSSE4_2 0x0000000000001000ull
1016 
1019  #define YepX86SimdFeatureSSE4A 0x0000000000002000ull
1020 
1023  #define YepX86SimdFeatureAVX 0x0000000000004000ull
1024 
1027  #define YepX86SimdFeatureAVX2 0x0000000000008000ull
1028 
1031  #define YepX86SimdFeatureXOP 0x0000000000010000ull
1032 
1035  #define YepX86SimdFeatureF16C 0x0000000000020000ull
1036 
1039  #define YepX86SimdFeatureFMA3 0x0000000000040000ull
1040 
1043  #define YepX86SimdFeatureFMA4 0x0000000000080000ull
1044 
1046  #define YepX86SimdFeatureKNF 0x0000000000100000ull
1047 
1050  #define YepX86SimdFeatureKNC 0x0000000000200000ull
1051 
1053  #define YepX86SimdFeatureAVX512F 0x0000000000400000ull
1054 
1056  #define YepX86SimdFeatureAVX512CD 0x0000000000800000ull
1057 
1059  #define YepX86SimdFeatureAVX512ER 0x0000000001000000ull
1060 
1062  #define YepX86SimdFeatureAVX512PF 0x0000000002000000ull
1063 
1064 #endif
1065 
1066 #ifdef __cplusplus
1067  const Yep64u YepX86SystemFeatureACE = 0x0000000100000000ull;
1068  const Yep64u YepX86SystemFeatureACE2 = 0x0000000200000000ull;
1069  const Yep64u YepX86SystemFeatureRNG = 0x0000000400000000ull;
1070  const Yep64u YepX86SystemFeaturePHE = 0x0000000800000000ull;
1071  const Yep64u YepX86SystemFeaturePMM = 0x0000001000000000ull;
1072  const Yep64u YepX86SystemFeatureMisalignedSSE = 0x0000002000000000ull;
1073  const Yep64u YepX86SystemFeatureFPU = 0x0010000000000000ull;
1074  const Yep64u YepX86SystemFeatureXMM = 0x0020000000000000ull;
1075  const Yep64u YepX86SystemFeatureYMM = 0x0040000000000000ull;
1076  const Yep64u YepX86SystemFeatureZMM = 0x0080000000000000ull;
1077  const Yep64u YepX86SystemFeatureBND = 0x0100000000000000ull;
1078 #else
1079 
1085  #define YepX86SystemFeatureACE 0x0000000100000000ull
1086 
1088  #define YepX86SystemFeatureACE2 0x0000000200000000ull
1089 
1091  #define YepX86SystemFeatureRNG 0x0000000400000000ull
1092 
1094  #define YepX86SystemFeaturePHE 0x0000000800000000ull
1095 
1097  #define YepX86SystemFeaturePMM 0x0000001000000000ull
1098 
1100  #define YepX86SystemFeatureMisalignedSSE 0x0000002000000000ull
1101 
1103  #define YepX86SystemFeatureFPU 0x0010000000000000ull
1104 
1106  #define YepX86SystemFeatureSSE 0x0020000000000000ull
1107 
1109  #define YepX86SystemFeatureAVX 0x0040000000000000ull
1110 
1112  #define YepX86SystemFeatureZMM 0x0080000000000000ull
1113 
1115  #define YepX86SystemFeatureBND 0x0100000000000000ull
1116 
1117 #endif
1118 
1119 #ifdef __cplusplus
1120  const Yep64u YepIA64IsaFeatureBrl = 0x0000000000000001ull;
1121  const Yep64u YepIA64IsaFeatureAtomic128 = 0x0000000000000002ull;
1122  const Yep64u YepIA64IsaFeatureClz = 0x0000000000000004ull;
1123  const Yep64u YepIA64IsaFeatureMpy4 = 0x0000000000000008ull;
1124 #else
1125 
1131  #define YepIA64IsaFeatureBrl 0x0000000000000001ull
1132 
1134  #define YepIA64IsaFeatureAtomic128 0x0000000000000002ull
1135 
1137  #define YepIA64IsaFeatureClz 0x0000000000000004ull
1138 
1140  #define YepIA64IsaFeatureMpy4 0x0000000000000008ull
1141 
1142 #endif
1143 
1144 #ifdef __cplusplus
1145  const Yep64u YepARMIsaFeatureV4 = 0x0000000000000001ull;
1146  const Yep64u YepARMIsaFeatureV5 = 0x0000000000000002ull;
1147  const Yep64u YepARMIsaFeatureV5E = 0x0000000000000004ull;
1148  const Yep64u YepARMIsaFeatureV6 = 0x0000000000000008ull;
1149  const Yep64u YepARMIsaFeatureV6K = 0x0000000000000010ull;
1150  const Yep64u YepARMIsaFeatureV7 = 0x0000000000000020ull;
1151  const Yep64u YepARMIsaFeatureV7MP = 0x0000000000000040ull;
1152  const Yep64u YepARMIsaFeatureThumb = 0x0000000000000080ull;
1153  const Yep64u YepARMIsaFeatureThumb2 = 0x0000000000000100ull;
1154  const Yep64u YepARMIsaFeatureThumbEE = 0x0000000000000200ull;
1155  const Yep64u YepARMIsaFeatureJazelle = 0x0000000000000400ull;
1156  const Yep64u YepARMIsaFeatureFPA = 0x0000000000000800ull;
1157  const Yep64u YepARMIsaFeatureVFP = 0x0000000000001000ull;
1158  const Yep64u YepARMIsaFeatureVFP2 = 0x0000000000002000ull;
1159  const Yep64u YepARMIsaFeatureVFP3 = 0x0000000000004000ull;
1160  const Yep64u YepARMIsaFeatureVFPd32 = 0x0000000000008000ull;
1161  const Yep64u YepARMIsaFeatureVFP3HP = 0x0000000000010000ull;
1162  const Yep64u YepARMIsaFeatureVFP4 = 0x0000000000020000ull;
1163  const Yep64u YepARMIsaFeatureDiv = 0x0000000000040000ull;
1164  const Yep64u YepARMIsaFeatureArmada = 0x0000000000080000ull;
1165 #else
1166 
1172  #define YepARMIsaFeatureV4 0x0000000000000001ull
1173 
1175  #define YepARMIsaFeatureV5 0x0000000000000002ull
1176 
1178  #define YepARMIsaFeatureV5E 0x0000000000000004ull
1179 
1181  #define YepARMIsaFeatureV6 0x0000000000000008ull
1182 
1184  #define YepARMIsaFeatureV6K 0x0000000000000010ull
1185 
1187  #define YepARMIsaFeatureV7 0x0000000000000020ull
1188 
1190  #define YepARMIsaFeatureV7MP 0x0000000000000040ull
1191 
1193  #define YepARMIsaFeatureThumb 0x0000000000000080ull
1194 
1196  #define YepARMIsaFeatureThumb2 0x0000000000000100ull
1197 
1199  #define YepARMIsaFeatureThumbEE 0x0000000000000200ull
1200 
1202  #define YepARMIsaFeatureJazelle 0x0000000000000400ull
1203 
1205  #define YepARMIsaFeatureFPA 0x0000000000000800ull
1206 
1208  #define YepARMIsaFeatureVFP 0x0000000000001000ull
1209 
1211  #define YepARMIsaFeatureVFP2 0x0000000000002000ull
1212 
1214  #define YepARMIsaFeatureVFP3 0x0000000000004000ull
1215 
1217  #define YepARMIsaFeatureVFPd32 0x0000000000008000ull
1218 
1220  #define YepARMIsaFeatureVFP3HP 0x0000000000010000ull
1221 
1223  #define YepARMIsaFeatureVFP4 0x0000000000020000ull
1224 
1226  #define YepARMIsaFeatureDiv 0x0000000000040000ull
1227 
1229  #define YepARMIsaFeatureArmada 0x0000000000080000ull
1230 
1231 #endif
1232 
1233 #ifdef __cplusplus
1234  const Yep64u YepARMSimdFeatureXScale = 0x0000000000000001ull;
1235  const Yep64u YepARMSimdFeatureWMMX = 0x0000000000000002ull;
1236  const Yep64u YepARMSimdFeatureWMMX2 = 0x0000000000000004ull;
1237  const Yep64u YepARMSimdFeatureNEON = 0x0000000000000008ull;
1238  const Yep64u YepARMSimdFeatureNEONHP = 0x0000000000000010ull;
1239  const Yep64u YepARMSimdFeatureNEON2 = 0x0000000000000020ull;
1240 #else
1241 
1247  #define YepARMSimdFeatureXScale 0x0000000000000001ull
1248 
1250  #define YepARMSimdFeatureWMMX 0x0000000000000002ull
1251 
1253  #define YepARMSimdFeatureWMMX2 0x0000000000000004ull
1254 
1256  #define YepARMSimdFeatureNEON 0x0000000000000008ull
1257 
1259  #define YepARMSimdFeatureNEONHP 0x0000000000000010ull
1260 
1262  #define YepARMSimdFeatureNEON2 0x0000000000000020ull
1263 
1264 #endif
1265 
1266 #ifdef __cplusplus
1267  const Yep64u YepARMSystemFeatureVFPVectorMode = 0x0000000100000000ull;
1268  const Yep64u YepARMSystemFeatureFPA = 0x0100000000000000ull;
1269  const Yep64u YepARMSystemFeatureWMMX = 0x0200000000000000ull;
1270  const Yep64u YepARMSystemFeatureS32 = 0x0400000000000000ull;
1271  const Yep64u YepARMSystemFeatureD32 = 0x0800000000000000ull;
1272 #else
1273 
1279  #define YepARMSystemFeatureVFPVectorMode 0x0000000100000000ull
1280 
1282  #define YepARMSystemFeatureFPA 0x0100000000000000ull
1283 
1285  #define YepARMSystemFeatureWMMX 0x0200000000000000ull
1286 
1288  #define YepARMSystemFeatureS32 0x0400000000000000ull
1289 
1291  #define YepARMSystemFeatureD32 0x0800000000000000ull
1292 
1293 #endif
1294 
1295 #ifdef __cplusplus
1296  const Yep64u YepMIPSIsaFeatureMIPS_I = 0x0000000000000001ull;
1297  const Yep64u YepMIPSIsaFeatureMIPS_II = 0x0000000000000002ull;
1298  const Yep64u YepMIPSIsaFeatureMIPS_III = 0x0000000000000004ull;
1299  const Yep64u YepMIPSIsaFeatureMIPS_IV = 0x0000000000000008ull;
1300  const Yep64u YepMIPSIsaFeatureMIPS_V = 0x0000000000000010ull;
1301  const Yep64u YepMIPSIsaFeatureR1 = 0x0000000000000020ull;
1302  const Yep64u YepMIPSIsaFeatureR2 = 0x0000000000000040ull;
1303  const Yep64u YepMIPSIsaFeatureFPU = 0x0000000001000000ull;
1304  const Yep64u YepMIPSIsaFeatureMIPS16 = 0x0000000002000000ull;
1305  const Yep64u YepMIPSIsaFeatureSmartMIPS = 0x0000000004000000ull;
1306  const Yep64u YepMIPSIsaFeatureMT = 0x0000000008000000ull;
1307  const Yep64u YepMIPSIsaFeatureMicroMIPS = 0x0000000010000000ull;
1308  const Yep64u YepMIPSIsaFeatureVZ = 0x0000000020000000ull;
1309 #else
1310 
1316  #define YepMIPSIsaFeatureMIPS_I 0x0000000000000001ull
1317 
1319  #define YepMIPSIsaFeatureMIPS_II 0x0000000000000002ull
1320 
1322  #define YepMIPSIsaFeatureMIPS_III 0x0000000000000004ull
1323 
1325  #define YepMIPSIsaFeatureMIPS_IV 0x0000000000000008ull
1326 
1328  #define YepMIPSIsaFeatureMIPS_V 0x0000000000000010ull
1329 
1331  #define YepMIPSIsaFeatureR1 0x0000000000000020ull
1332 
1334  #define YepMIPSIsaFeatureR2 0x0000000000000040ull
1335 
1337  #define YepMIPSIsaFeatureFPU 0x0000000001000000ull
1338 
1340  #define YepMIPSIsaFeatureMIPS16 0x0000000002000000ull
1341 
1343  #define YepMIPSIsaFeatureSmartMIPS 0x0000000004000000ull
1344 
1346  #define YepMIPSIsaFeatureMT 0x0000000008000000ull
1347 
1349  #define YepMIPSIsaFeatureMicroMIPS 0x0000000010000000ull
1350 
1352  #define YepMIPSIsaFeatureVZ 0x0000000020000000ull
1353 
1354 #endif
1355 
1356 #ifdef __cplusplus
1357  const Yep64u YepMIPSSimdFeatureMDMX = 0x0000000000000001ull;
1358  const Yep64u YepMIPSSimdFeaturePairedSingle = 0x0000000000000002ull;
1359  const Yep64u YepMIPSSimdFeatureMIPS3D = 0x0000000000000004ull;
1360  const Yep64u YepMIPSSimdFeatureDSP = 0x0000000000000008ull;
1361  const Yep64u YepMIPSSimdFeatureDSP2 = 0x0000000000000010ull;
1362  const Yep64u YepMIPSSimdFeatureGodsonMMX = 0x0000000000000020ull;
1363  const Yep64u YepMIPSSimdFeatureMXU = 0x0000000000000040ull;
1364  const Yep64u YepMIPSSimdFeatureMXU2 = 0x0000000000000080ull;
1365 #else
1366 
1372  #define YepMIPSSimdFeatureMDMX 0x0000000000000001ull
1373 
1375  #define YepMIPSSimdFeaturePairedSingle 0x0000000000000002ull
1376 
1378  #define YepMIPSSimdFeatureMIPS3D 0x0000000000000004ull
1379 
1381  #define YepMIPSSimdFeatureDSP 0x0000000000000008ull
1382 
1384  #define YepMIPSSimdFeatureDSP2 0x0000000000000010ull
1385 
1388  #define YepMIPSSimdFeatureGodsonMMX 0x0000000000000020ull
1389 
1391  #define YepMIPSSimdFeatureMXU 0x0000000000000040ull
1392 
1394  #define YepMIPSSimdFeatureMXU2 0x0000000000000080ull
1395 
1396 #endif
1397 
1398 #ifdef __cplusplus
1399 }
1400 #endif