Yeppp!
 All Data Structures Functions Variables Enumerations Enumerator Groups Pages
yepTypes.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 
74 #include <yepPredefines.h>
75 #include <stddef.h>
76 
77 typedef unsigned char Yep8u;
78 typedef unsigned short Yep16u;
79 typedef unsigned int Yep32u;
80 typedef unsigned long long Yep64u;
81 
82 typedef signed char Yep8s;
83 typedef signed short Yep16s;
84 typedef signed int Yep32s;
85 typedef signed long long Yep64s;
86 
87 typedef float Yep32f;
88 typedef double Yep64f;
89 #if defined(YEP_X86_CPU) || defined(YEP_X64_CPU)
90  #if defined(YEP_GCC_COMPATIBLE_COMPILER) || (defined(YEP_INTEL_COMPILER_FOR_WINDOWS) && (__LONG_DOUBLE_SIZE__ == 80))
91  #define YEP_COMPILER_SUPPORTS_YEP80F_TYPE
92  typedef long double Yep80f;
93  #endif
94 #endif
95 
96 typedef size_t YepSize;
97 
98 #ifndef __cplusplus
99  #if defined(YEP_MICROSOFT_COMPILER)
100  /* OMG! I can't believe it still doesn't have stdbool.h in 2012! */
101  typedef unsigned char YepBoolean;
102  #define YepBooleanTrue 1
103  #define YepBooleanFalse 0
104  #else
105  #include <stdbool.h>
106  typedef bool YepBoolean;
107  #define YepBooleanTrue true
108  #define YepBooleanFalse false
109  #endif
110 #else
111  typedef bool YepBoolean;
112  const YepBoolean YepBooleanTrue = true;
113  const YepBoolean YepBooleanFalse = false;
114 #endif
115 
116 typedef Yep16u Yep16f;
117 
118 #pragma pack(push, 1)
119 
120 struct Yep16fc {
121  Yep16f re;
122  Yep16f im;
123 };
124 
125 struct Yep32fc {
126  Yep32f re;
127  Yep32f im;
128 };
129 
130 struct Yep64fc {
131  Yep64f re;
132  Yep64f im;
133 };
134 
135 struct Yep32df {
136  Yep32f high;
137  Yep32f low;
138 };
139 
140 struct Yep64df {
141  Yep64f high;
142  Yep64f low;
143 };
144 
145 #if defined(YEP_LITTLE_ENDIAN_BYTE_ORDER)
146  typedef struct {
147  Yep64u low;
148  Yep64u high;
149  } Yep128u;
150 
151  typedef struct {
152  Yep64u low;
153  Yep64s high;
154  } Yep128s;
155 #elif defined(YEP_BIG_ENDIAN_BYTE_ORDER)
156  typedef struct {
157  Yep64u high;
158  Yep64u low;
159  } Yep128u;
160 
161  typedef struct {
162  Yep64s high;
163  Yep64u low;
164  } Yep128s;
165 #else
166  #error "Unknown or supported byte order"
167 #endif
168 
169 #pragma pack(pop)
170 
178  Yep32u major;
180  Yep32u minor;
182  Yep32u patchLevel;
184  Yep32u build;
186  const char* releaseName;
187 };
188 
193 enum YepStatus {
218 };
219 
242 };
243 
252 
253  /* x86/x86-64 CPUs */
254 
293 
294  /* ARM CPUs */
295 
309 
310  /* MIPS CPUs */
311 
318 
319  /* PowerPC CPUs */
320 
328 
329  /* SPARC CPUs */
330 
340 };
341 
352 
383 
388 
411 
416 
433 
438 
443 
446 
451 
458 
463 };
464 
465 #ifdef __cplusplus
466  const Yep64u YepIsaFeaturesDefault = 0x0000000000000000ull;
467  const Yep64u YepSimdFeaturesDefault = 0x0000000000000000ull;
468  const Yep64u YepSystemFeaturesDefault = 0x0000000000000000ull;
469 
470  const Yep64u YepSystemFeatureCycleCounter = 0x0000000000000001ull;
471  const Yep64u YepSystemFeatureCycleCounter64Bit = 0x0000000000000002ull;
472  const Yep64u YepSystemFeatureAddressSpace64Bit = 0x0000000000000004ull;
473  const Yep64u YepSystemFeatureGPRegisters64Bit = 0x0000000000000008ull;
474  const Yep64u YepSystemFeatureMisalignedAccess = 0x0000000000000010ull;
475  const Yep64u YepSystemFeatureSingleThreaded = 0x0000000000000020ull;
476 
477  /* x86/x86-64 ISA Extensions */
478  const Yep64u YepX86IsaFeatureFPU = 0x0000000000000001ull;
479  const Yep64u YepX86IsaFeatureCpuid = 0x0000000000000002ull;
480  const Yep64u YepX86IsaFeatureRdtsc = 0x0000000000000004ull;
481  const Yep64u YepX86IsaFeatureCMOV = 0x0000000000000008ull;
482  const Yep64u YepX86IsaFeatureSYSENTER = 0x0000000000000010ull;
483  const Yep64u YepX86IsaFeatureSYSCALL = 0x0000000000000020ull;
484  const Yep64u YepX86IsaFeatureMSR = 0x0000000000000040ull;
485  const Yep64u YepX86IsaFeatureClflush = 0x0000000000000080ull;
486  const Yep64u YepX86IsaFeatureMONITOR = 0x0000000000000100ull;
487  const Yep64u YepX86IsaFeatureFXSAVE = 0x0000000000000200ull;
488  const Yep64u YepX86IsaFeatureXSAVE = 0x0000000000000400ull;
489  const Yep64u YepX86IsaFeatureCmpxchg8b = 0x0000000000000800ull;
490  const Yep64u YepX86IsaFeatureCmpxchg16b = 0x0000000000001000ull;
491  const Yep64u YepX86IsaFeatureX64 = 0x0000000000002000ull;
492  const Yep64u YepX86IsaFeatureLahfSahf64 = 0x0000000000004000ull;
493  const Yep64u YepX86IsaFeatureFsGsBase = 0x0000000000008000ull;
494  const Yep64u YepX86IsaFeatureMovbe = 0x0000000000010000ull;
495  const Yep64u YepX86IsaFeaturePopcnt = 0x0000000000020000ull;
496  const Yep64u YepX86IsaFeatureLzcnt = 0x0000000000040000ull;
497  const Yep64u YepX86IsaFeatureBMI = 0x0000000000080000ull;
498  const Yep64u YepX86IsaFeatureBMI2 = 0x0000000000100000ull;
499  const Yep64u YepX86IsaFeatureTBM = 0x0000000000200000ull;
500  const Yep64u YepX86IsaFeatureRdrand = 0x0000000000400000ull;
501  const Yep64u YepX86IsaFeatureACE = 0x0000000000800000ull;
502  const Yep64u YepX86IsaFeatureACE2 = 0x0000000001000000ull;
503  const Yep64u YepX86IsaFeatureRNG = 0x0000000002000000ull;
504  const Yep64u YepX86IsaFeaturePHE = 0x0000000004000000ull;
505  const Yep64u YepX86IsaFeaturePMM = 0x0000000008000000ull;
506  const Yep64u YepX86IsaFeatureAES = 0x0000000010000000ull;
507  const Yep64u YepX86IsaFeaturePclmulqdq = 0x0000000020000000ull;
508  const Yep64u YepX86IsaFeatureRdtscp = 0x0000000040000000ull;
509  const Yep64u YepX86IsaFeatureLWP = 0x0000000080000000ull;
510  const Yep64u YepX86IsaFeatureHLE = 0x0000000100000000ull;
511  const Yep64u YepX86IsaFeatureRTM = 0x0000000200000000ull;
512  const Yep64u YepX86IsaFeatureXtest = 0x0000000400000000ull;
513  const Yep64u YepX86IsaFeatureRdseed = 0x0000000800000000ull;
514  const Yep64u YepX86IsaFeatureADX = 0x0000001000000000ull;
515 
516  const Yep64u YepX86SimdFeatureMMX = 0x0000000000000001ull;
517  const Yep64u YepX86SimdFeatureMMXPlus = 0x0000000000000002ull;
518  const Yep64u YepX86SimdFeatureEMMX = 0x0000000000000004ull;
519  const Yep64u YepX86SimdFeature3dnow = 0x0000000000000008ull;
520  const Yep64u YepX86SimdFeature3dnowPlus = 0x0000000000000010ull;
521  const Yep64u YepX86SimdFeature3dnowPrefetch = 0x0000000000000020ull;
522  const Yep64u YepX86SimdFeature3dnowGeode = 0x0000000000000040ull;
523  const Yep64u YepX86SimdFeatureSSE = 0x0000000000000080ull;
524  const Yep64u YepX86SimdFeatureSSE2 = 0x0000000000000100ull;
525  const Yep64u YepX86SimdFeatureSSE3 = 0x0000000000000200ull;
526  const Yep64u YepX86SimdFeatureSSSE3 = 0x0000000000000400ull;
527  const Yep64u YepX86SimdFeatureSSE4_1 = 0x0000000000000800ull;
528  const Yep64u YepX86SimdFeatureSSE4_2 = 0x0000000000001000ull;
529  const Yep64u YepX86SimdFeatureSSE4A = 0x0000000000002000ull;
530  const Yep64u YepX86SimdFeatureAVX = 0x0000000000004000ull;
531  const Yep64u YepX86SimdFeatureAVX2 = 0x0000000000008000ull;
532  const Yep64u YepX86SimdFeatureXOP = 0x0000000000010000ull;
533  const Yep64u YepX86SimdFeatureF16C = 0x0000000000020000ull;
534  const Yep64u YepX86SimdFeatureFMA3 = 0x0000000000040000ull;
535  const Yep64u YepX86SimdFeatureFMA4 = 0x0000000000080000ull;
536  const Yep64u YepX86SimdFeatureKNF = 0x0000000000100000ull;
537  const Yep64u YepX86SimdFeatureKNC = 0x0000000000200000ull;
538 
539  const Yep64u YepX86SystemFeatureFPU = 0x0000000100000000ull;
540  const Yep64u YepX86SystemFeatureSSE = 0x0000000200000000ull;
541  const Yep64u YepX86SystemFeatureAVX = 0x0000000400000000ull;
542  const Yep64u YepX86SystemFeatureMisalignedSSE = 0x0000000800000000ull;
543  const Yep64u YepX86SystemFeatureACE = 0x0000001000000000ull;
544  const Yep64u YepX86SystemFeatureACE2 = 0x0000002000000000ull;
545  const Yep64u YepX86SystemFeatureRNG = 0x0000004000000000ull;
546  const Yep64u YepX86SystemFeaturePHE = 0x0000008000000000ull;
547  const Yep64u YepX86SystemFeaturePMM = 0x0000010000000000ull;
548  const Yep64u YepX86SystemFeatureMIC = 0x0000020000000000ull;
549 
550  /* IA64 ISA Extensions */
551  const Yep64u YepIA64IsaFeatureBrl = 0x0000000000000001ull;
552  const Yep64u YepIA64IsaFeatureAtomic128 = 0x0000000000000002ull;
553  const Yep64u YepIA64IsaFeatureClz = 0x0000000000000004ull;
554  const Yep64u YepIA64IsaFeatureMpy4 = 0x0000000000000008ull;
555 
556  /* ARM ISA Extensions */
557  const Yep64u YepARMIsaFeatureV4 = 0x0000000000000001ull;
558  const Yep64u YepARMIsaFeatureV5 = 0x0000000000000002ull;
559  const Yep64u YepARMIsaFeatureV5E = 0x0000000000000004ull;
560  const Yep64u YepARMIsaFeatureV6 = 0x0000000000000008ull;
561  const Yep64u YepARMIsaFeatureV6K = 0x0000000000000010ull;
562  const Yep64u YepARMIsaFeatureV7 = 0x0000000000000020ull;
563  const Yep64u YepARMIsaFeatureV7MP = 0x0000000000000040ull;
564  const Yep64u YepARMIsaFeatureThumb = 0x0000000000000080ull;
565  const Yep64u YepARMIsaFeatureThumb2 = 0x0000000000000100ull;
566  const Yep64u YepARMIsaFeatureThumbEE = 0x0000000000000200ull;
567  const Yep64u YepARMIsaFeatureJazelle = 0x0000000000000400ull;
568  const Yep64u YepARMIsaFeatureFPA = 0x0000000000000800ull;
569  const Yep64u YepARMIsaFeatureVFP = 0x0000000000001000ull;
570  const Yep64u YepARMIsaFeatureVFP2 = 0x0000000000002000ull;
571  const Yep64u YepARMIsaFeatureVFP3 = 0x0000000000004000ull;
572  const Yep64u YepARMIsaFeatureVFPd32 = 0x0000000000008000ull;
573  const Yep64u YepARMIsaFeatureVFP3HP = 0x0000000000010000ull;
574  const Yep64u YepARMIsaFeatureVFP4 = 0x0000000000020000ull;
575  const Yep64u YepARMIsaFeatureDiv = 0x0000000000040000ull;
576  const Yep64u YepARMIsaFeatureArmada = 0x0000000000080000ull;
577 
578  const Yep64u YepARMSimdFeatureXScale = 0x0000000000000001ull;
579  const Yep64u YepARMSimdFeatureWMMX = 0x0000000000000002ull;
580  const Yep64u YepARMSimdFeatureWMMX2 = 0x0000000000000004ull;
581  const Yep64u YepARMSimdFeatureNEON = 0x0000000000000008ull;
582  const Yep64u YepARMSimdFeatureNEONHP = 0x0000000000000010ull;
583  const Yep64u YepARMSimdFeatureNEON2 = 0x0000000000000020ull;
584 
585  const Yep64u YepARMSystemFeatureVFPVectorMode = 0x0000000100000000ull;
586 
587  /* MIPS ISA Extensions */
588  const Yep64u YepMIPSIsaFeatureR2 = 0x0000000000000001ull;
589  const Yep64u YepMIPSIsaFeatureMicroMIPS = 0x0000000000000002ull;
590  const Yep64u YepMIPSIsaFeatureFPU = 0x0000000000000004ull;
591  const Yep64u YepMIPSIsaFeatureMT = 0x0000000000000008ull;
592  const Yep64u YepMIPSIsaFeatureMIPS16 = 0x0000000000000010ull;
593  const Yep64u YepMIPSIsaFeatureSmartMIPS = 0x0000000000000020ull;
594 
595  const Yep64u YepMIPSSimdFeatureMDMX = 0x0000000000000001ull;
596  const Yep64u YepMIPSSimdFeatureMIPS3D = 0x0000000000000002ull;
597  const Yep64u YepMIPSSimdFeaturePairedSingle = 0x0000000000000004ull;
598  const Yep64u YepMIPSSimdFeatureDSP = 0x0000000000000008ull;
599  const Yep64u YepMIPSSimdFeatureDSP2 = 0x0000000000000010ull;
600  const Yep64u YepMIPSSimdFeatureGodsonMMX = 0x0000000000000020ull;
601  const Yep64u YepMIPSSimdFeatureIMX = 0x0000000000000040ull;
602 
603 #else
604  #define YepIsaFeaturesDefault 0x0000000000000000ull
605  #define YepSimdFeaturesDefault 0x0000000000000000ull
606  #define YepSystemFeaturesDefault 0x0000000000000000ull
607 
613  #define YepSystemFeatureCycleCounter 0x0000000000000001ull
614 
616  #define YepSystemFeatureCycleCounter64Bit 0x0000000000000002ull
617 
619  #define YepSystemFeatureAddressSpace64Bit 0x0000000000000004ull
620 
622  #define YepSystemFeatureGPRegisters64Bit 0x0000000000000008ull
623 
625  #define YepSystemFeatureMisalignedAccess 0x0000000000000010ull
626 
628  #define YepSystemFeatureSingleThreaded 0x0000000000000020ull
629 
637  #define YepX86IsaFeatureFPU 0x0000000000000001ull
638 
640  #define YepX86IsaFeatureCpuid 0x0000000000000002ull
641 
643  #define YepX86IsaFeatureRdtsc 0x0000000000000004ull
644 
646  #define YepX86IsaFeatureCMOV 0x0000000000000008ull
647 
649  #define YepX86IsaFeatureSYSENTER 0x0000000000000010ull
650 
652  #define YepX86IsaFeatureSYSCALL 0x0000000000000020ull
653 
655  #define YepX86IsaFeatureMSR 0x0000000000000040ull
656 
658  #define YepX86IsaFeatureClflush 0x0000000000000080ull
659 
661  #define YepX86IsaFeatureMONITOR 0x0000000000000100ull
662 
664  #define YepX86IsaFeatureFXSAVE 0x0000000000000200ull
665 
667  #define YepX86IsaFeatureXSAVE 0x0000000000000400ull
668 
670  #define YepX86IsaFeatureCmpxchg8b 0x0000000000000800ull
671 
673  #define YepX86IsaFeatureCmpxchg16b 0x0000000000001000ull
674 
676  #define YepX86IsaFeatureX64 0x0000000000002000ull
677 
679  #define YepX86IsaFeatureLahfSahf64 0x0000000000004000ull
680 
682  #define YepX86IsaFeatureFsGsBase 0x0000000000008000ull
683 
685  #define YepX86IsaFeatureMovbe 0x0000000000010000ull
686 
688  #define YepX86IsaFeaturePopcnt 0x0000000000020000ull
689 
691  #define YepX86IsaFeatureLzcnt 0x0000000000040000ull
692 
694  #define YepX86IsaFeatureBMI 0x0000000000080000ull
695 
697  #define YepX86IsaFeatureBMI2 0x0000000000100000ull
698 
700  #define YepX86IsaFeatureTBM 0x0000000000200000ull
701 
703  #define YepX86IsaFeatureRdrand 0x0000000000400000ull
704 
706  #define YepX86IsaFeatureACE 0x0000000000800000ull
707 
709  #define YepX86IsaFeatureACE2 0x0000000001000000ull
710 
712  #define YepX86IsaFeatureRNG 0x0000000002000000ull
713 
715  #define YepX86IsaFeaturePHE 0x0000000004000000ull
716 
718  #define YepX86IsaFeaturePMM 0x0000000008000000ull
719 
721  #define YepX86IsaFeatureAES 0x0000000010000000ull
722 
724  #define YepX86IsaFeaturePclmulqdq 0x0000000020000000ull
725 
727  #define YepX86IsaFeatureRdtscp 0x0000000040000000ull
728 
730  #define YepX86IsaFeatureLWP 0x0000000080000000ull
731 
733  #define YepX86IsaFeatureHLE 0x0000000100000000ull
734 
736  #define YepX86IsaFeatureRTM 0x0000000200000000ull
737 
739  #define YepX86IsaFeatureXtest 0x0000000400000000ull
740 
742  #define YepX86IsaFeatureRdseed 0x0000000800000000ull
743 
745  #define YepX86IsaFeatureADX 0x0000001000000000ull
746 
754  #define YepX86SimdFeatureMMX 0x0000000000000001ull
755 
758  #define YepX86SimdFeatureMMXPlus 0x0000000000000002ull
759 
761  #define YepX86SimdFeatureEMMX 0x0000000000000004ull
762 
765  #define YepX86SimdFeature3dnow 0x0000000000000008ull
766 
769  #define YepX86SimdFeature3dnowPlus 0x0000000000000010ull
770 
772  #define YepX86SimdFeature3dnowPrefetch 0x0000000000000020ull
773 
775  #define YepX86SimdFeature3dnowGeode 0x0000000000000040ull
776 
779  #define YepX86SimdFeatureSSE 0x0000000000000080ull
780 
783  #define YepX86SimdFeatureSSE2 0x0000000000000100ull
784 
787  #define YepX86SimdFeatureSSE3 0x0000000000000200ull
788 
791  #define YepX86SimdFeatureSSSE3 0x0000000000000400ull
792 
795  #define YepX86SimdFeatureSSE4_1 0x0000000000000800ull
796 
799  #define YepX86SimdFeatureSSE4_2 0x0000000000001000ull
800 
803  #define YepX86SimdFeatureSSE4A 0x0000000000002000ull
804 
807  #define YepX86SimdFeatureAVX 0x0000000000004000ull
808 
811  #define YepX86SimdFeatureAVX2 0x0000000000008000ull
812 
815  #define YepX86SimdFeatureXOP 0x0000000000010000ull
816 
819  #define YepX86SimdFeatureF16C 0x0000000000020000ull
820 
823  #define YepX86SimdFeatureFMA3 0x0000000000040000ull
824 
827  #define YepX86SimdFeatureFMA4 0x0000000000080000ull
828 
830  #define YepX86SimdFeatureKNF 0x0000000000100000ull
831 
834  #define YepX86SimdFeatureKNC 0x0000000000200000ull
835 
842  #define YepX86SystemFeatureFPU 0x0000000100000000ull
843 
845  #define YepX86SystemFeatureSSE 0x0000000200000000ull
846 
848  #define YepX86SystemFeatureAVX 0x0000000400000000ull
849 
851  #define YepX86SystemFeatureMisalignedSSE 0x0000000800000000ull
852 
854  #define YepX86SystemFeatureACE 0x0000001000000000ull
855 
857  #define YepX86SystemFeatureACE2 0x0000002000000000ull
858 
860  #define YepX86SystemFeatureRNG 0x0000004000000000ull
861 
863  #define YepX86SystemFeaturePHE 0x0000008000000000ull
864 
866  #define YepX86SystemFeaturePMM 0x0000010000000000ull
867 
869  #define YepX86SystemFeatureMIC 0x0000020000000000ull
870 
877  #define YepIA64IsaFeatureBrl 0x0000000000000001ull
878 
880  #define YepIA64IsaFeatureAtomic128 0x0000000000000002ull
881 
883  #define YepIA64IsaFeatureClz 0x0000000000000004ull
884 
886  #define YepIA64IsaFeatureMpy4 0x0000000000000008ull
887 
894  #define YepARMIsaFeatureV4 0x0000000000000001ull
895 
897  #define YepARMIsaFeatureV5 0x0000000000000002ull
898 
900  #define YepARMIsaFeatureV5E 0x0000000000000004ull
901 
903  #define YepARMIsaFeatureV6 0x0000000000000008ull
904 
906  #define YepARMIsaFeatureV6K 0x0000000000000010ull
907 
909  #define YepARMIsaFeatureV7 0x0000000000000020ull
910 
912  #define YepARMIsaFeatureV7MP 0x0000000000000040ull
913 
915  #define YepARMIsaFeatureThumb 0x0000000000000080ull
916 
918  #define YepARMIsaFeatureThumb2 0x0000000000000100ull
919 
921  #define YepARMIsaFeatureThumbEE 0x0000000000000200ull
922 
924  #define YepARMIsaFeatureJazelle 0x0000000000000400ull
925 
927  #define YepARMIsaFeatureFPA 0x0000000000000800ull
928 
930  #define YepARMIsaFeatureVFP 0x0000000000001000ull
931 
933  #define YepARMIsaFeatureVFP2 0x0000000000002000ull
934 
936  #define YepARMIsaFeatureVFP3 0x0000000000004000ull
937 
939  #define YepARMIsaFeatureVFPd32 0x0000000000008000ull
940 
942  #define YepARMIsaFeatureVFP3HP 0x0000000000010000ull
943 
945  #define YepARMIsaFeatureVFP4 0x0000000000020000ull
946 
948  #define YepARMIsaFeatureDiv 0x0000000000040000ull
949 
951  #define YepARMIsaFeatureArmada 0x0000000000080000ull
952 
959  #define YepARMSimdFeatureXScale 0x0000000000000001ull
960 
962  #define YepARMSimdFeatureWMMX 0x0000000000000002ull
963 
965  #define YepARMSimdFeatureWMMX2 0x0000000000000004ull
966 
968  #define YepARMSimdFeatureNEON 0x0000000000000008ull
969 
971  #define YepARMSimdFeatureNEONHP 0x0000000000000010ull
972 
974  #define YepARMSimdFeatureNEON2 0x0000000000000020ull
975 
983  #define YepARMSystemFeatureVFPVectorMode 0x0000000100000000ull
984 
993  #define YepMIPSIsaFeatureR2 0x0000000000000001ull
994 
997  #define YepMIPSIsaFeatureMicroMIPS 0x0000000000000002ull
998 
1000  #define YepMIPSIsaFeatureFPU 0x0000000000000004ull
1001 
1003  #define YepMIPSIsaFeatureMT 0x0000000000000008ull
1004 
1006  #define YepMIPSIsaFeatureMIPS16 0x0000000000000010ull
1007 
1009  #define YepMIPSIsaFeatureSmartMIPS 0x0000000000000020ull
1010 
1017  #define YepMIPSSimdFeatureMDMX 0x0000000000000001ull
1018 
1020  #define YepMIPSSimdFeatureMIPS3D 0x0000000000000002ull
1021 
1023  #define YepMIPSSimdFeaturePairedSingle 0x0000000000000004ull
1024 
1026  #define YepMIPSSimdFeatureDSP 0x0000000000000008ull
1027 
1029  #define YepMIPSSimdFeatureDSP2 0x0000000000000010ull
1030 
1033  #define YepMIPSSimdFeatureGodsonMMX 0x0000000000000020ull
1034 
1036  #define YepMIPSSimdFeatureIMX 0x0000000000000040ull
1037 
1039 #endif
1040 
1041 #define YEP_ENUMERATION_ISA_FEATURE_FOR_ARCHITECTURE(architecture) (256 + (architecture))
1042 #define YEP_ENUMERATION_SIMD_FEATURE_FOR_ARCHITECTURE(architecture) (512 + (architecture))
1043 #define YEP_ENUMERATION_SYSTEM_FEATURE_FOR_ARCHITECTURE(architecture) (768 + (architecture))
1044 
1062  YepEnumerationGenericIsaFeature = YEP_ENUMERATION_ISA_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureUnknown),
1064  YepEnumerationGenericSimdFeature = YEP_ENUMERATION_SIMD_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureUnknown),
1066  YepEnumerationGenericSystemFeature = YEP_ENUMERATION_SYSTEM_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureUnknown),
1068  YepEnumerationX86IsaFeature = YEP_ENUMERATION_ISA_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureX86),
1070  YepEnumerationX86SimdFeature = YEP_ENUMERATION_SIMD_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureX86),
1072  YepEnumerationX86SystemFeature = YEP_ENUMERATION_SYSTEM_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureX86),
1074  YepEnumerationARMIsaFeature = YEP_ENUMERATION_ISA_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureARM),
1076  YepEnumerationARMSimdFeature = YEP_ENUMERATION_SIMD_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureARM),
1078  YepEnumerationARMSystemFeature = YEP_ENUMERATION_SYSTEM_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureARM),
1080  YepEnumerationMIPSIsaFeature = YEP_ENUMERATION_ISA_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureMIPS),
1082  YepEnumerationMIPSSimdFeature = YEP_ENUMERATION_SIMD_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureMIPS),
1084  YepEnumerationMIPSSystemFeature = YEP_ENUMERATION_SYSTEM_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureMIPS),
1086  YepEnumerationPowerPCIsaFeature = YEP_ENUMERATION_ISA_FEATURE_FOR_ARCHITECTURE(YepCpuArchitecturePowerPC),
1088  YepEnumerationPowerPCSimdFeature = YEP_ENUMERATION_SIMD_FEATURE_FOR_ARCHITECTURE(YepCpuArchitecturePowerPC),
1090  YepEnumerationPowerPCSystemFeature = YEP_ENUMERATION_SYSTEM_FEATURE_FOR_ARCHITECTURE(YepCpuArchitecturePowerPC),
1092  YepEnumerationIA64IsaFeature = YEP_ENUMERATION_ISA_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureIA64),
1094  YepEnumerationIA64SimdFeature = YEP_ENUMERATION_SIMD_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureIA64),
1096  YepEnumerationIA64SystemFeature = YEP_ENUMERATION_SYSTEM_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureIA64),
1098  YepEnumerationSPARCIsaFeature = YEP_ENUMERATION_ISA_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureSPARC),
1100  YepEnumerationSPARCSimdFeature = YEP_ENUMERATION_SIMD_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureSPARC),
1102  YepEnumerationSPARCSystemFeature = YEP_ENUMERATION_SYSTEM_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureSPARC)
1103 };
1104 
1111  Yep64u state[6];
1112 };
1113 
1150 };