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 
585  #define YEP_ENUMERATION_ISA_FEATURE_FOR_ARCHITECTURE(architecture) (256 + (architecture))
586  #define YEP_ENUMERATION_SIMD_FEATURE_FOR_ARCHITECTURE(architecture) (512 + (architecture))
587  #define YEP_ENUMERATION_SYSTEM_FEATURE_FOR_ARCHITECTURE(architecture) (768 + (architecture))
588 
605  YepEnumerationGenericIsaFeature = YEP_ENUMERATION_ISA_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureUnknown),
607  YepEnumerationGenericSimdFeature = YEP_ENUMERATION_SIMD_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureUnknown),
609  YepEnumerationGenericSystemFeature = YEP_ENUMERATION_SYSTEM_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureUnknown),
611  YepEnumerationX86IsaFeature = YEP_ENUMERATION_ISA_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureX86),
613  YepEnumerationX86SimdFeature = YEP_ENUMERATION_SIMD_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureX86),
615  YepEnumerationX86SystemFeature = YEP_ENUMERATION_SYSTEM_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureX86),
617  YepEnumerationARMIsaFeature = YEP_ENUMERATION_ISA_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureARM),
619  YepEnumerationARMSimdFeature = YEP_ENUMERATION_SIMD_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureARM),
621  YepEnumerationARMSystemFeature = YEP_ENUMERATION_SYSTEM_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureARM),
623  YepEnumerationMIPSIsaFeature = YEP_ENUMERATION_ISA_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureMIPS),
625  YepEnumerationMIPSSimdFeature = YEP_ENUMERATION_SIMD_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureMIPS),
627  YepEnumerationMIPSSystemFeature = YEP_ENUMERATION_SYSTEM_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureMIPS),
629  YepEnumerationPowerPCIsaFeature = YEP_ENUMERATION_ISA_FEATURE_FOR_ARCHITECTURE(YepCpuArchitecturePowerPC),
631  YepEnumerationPowerPCSimdFeature = YEP_ENUMERATION_SIMD_FEATURE_FOR_ARCHITECTURE(YepCpuArchitecturePowerPC),
633  YepEnumerationPowerPCSystemFeature = YEP_ENUMERATION_SYSTEM_FEATURE_FOR_ARCHITECTURE(YepCpuArchitecturePowerPC),
635  YepEnumerationIA64IsaFeature = YEP_ENUMERATION_ISA_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureIA64),
637  YepEnumerationIA64SimdFeature = YEP_ENUMERATION_SIMD_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureIA64),
639  YepEnumerationIA64SystemFeature = YEP_ENUMERATION_SYSTEM_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureIA64),
641  YepEnumerationSPARCIsaFeature = YEP_ENUMERATION_ISA_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureSPARC),
643  YepEnumerationSPARCSimdFeature = YEP_ENUMERATION_SIMD_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureSPARC),
645  YepEnumerationSPARCSystemFeature = YEP_ENUMERATION_SYSTEM_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureSPARC)
646  };
659  YEP_PUBLIC_SYMBOL enum YepStatus YEPABI yepLibrary_GetString(enum YepEnumeration enumerationType, Yep32u enumerationValue, void *buffer, YepSize *length);
660 
661 #ifdef __cplusplus
662  const Yep64u YepIsaFeaturesDefault = 0x0000000000000000ull;
663  const Yep64u YepSimdFeaturesDefault = 0x0000000000000000ull;
664  const Yep64u YepSystemFeaturesDefault = 0x0000000000000000ull;
665 #else
666  #define YepIsaFeaturesDefault 0x0000000000000000ull
667  #define YepSimdFeaturesDefault 0x0000000000000000ull
668  #define YepSystemFeaturesDefault 0x0000000000000000ull
669 #endif
670 
671 #ifdef __cplusplus
672  const Yep64u YepSystemFeatureCycleCounter = 0x0000000000000001ull;
673  const Yep64u YepSystemFeatureCycleCounter64Bit = 0x0000000000000002ull;
674  const Yep64u YepSystemFeatureAddressSpace64Bit = 0x0000000000000004ull;
675  const Yep64u YepSystemFeatureGPRegisters64Bit = 0x0000000000000008ull;
676  const Yep64u YepSystemFeatureMisalignedAccess = 0x0000000000000010ull;
677  const Yep64u YepSystemFeatureSingleThreaded = 0x0000000000000020ull;
678 #else
679 
685  #define YepSystemFeatureCycleCounter 0x0000000000000001ull
686 
688  #define YepSystemFeatureCycleCounter64Bit 0x0000000000000002ull
689 
691  #define YepSystemFeatureAddressSpace64Bit 0x0000000000000004ull
692 
694  #define YepSystemFeatureGPRegisters64Bit 0x0000000000000008ull
695 
697  #define YepSystemFeatureMisalignedAccess 0x0000000000000010ull
698 
700  #define YepSystemFeatureSingleThreaded 0x0000000000000020ull
701 
702 #endif
703 
704 #ifdef __cplusplus
705  const Yep64u YepX86IsaFeatureFPU = 0x0000000000000001ull;
706  const Yep64u YepX86IsaFeatureCpuid = 0x0000000000000002ull;
707  const Yep64u YepX86IsaFeatureRdtsc = 0x0000000000000004ull;
708  const Yep64u YepX86IsaFeatureCMOV = 0x0000000000000008ull;
709  const Yep64u YepX86IsaFeatureSYSENTER = 0x0000000000000010ull;
710  const Yep64u YepX86IsaFeatureSYSCALL = 0x0000000000000020ull;
711  const Yep64u YepX86IsaFeatureMSR = 0x0000000000000040ull;
712  const Yep64u YepX86IsaFeatureClflush = 0x0000000000000080ull;
713  const Yep64u YepX86IsaFeatureMONITOR = 0x0000000000000100ull;
714  const Yep64u YepX86IsaFeatureFXSAVE = 0x0000000000000200ull;
715  const Yep64u YepX86IsaFeatureXSAVE = 0x0000000000000400ull;
716  const Yep64u YepX86IsaFeatureCmpxchg8b = 0x0000000000000800ull;
717  const Yep64u YepX86IsaFeatureCmpxchg16b = 0x0000000000001000ull;
718  const Yep64u YepX86IsaFeatureX64 = 0x0000000000002000ull;
719  const Yep64u YepX86IsaFeatureLahfSahf64 = 0x0000000000004000ull;
720  const Yep64u YepX86IsaFeatureFsGsBase = 0x0000000000008000ull;
721  const Yep64u YepX86IsaFeatureMovbe = 0x0000000000010000ull;
722  const Yep64u YepX86IsaFeaturePopcnt = 0x0000000000020000ull;
723  const Yep64u YepX86IsaFeatureLzcnt = 0x0000000000040000ull;
724  const Yep64u YepX86IsaFeatureBMI = 0x0000000000080000ull;
725  const Yep64u YepX86IsaFeatureBMI2 = 0x0000000000100000ull;
726  const Yep64u YepX86IsaFeatureTBM = 0x0000000000200000ull;
727  const Yep64u YepX86IsaFeatureRdrand = 0x0000000000400000ull;
728  const Yep64u YepX86IsaFeatureACE = 0x0000000000800000ull;
729  const Yep64u YepX86IsaFeatureACE2 = 0x0000000001000000ull;
730  const Yep64u YepX86IsaFeatureRNG = 0x0000000002000000ull;
731  const Yep64u YepX86IsaFeaturePHE = 0x0000000004000000ull;
732  const Yep64u YepX86IsaFeaturePMM = 0x0000000008000000ull;
733  const Yep64u YepX86IsaFeatureAES = 0x0000000010000000ull;
734  const Yep64u YepX86IsaFeaturePclmulqdq = 0x0000000020000000ull;
735  const Yep64u YepX86IsaFeatureRdtscp = 0x0000000040000000ull;
736  const Yep64u YepX86IsaFeatureLWP = 0x0000000080000000ull;
737  const Yep64u YepX86IsaFeatureHLE = 0x0000000100000000ull;
738  const Yep64u YepX86IsaFeatureRTM = 0x0000000200000000ull;
739  const Yep64u YepX86IsaFeatureXtest = 0x0000000400000000ull;
740  const Yep64u YepX86IsaFeatureRdseed = 0x0000000800000000ull;
741  const Yep64u YepX86IsaFeatureADX = 0x0000001000000000ull;
742 #else
743 
749  #define YepX86IsaFeatureFPU 0x0000000000000001ull
750 
752  #define YepX86IsaFeatureCpuid 0x0000000000000002ull
753 
755  #define YepX86IsaFeatureRdtsc 0x0000000000000004ull
756 
758  #define YepX86IsaFeatureCMOV 0x0000000000000008ull
759 
761  #define YepX86IsaFeatureSYSENTER 0x0000000000000010ull
762 
764  #define YepX86IsaFeatureSYSCALL 0x0000000000000020ull
765 
767  #define YepX86IsaFeatureMSR 0x0000000000000040ull
768 
770  #define YepX86IsaFeatureClflush 0x0000000000000080ull
771 
773  #define YepX86IsaFeatureMONITOR 0x0000000000000100ull
774 
776  #define YepX86IsaFeatureFXSAVE 0x0000000000000200ull
777 
779  #define YepX86IsaFeatureXSAVE 0x0000000000000400ull
780 
782  #define YepX86IsaFeatureCmpxchg8b 0x0000000000000800ull
783 
785  #define YepX86IsaFeatureCmpxchg16b 0x0000000000001000ull
786 
788  #define YepX86IsaFeatureX64 0x0000000000002000ull
789 
791  #define YepX86IsaFeatureLahfSahf64 0x0000000000004000ull
792 
794  #define YepX86IsaFeatureFsGsBase 0x0000000000008000ull
795 
797  #define YepX86IsaFeatureMovbe 0x0000000000010000ull
798 
800  #define YepX86IsaFeaturePopcnt 0x0000000000020000ull
801 
803  #define YepX86IsaFeatureLzcnt 0x0000000000040000ull
804 
806  #define YepX86IsaFeatureBMI 0x0000000000080000ull
807 
809  #define YepX86IsaFeatureBMI2 0x0000000000100000ull
810 
812  #define YepX86IsaFeatureTBM 0x0000000000200000ull
813 
815  #define YepX86IsaFeatureRdrand 0x0000000000400000ull
816 
818  #define YepX86IsaFeatureACE 0x0000000000800000ull
819 
821  #define YepX86IsaFeatureACE2 0x0000000001000000ull
822 
824  #define YepX86IsaFeatureRNG 0x0000000002000000ull
825 
827  #define YepX86IsaFeaturePHE 0x0000000004000000ull
828 
830  #define YepX86IsaFeaturePMM 0x0000000008000000ull
831 
833  #define YepX86IsaFeatureAES 0x0000000010000000ull
834 
836  #define YepX86IsaFeaturePclmulqdq 0x0000000020000000ull
837 
839  #define YepX86IsaFeatureRdtscp 0x0000000040000000ull
840 
842  #define YepX86IsaFeatureLWP 0x0000000080000000ull
843 
845  #define YepX86IsaFeatureHLE 0x0000000100000000ull
846 
848  #define YepX86IsaFeatureRTM 0x0000000200000000ull
849 
851  #define YepX86IsaFeatureXtest 0x0000000400000000ull
852 
854  #define YepX86IsaFeatureRdseed 0x0000000800000000ull
855 
857  #define YepX86IsaFeatureADX 0x0000001000000000ull
858 
859 #endif
860 
861 #ifdef __cplusplus
862  const Yep64u YepX86SimdFeatureMMX = 0x0000000000000001ull;
863  const Yep64u YepX86SimdFeatureMMXPlus = 0x0000000000000002ull;
864  const Yep64u YepX86SimdFeatureEMMX = 0x0000000000000004ull;
865  const Yep64u YepX86SimdFeature3dnow = 0x0000000000000008ull;
866  const Yep64u YepX86SimdFeature3dnowPlus = 0x0000000000000010ull;
867  const Yep64u YepX86SimdFeature3dnowPrefetch = 0x0000000000000020ull;
868  const Yep64u YepX86SimdFeature3dnowGeode = 0x0000000000000040ull;
869  const Yep64u YepX86SimdFeatureSSE = 0x0000000000000080ull;
870  const Yep64u YepX86SimdFeatureSSE2 = 0x0000000000000100ull;
871  const Yep64u YepX86SimdFeatureSSE3 = 0x0000000000000200ull;
872  const Yep64u YepX86SimdFeatureSSSE3 = 0x0000000000000400ull;
873  const Yep64u YepX86SimdFeatureSSE4_1 = 0x0000000000000800ull;
874  const Yep64u YepX86SimdFeatureSSE4_2 = 0x0000000000001000ull;
875  const Yep64u YepX86SimdFeatureSSE4A = 0x0000000000002000ull;
876  const Yep64u YepX86SimdFeatureAVX = 0x0000000000004000ull;
877  const Yep64u YepX86SimdFeatureAVX2 = 0x0000000000008000ull;
878  const Yep64u YepX86SimdFeatureXOP = 0x0000000000010000ull;
879  const Yep64u YepX86SimdFeatureF16C = 0x0000000000020000ull;
880  const Yep64u YepX86SimdFeatureFMA3 = 0x0000000000040000ull;
881  const Yep64u YepX86SimdFeatureFMA4 = 0x0000000000080000ull;
882  const Yep64u YepX86SimdFeatureKNF = 0x0000000000100000ull;
883  const Yep64u YepX86SimdFeatureKNC = 0x0000000000200000ull;
884 #else
885 
892  #define YepX86SimdFeatureMMX 0x0000000000000001ull
893 
896  #define YepX86SimdFeatureMMXPlus 0x0000000000000002ull
897 
899  #define YepX86SimdFeatureEMMX 0x0000000000000004ull
900 
903  #define YepX86SimdFeature3dnow 0x0000000000000008ull
904 
907  #define YepX86SimdFeature3dnowPlus 0x0000000000000010ull
908 
910  #define YepX86SimdFeature3dnowPrefetch 0x0000000000000020ull
911 
913  #define YepX86SimdFeature3dnowGeode 0x0000000000000040ull
914 
917  #define YepX86SimdFeatureSSE 0x0000000000000080ull
918 
921  #define YepX86SimdFeatureSSE2 0x0000000000000100ull
922 
925  #define YepX86SimdFeatureSSE3 0x0000000000000200ull
926 
929  #define YepX86SimdFeatureSSSE3 0x0000000000000400ull
930 
933  #define YepX86SimdFeatureSSE4_1 0x0000000000000800ull
934 
937  #define YepX86SimdFeatureSSE4_2 0x0000000000001000ull
938 
941  #define YepX86SimdFeatureSSE4A 0x0000000000002000ull
942 
945  #define YepX86SimdFeatureAVX 0x0000000000004000ull
946 
949  #define YepX86SimdFeatureAVX2 0x0000000000008000ull
950 
953  #define YepX86SimdFeatureXOP 0x0000000000010000ull
954 
957  #define YepX86SimdFeatureF16C 0x0000000000020000ull
958 
961  #define YepX86SimdFeatureFMA3 0x0000000000040000ull
962 
965  #define YepX86SimdFeatureFMA4 0x0000000000080000ull
966 
968  #define YepX86SimdFeatureKNF 0x0000000000100000ull
969 
972  #define YepX86SimdFeatureKNC 0x0000000000200000ull
973 
974 #endif
975 
976 #ifdef __cplusplus
977  const Yep64u YepX86SystemFeatureFPU = 0x0000000100000000ull;
978  const Yep64u YepX86SystemFeatureSSE = 0x0000000200000000ull;
979  const Yep64u YepX86SystemFeatureAVX = 0x0000000400000000ull;
980  const Yep64u YepX86SystemFeatureMisalignedSSE = 0x0000000800000000ull;
981  const Yep64u YepX86SystemFeatureACE = 0x0000001000000000ull;
982  const Yep64u YepX86SystemFeatureACE2 = 0x0000002000000000ull;
983  const Yep64u YepX86SystemFeatureRNG = 0x0000004000000000ull;
984  const Yep64u YepX86SystemFeaturePHE = 0x0000008000000000ull;
985  const Yep64u YepX86SystemFeaturePMM = 0x0000010000000000ull;
986  const Yep64u YepX86SystemFeatureMIC = 0x0000020000000000ull;
987 #else
988 
994  #define YepX86SystemFeatureFPU 0x0000000100000000ull
995 
997  #define YepX86SystemFeatureSSE 0x0000000200000000ull
998 
1000  #define YepX86SystemFeatureAVX 0x0000000400000000ull
1001 
1003  #define YepX86SystemFeatureMisalignedSSE 0x0000000800000000ull
1004 
1006  #define YepX86SystemFeatureACE 0x0000001000000000ull
1007 
1009  #define YepX86SystemFeatureACE2 0x0000002000000000ull
1010 
1012  #define YepX86SystemFeatureRNG 0x0000004000000000ull
1013 
1015  #define YepX86SystemFeaturePHE 0x0000008000000000ull
1016 
1018  #define YepX86SystemFeaturePMM 0x0000010000000000ull
1019 
1021  #define YepX86SystemFeatureMIC 0x0000020000000000ull
1022 
1023 #endif
1024 
1025 #ifdef __cplusplus
1026  const Yep64u YepIA64IsaFeatureBrl = 0x0000000000000001ull;
1027  const Yep64u YepIA64IsaFeatureAtomic128 = 0x0000000000000002ull;
1028  const Yep64u YepIA64IsaFeatureClz = 0x0000000000000004ull;
1029  const Yep64u YepIA64IsaFeatureMpy4 = 0x0000000000000008ull;
1030 #else
1031 
1037  #define YepIA64IsaFeatureBrl 0x0000000000000001ull
1038 
1040  #define YepIA64IsaFeatureAtomic128 0x0000000000000002ull
1041 
1043  #define YepIA64IsaFeatureClz 0x0000000000000004ull
1044 
1046  #define YepIA64IsaFeatureMpy4 0x0000000000000008ull
1047 
1048 #endif
1049 
1050 #ifdef __cplusplus
1051  const Yep64u YepARMIsaFeatureV4 = 0x0000000000000001ull;
1052  const Yep64u YepARMIsaFeatureV5 = 0x0000000000000002ull;
1053  const Yep64u YepARMIsaFeatureV5E = 0x0000000000000004ull;
1054  const Yep64u YepARMIsaFeatureV6 = 0x0000000000000008ull;
1055  const Yep64u YepARMIsaFeatureV6K = 0x0000000000000010ull;
1056  const Yep64u YepARMIsaFeatureV7 = 0x0000000000000020ull;
1057  const Yep64u YepARMIsaFeatureV7MP = 0x0000000000000040ull;
1058  const Yep64u YepARMIsaFeatureThumb = 0x0000000000000080ull;
1059  const Yep64u YepARMIsaFeatureThumb2 = 0x0000000000000100ull;
1060  const Yep64u YepARMIsaFeatureThumbEE = 0x0000000000000200ull;
1061  const Yep64u YepARMIsaFeatureJazelle = 0x0000000000000400ull;
1062  const Yep64u YepARMIsaFeatureFPA = 0x0000000000000800ull;
1063  const Yep64u YepARMIsaFeatureVFP = 0x0000000000001000ull;
1064  const Yep64u YepARMIsaFeatureVFP2 = 0x0000000000002000ull;
1065  const Yep64u YepARMIsaFeatureVFP3 = 0x0000000000004000ull;
1066  const Yep64u YepARMIsaFeatureVFPd32 = 0x0000000000008000ull;
1067  const Yep64u YepARMIsaFeatureVFP3HP = 0x0000000000010000ull;
1068  const Yep64u YepARMIsaFeatureVFP4 = 0x0000000000020000ull;
1069  const Yep64u YepARMIsaFeatureDiv = 0x0000000000040000ull;
1070  const Yep64u YepARMIsaFeatureArmada = 0x0000000000080000ull;
1071 #else
1072 
1078  #define YepARMIsaFeatureV4 0x0000000000000001ull
1079 
1081  #define YepARMIsaFeatureV5 0x0000000000000002ull
1082 
1084  #define YepARMIsaFeatureV5E 0x0000000000000004ull
1085 
1087  #define YepARMIsaFeatureV6 0x0000000000000008ull
1088 
1090  #define YepARMIsaFeatureV6K 0x0000000000000010ull
1091 
1093  #define YepARMIsaFeatureV7 0x0000000000000020ull
1094 
1096  #define YepARMIsaFeatureV7MP 0x0000000000000040ull
1097 
1099  #define YepARMIsaFeatureThumb 0x0000000000000080ull
1100 
1102  #define YepARMIsaFeatureThumb2 0x0000000000000100ull
1103 
1105  #define YepARMIsaFeatureThumbEE 0x0000000000000200ull
1106 
1108  #define YepARMIsaFeatureJazelle 0x0000000000000400ull
1109 
1111  #define YepARMIsaFeatureFPA 0x0000000000000800ull
1112 
1114  #define YepARMIsaFeatureVFP 0x0000000000001000ull
1115 
1117  #define YepARMIsaFeatureVFP2 0x0000000000002000ull
1118 
1120  #define YepARMIsaFeatureVFP3 0x0000000000004000ull
1121 
1123  #define YepARMIsaFeatureVFPd32 0x0000000000008000ull
1124 
1126  #define YepARMIsaFeatureVFP3HP 0x0000000000010000ull
1127 
1129  #define YepARMIsaFeatureVFP4 0x0000000000020000ull
1130 
1132  #define YepARMIsaFeatureDiv 0x0000000000040000ull
1133 
1135  #define YepARMIsaFeatureArmada 0x0000000000080000ull
1136 
1137 #endif
1138 
1139 #ifdef __cplusplus
1140  const Yep64u YepARMSimdFeatureXScale = 0x0000000000000001ull;
1141  const Yep64u YepARMSimdFeatureWMMX = 0x0000000000000002ull;
1142  const Yep64u YepARMSimdFeatureWMMX2 = 0x0000000000000004ull;
1143  const Yep64u YepARMSimdFeatureNEON = 0x0000000000000008ull;
1144  const Yep64u YepARMSimdFeatureNEONHP = 0x0000000000000010ull;
1145  const Yep64u YepARMSimdFeatureNEON2 = 0x0000000000000020ull;
1146 #else
1147 
1153  #define YepARMSimdFeatureXScale 0x0000000000000001ull
1154 
1156  #define YepARMSimdFeatureWMMX 0x0000000000000002ull
1157 
1159  #define YepARMSimdFeatureWMMX2 0x0000000000000004ull
1160 
1162  #define YepARMSimdFeatureNEON 0x0000000000000008ull
1163 
1165  #define YepARMSimdFeatureNEONHP 0x0000000000000010ull
1166 
1168  #define YepARMSimdFeatureNEON2 0x0000000000000020ull
1169 
1170 #endif
1171 
1172 #ifdef __cplusplus
1173  const Yep64u YepARMSystemFeatureVFPVectorMode = 0x0000000100000000ull;
1174 #else
1175 
1181  #define YepARMSystemFeatureVFPVectorMode 0x0000000100000000ull
1182 
1183 #endif
1184 
1185 #ifdef __cplusplus
1186  const Yep64u YepMIPSIsaFeatureR2 = 0x0000000000000001ull;
1187  const Yep64u YepMIPSIsaFeatureMicroMIPS = 0x0000000000000002ull;
1188  const Yep64u YepMIPSIsaFeatureFPU = 0x0000000000000004ull;
1189  const Yep64u YepMIPSIsaFeatureMT = 0x0000000000000008ull;
1190  const Yep64u YepMIPSIsaFeatureMIPS16 = 0x0000000000000010ull;
1191  const Yep64u YepMIPSIsaFeatureSmartMIPS = 0x0000000000000020ull;
1192 #else
1193 
1199  #define YepMIPSIsaFeatureR2 0x0000000000000001ull
1200 
1203  #define YepMIPSIsaFeatureMicroMIPS 0x0000000000000002ull
1204 
1206  #define YepMIPSIsaFeatureFPU 0x0000000000000004ull
1207 
1209  #define YepMIPSIsaFeatureMT 0x0000000000000008ull
1210 
1212  #define YepMIPSIsaFeatureMIPS16 0x0000000000000010ull
1213 
1215  #define YepMIPSIsaFeatureSmartMIPS 0x0000000000000020ull
1216 
1217 #endif
1218 
1219 #ifdef __cplusplus
1220  const Yep64u YepMIPSSimdFeatureMDMX = 0x0000000000000001ull;
1221  const Yep64u YepMIPSSimdFeatureMIPS3D = 0x0000000000000002ull;
1222  const Yep64u YepMIPSSimdFeaturePairedSingle = 0x0000000000000004ull;
1223  const Yep64u YepMIPSSimdFeatureDSP = 0x0000000000000008ull;
1224  const Yep64u YepMIPSSimdFeatureDSP2 = 0x0000000000000010ull;
1225  const Yep64u YepMIPSSimdFeatureGodsonMMX = 0x0000000000000020ull;
1226  const Yep64u YepMIPSSimdFeatureIMX = 0x0000000000000040ull;
1227 #else
1228 
1234  #define YepMIPSSimdFeatureMDMX 0x0000000000000001ull
1235 
1237  #define YepMIPSSimdFeatureMIPS3D 0x0000000000000002ull
1238 
1240  #define YepMIPSSimdFeaturePairedSingle 0x0000000000000004ull
1241 
1243  #define YepMIPSSimdFeatureDSP 0x0000000000000008ull
1244 
1246  #define YepMIPSSimdFeatureDSP2 0x0000000000000010ull
1247 
1250  #define YepMIPSSimdFeatureGodsonMMX 0x0000000000000020ull
1251 
1253  #define YepMIPSSimdFeatureIMX 0x0000000000000040ull
1254 
1255 #endif
1256 
1257 #ifdef __cplusplus
1258 }
1259 #endif