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 2-clause 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  *
13  * 1. Redistributions of source code must retain the above copyright notice, this
14  * list of conditions and the following disclaimer.
15  * 2. Redistributions in binary form must reproduce the above copyright notice,
16  * this list of conditions and the following disclaimer in the documentation
17  * and/or other materials provided with the distribution.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
23  * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
26  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  *
30  * The views and conclusions contained in the software and documentation are those
31  * of the authors and should not be interpreted as representing official policies,
32  * either expressed or implied, of the Yeppp! Project.
33  */
34 
35 #pragma once
36 
76 #include <yepPredefines.h>
77 #include <stddef.h>
78 #ifndef __cplusplus
79  #if defined(YEP_MICROSOFT_COMPILER)
80  /* OMG! I can't believe it still doesn't have stdbool.h in 2012! */
81  typedef unsigned char bool;
82  #define false 0
83  #define true 1
84  #else
85  #include <stdbool.h>
86  #endif
87 #endif
88 
89 typedef unsigned char Yep8u;
90 typedef unsigned short Yep16u;
91 typedef unsigned int Yep32u;
92 typedef unsigned long long Yep64u;
93 
94 typedef signed char Yep8s;
95 typedef signed short Yep16s;
96 typedef signed int Yep32s;
97 typedef signed long long Yep64s;
98 
99 typedef float Yep32f;
100 typedef double Yep64f;
101 
102 typedef size_t YepSize;
103 
104 typedef bool YepBoolean;
105 
106 struct Yep16f {
107  signed sign : 1;
108  unsigned exponent : 5;
109  unsigned mantissa : 10;
110 };
111 
112 struct Yep16fc {
113  struct Yep16f re;
114  struct Yep16f im;
115 };
116 
117 struct Yep32fc {
118  Yep32f re;
119  Yep32f im;
120 };
121 
122 struct Yep64fc {
123  Yep64f re;
124  Yep64f im;
125 };
126 
132  Yep32u major;
134  Yep32u minor;
136  Yep32u patchLevel;
138  Yep32u build;
140  const char* releaseName;
141 };
142 
145 enum YepStatus {
168 };
169 
190 };
191 
198 
199  /* x86/x86-64 CPUs */
200 
239 
240  /* ARM CPUs */
241 
255 
256  /* MIPS CPUs */
257 
264 
265  /* PowerPC CPUs */
266 
274 
275  /* SPARC CPUs */
276 
286 };
287 
298 
327 
332 
355 
360 
377 
382 
387 
390 
395 
402 
407 };
408 
409 #ifdef __cplusplus
410  const Yep64u YepIsaFeaturesDefault = 0x0000000000000000ull;
411  const Yep64u YepSimdFeaturesDefault = 0x0000000000000000ull;
412  const Yep64u YepSystemFeaturesDefault = 0x0000000000000000ull;
413 
414  const Yep64u YepSystemFeatureCycleCounter = 0x0000000000000001ull;
415  const Yep64u YepSystemFeatureCycleCounter64Bit = 0x0000000000000002ull;
416  const Yep64u YepSystemFeatureAddressSpace64Bit = 0x0000000000000004ull;
417  const Yep64u YepSystemFeatureGPRegisters64Bit = 0x0000000000000008ull;
418  const Yep64u YepSystemFeatureMisalignedAccess = 0x0000000000000010ull;
419  const Yep64u YepSystemFeatureSingleThreaded = 0x0000000000000020ull;
420 
421  /* x86/x86-64 ISA Extensions */
422  const Yep64u YepX86IsaFeatureFPU = 0x0000000000000001ull;
423  const Yep64u YepX86IsaFeatureCpuid = 0x0000000000000002ull;
424  const Yep64u YepX86IsaFeatureRdtsc = 0x0000000000000004ull;
425  const Yep64u YepX86IsaFeatureCMOV = 0x0000000000000008ull;
426  const Yep64u YepX86IsaFeatureSYSENTER = 0x0000000000000010ull;
427  const Yep64u YepX86IsaFeatureSYSCALL = 0x0000000000000020ull;
428  const Yep64u YepX86IsaFeatureMSR = 0x0000000000000040ull;
429  const Yep64u YepX86IsaFeatureClflush = 0x0000000000000080ull;
430  const Yep64u YepX86IsaFeatureMONITOR = 0x0000000000000100ull;
431  const Yep64u YepX86IsaFeatureFXSAVE = 0x0000000000000200ull;
432  const Yep64u YepX86IsaFeatureXSAVE = 0x0000000000000400ull;
433  const Yep64u YepX86IsaFeatureCmpxchg8b = 0x0000000000000800ull;
434  const Yep64u YepX86IsaFeatureCmpxchg16b = 0x0000000000001000ull;
435  const Yep64u YepX86IsaFeatureX64 = 0x0000000000002000ull;
436  const Yep64u YepX86IsaFeatureLahfSahf64 = 0x0000000000004000ull;
437  const Yep64u YepX86IsaFeatureFsGsBase = 0x0000000000008000ull;
438  const Yep64u YepX86IsaFeatureMovbe = 0x0000000000010000ull;
439  const Yep64u YepX86IsaFeaturePopcnt = 0x0000000000020000ull;
440  const Yep64u YepX86IsaFeatureLzcnt = 0x0000000000040000ull;
441  const Yep64u YepX86IsaFeatureBMI = 0x0000000000080000ull;
442  const Yep64u YepX86IsaFeatureBMI2 = 0x0000000000100000ull;
443  const Yep64u YepX86IsaFeatureTBM = 0x0000000000200000ull;
444  const Yep64u YepX86IsaFeatureRdrand = 0x0000000000400000ull;
445  const Yep64u YepX86IsaFeatureACE = 0x0000000000800000ull;
446  const Yep64u YepX86IsaFeatureACE2 = 0x0000000001000000ull;
447  const Yep64u YepX86IsaFeatureRNG = 0x0000000002000000ull;
448  const Yep64u YepX86IsaFeaturePHE = 0x0000000004000000ull;
449  const Yep64u YepX86IsaFeaturePMM = 0x0000000008000000ull;
450  const Yep64u YepX86IsaFeatureAES = 0x0000000010000000ull;
451  const Yep64u YepX86IsaFeaturePclmulqdq = 0x0000000020000000ull;
452  const Yep64u YepX86IsaFeatureRdtscp = 0x0000000040000000ull;
453  const Yep64u YepX86IsaFeatureLWP = 0x0000000080000000ull;
454  const Yep64u YepX86IsaFeatureHLE = 0x0000000100000000ull;
455  const Yep64u YepX86IsaFeatureRTM = 0x0000000200000000ull;
456  const Yep64u YepX86IsaFeatureXtest = 0x0000000400000000ull;
457  const Yep64u YepX86IsaFeatureRdseed = 0x0000000800000000ull;
458  const Yep64u YepX86IsaFeatureADX = 0x0000001000000000ull;
459 
460  const Yep64u YepX86SimdFeatureMMX = 0x0000000000000001ull;
461  const Yep64u YepX86SimdFeatureMMXPlus = 0x0000000000000002ull;
462  const Yep64u YepX86SimdFeatureEMMX = 0x0000000000000004ull;
463  const Yep64u YepX86SimdFeature3dnow = 0x0000000000000008ull;
464  const Yep64u YepX86SimdFeature3dnowPlus = 0x0000000000000010ull;
465  const Yep64u YepX86SimdFeature3dnowPrefetch = 0x0000000000000020ull;
466  const Yep64u YepX86SimdFeature3dnowGeode = 0x0000000000000040ull;
467  const Yep64u YepX86SimdFeatureSSE = 0x0000000000000080ull;
468  const Yep64u YepX86SimdFeatureSSE2 = 0x0000000000000100ull;
469  const Yep64u YepX86SimdFeatureSSE3 = 0x0000000000000200ull;
470  const Yep64u YepX86SimdFeatureSSSE3 = 0x0000000000000400ull;
471  const Yep64u YepX86SimdFeatureSSE4_1 = 0x0000000000000800ull;
472  const Yep64u YepX86SimdFeatureSSE4_2 = 0x0000000000001000ull;
473  const Yep64u YepX86SimdFeatureSSE4A = 0x0000000000002000ull;
474  const Yep64u YepX86SimdFeatureAVX = 0x0000000000004000ull;
475  const Yep64u YepX86SimdFeatureAVX2 = 0x0000000000008000ull;
476  const Yep64u YepX86SimdFeatureXOP = 0x0000000000010000ull;
477  const Yep64u YepX86SimdFeatureF16C = 0x0000000000020000ull;
478  const Yep64u YepX86SimdFeatureFMA3 = 0x0000000000040000ull;
479  const Yep64u YepX86SimdFeatureFMA4 = 0x0000000000080000ull;
480 
481  const Yep64u YepX86SystemFeatureFPU = 0x0000000100000000ull;
482  const Yep64u YepX86SystemFeatureSSE = 0x0000000200000000ull;
483  const Yep64u YepX86SystemFeatureAVX = 0x0000000400000000ull;
484  const Yep64u YepX86SystemFeatureMisalignedSSE = 0x0000000800000000ull;
485  const Yep64u YepX86SystemFeatureACE = 0x0000001000000000ull;
486  const Yep64u YepX86SystemFeatureACE2 = 0x0000002000000000ull;
487  const Yep64u YepX86SystemFeatureRNG = 0x0000004000000000ull;
488  const Yep64u YepX86SystemFeaturePHE = 0x0000008000000000ull;
489  const Yep64u YepX86SystemFeaturePMM = 0x0000010000000000ull;
490 
491  /* IA64 ISA Extensions */
492  const Yep64u YepIA64IsaFeatureBrl = 0x0000000000000001ull; // Long branch instruction
493  const Yep64u YepIA64IsaFeatureAtomic128 = 0x0000000000000002ull; // Atomic 128-bit (16-byte) loads, stores, and CAS
494  const Yep64u YepIA64IsaFeatureClz = 0x0000000000000004ull; // Count leading zeros
495  const Yep64u YepIA64IsaFeatureMpy4 = 0x0000000000000008ull; // Truncated 32-bit multiplication (mpy4 and mpyshl4) instructions.
496 
497  /* ARM ISA Extensions */
498  const Yep64u YepARMIsaFeatureV4 = 0x0000000000000001ull;
499  const Yep64u YepARMIsaFeatureV5 = 0x0000000000000002ull;
500  const Yep64u YepARMIsaFeatureV5E = 0x0000000000000004ull;
501  const Yep64u YepARMIsaFeatureV6 = 0x0000000000000008ull;
502  const Yep64u YepARMIsaFeatureV6K = 0x0000000000000010ull;
503  const Yep64u YepARMIsaFeatureV7 = 0x0000000000000020ull;
504  const Yep64u YepARMIsaFeatureV7MP = 0x0000000000000040ull;
505  const Yep64u YepARMIsaFeatureThumb = 0x0000000000000080ull;
506  const Yep64u YepARMIsaFeatureThumb2 = 0x0000000000000100ull;
507  const Yep64u YepARMIsaFeatureThumbEE = 0x0000000000000200ull;
508  const Yep64u YepARMIsaFeatureJazelle = 0x0000000000000400ull;
509  const Yep64u YepARMIsaFeatureFPA = 0x0000000000000800ull;
510  const Yep64u YepARMIsaFeatureVFP = 0x0000000000001000ull;
511  const Yep64u YepARMIsaFeatureVFP2 = 0x0000000000002000ull;
512  const Yep64u YepARMIsaFeatureVFP3 = 0x0000000000004000ull;
513  const Yep64u YepARMIsaFeatureVFPd32 = 0x0000000000008000ull;
514  const Yep64u YepARMIsaFeatureVFP3HP = 0x0000000000010000ull;
515  const Yep64u YepARMIsaFeatureVFP4 = 0x0000000000020000ull;
516  const Yep64u YepARMIsaFeatureDiv = 0x0000000000040000ull;
517  const Yep64u YepARMIsaFeatureArmada = 0x0000000000080000ull;
518 
519  const Yep64u YepARMSimdFeatureXScale = 0x0000000000000001ull;
520  const Yep64u YepARMSimdFeatureWMMX = 0x0000000000000002ull;
521  const Yep64u YepARMSimdFeatureWMMX2 = 0x0000000000000004ull;
522  const Yep64u YepARMSimdFeatureNEON = 0x0000000000000008ull;
523  const Yep64u YepARMSimdFeatureNEONHP = 0x0000000000000010ull;
524  const Yep64u YepARMSimdFeatureNEON2 = 0x0000000000000020ull;
525 
526  const Yep64u YepARMSystemFeatureVFPVectorMode = 0x0000000100000000ull;
527 
528  /* MIPS ISA Extensions */
529  const Yep64u YepMIPSIsaFeatureR2 = 0x0000000000000001ull;
530  const Yep64u YepMIPSIsaFeatureMicroMIPS = 0x0000000000000002ull;
531  const Yep64u YepMIPSIsaFeatureFPU = 0x0000000000000004ull;
532  const Yep64u YepMIPSIsaFeatureMT = 0x0000000000000008ull;
533  const Yep64u YepMIPSIsaFeatureMIPS16 = 0x0000000000000010ull;
534  const Yep64u YepMIPSIsaFeatureSmartMIPS = 0x0000000000000020ull;
535 
536  const Yep64u YepMIPSSimdFeatureMDMX = 0x0000000000000001ull;
537  const Yep64u YepMIPSSimdFeatureMIPS3D = 0x0000000000000002ull;
538  const Yep64u YepMIPSSimdFeaturePairedSingle = 0x0000000000000004ull;
539  const Yep64u YepMIPSSimdFeatureDSP = 0x0000000000000008ull;
540  const Yep64u YepMIPSSimdFeatureDSP2 = 0x0000000000000010ull;
541  const Yep64u YepMIPSSimdFeatureGodsonMMX = 0x0000000000000020ull;
542  const Yep64u YepMIPSSimdFeatureIMX = 0x0000000000000040ull;
543 
544 #else
545  #define YepIsaFeaturesDefault 0x0000000000000000ull
546  #define YepSimdFeaturesDefault 0x0000000000000000ull
547  #define YepSystemFeaturesDefault 0x0000000000000000ull
548 
554  #define YepSystemFeatureCycleCounter 0x0000000000000001ull
555 
557  #define YepSystemFeatureCycleCounter64Bit 0x0000000000000002ull
558 
560  #define YepSystemFeatureAddressSpace64Bit 0x0000000000000004ull
561 
563  #define YepSystemFeatureGPRegisters64Bit 0x0000000000000008ull
564 
566  #define YepSystemFeatureMisalignedAccess 0x0000000000000010ull
567 
569  #define YepSystemFeatureSingleThreaded 0x0000000000000020ull
570 
578  #define YepX86IsaFeatureFPU 0x0000000000000001ull
579 
581  #define YepX86IsaFeatureCpuid 0x0000000000000002ull
582 
584  #define YepX86IsaFeatureRdtsc 0x0000000000000004ull
585 
587  #define YepX86IsaFeatureCMOV 0x0000000000000008ull
588 
590  #define YepX86IsaFeatureSYSENTER 0x0000000000000010ull
591 
593  #define YepX86IsaFeatureSYSCALL 0x0000000000000020ull
594 
596  #define YepX86IsaFeatureMSR 0x0000000000000040ull
597 
599  #define YepX86IsaFeatureClflush 0x0000000000000080ull
600 
602  #define YepX86IsaFeatureMONITOR 0x0000000000000100ull
603 
605  #define YepX86IsaFeatureFXSAVE 0x0000000000000200ull
606 
608  #define YepX86IsaFeatureXSAVE 0x0000000000000400ull
609 
611  #define YepX86IsaFeatureCmpxchg8b 0x0000000000000800ull
612 
614  #define YepX86IsaFeatureCmpxchg16b 0x0000000000001000ull
615 
617  #define YepX86IsaFeatureX64 0x0000000000002000ull
618 
620  #define YepX86IsaFeatureLahfSahf64 0x0000000000004000ull
621 
623  #define YepX86IsaFeatureFsGsBase 0x0000000000008000ull
624 
626  #define YepX86IsaFeatureMovbe 0x0000000000010000ull
627 
629  #define YepX86IsaFeaturePopcnt 0x0000000000020000ull
630 
632  #define YepX86IsaFeatureLzcnt 0x0000000000040000ull
633 
635  #define YepX86IsaFeatureBMI 0x0000000000080000ull
636 
638  #define YepX86IsaFeatureBMI2 0x0000000000100000ull
639 
641  #define YepX86IsaFeatureTBM 0x0000000000200000ull
642 
644  #define YepX86IsaFeatureRdrand 0x0000000000400000ull
645 
647  #define YepX86IsaFeatureACE 0x0000000000800000ull
648 
650  #define YepX86IsaFeatureACE2 0x0000000001000000ull
651 
653  #define YepX86IsaFeatureRNG 0x0000000002000000ull
654 
656  #define YepX86IsaFeaturePHE 0x0000000004000000ull
657 
659  #define YepX86IsaFeaturePMM 0x0000000008000000ull
660 
662  #define YepX86IsaFeatureAES 0x0000000010000000ull
663 
665  #define YepX86IsaFeaturePclmulqdq 0x0000000020000000ull
666 
668  #define YepX86IsaFeatureRdtscp 0x0000000040000000ull
669 
671  #define YepX86IsaFeatureLWP 0x0000000080000000ull
672 
674  #define YepX86IsaFeatureHLE 0x0000000100000000ull
675 
677  #define YepX86IsaFeatureRTM 0x0000000200000000ull
678 
680  #define YepX86IsaFeatureXtest 0x0000000400000000ull
681 
683  #define YepX86IsaFeatureRdseed 0x0000000800000000ull
684 
686  #define YepX86IsaFeatureADX 0x0000001000000000ull
687 
694  #define YepX86SimdFeatureMMX 0x0000000000000001ull
695 
697  #define YepX86SimdFeatureMMXPlus 0x0000000000000002ull
698 
700  #define YepX86SimdFeatureEMMX 0x0000000000000004ull
701 
703  #define YepX86SimdFeature3dnow 0x0000000000000008ull
704 
706  #define YepX86SimdFeature3dnowPlus 0x0000000000000010ull
707 
709  #define YepX86SimdFeature3dnowPrefetch 0x0000000000000020ull
710 
712  #define YepX86SimdFeature3dnowGeode 0x0000000000000040ull
713 
715  #define YepX86SimdFeatureSSE 0x0000000000000080ull
716 
718  #define YepX86SimdFeatureSSE2 0x0000000000000100ull
719 
721  #define YepX86SimdFeatureSSE3 0x0000000000000200ull
722 
724  #define YepX86SimdFeatureSSSE3 0x0000000000000400ull
725 
727  #define YepX86SimdFeatureSSE4_1 0x0000000000000800ull
728 
730  #define YepX86SimdFeatureSSE4_2 0x0000000000001000ull
731 
733  #define YepX86SimdFeatureSSE4A 0x0000000000002000ull
734 
736  #define YepX86SimdFeatureAVX 0x0000000000004000ull
737 
739  #define YepX86SimdFeatureAVX2 0x0000000000008000ull
740 
742  #define YepX86SimdFeatureXOP 0x0000000000010000ull
743 
745  #define YepX86SimdFeatureF16C 0x0000000000020000ull
746 
748  #define YepX86SimdFeatureFMA3 0x0000000000040000ull
749 
751  #define YepX86SimdFeatureFMA4 0x0000000000080000ull
752 
759  #define YepX86SystemFeatureFPU 0x0000000100000000ull
760 
762  #define YepX86SystemFeatureSSE 0x0000000200000000ull
763 
765  #define YepX86SystemFeatureAVX 0x0000000400000000ull
766 
768  #define YepX86SystemFeatureMisalignedSSE 0x0000000800000000ull
769 
771  #define YepX86SystemFeatureACE 0x0000001000000000ull
772 
774  #define YepX86SystemFeatureACE2 0x0000002000000000ull
775 
777  #define YepX86SystemFeatureRNG 0x0000004000000000ull
778 
780  #define YepX86SystemFeaturePHE 0x0000008000000000ull
781 
783  #define YepX86SystemFeaturePMM 0x0000010000000000ull
784 
791  #define YepIA64IsaFeatureBrl 0x0000000000000001ull
792 
794  #define YepIA64IsaFeatureAtomic128 0x0000000000000002ull
795 
797  #define YepIA64IsaFeatureClz 0x0000000000000004ull
798 
800  #define YepIA64IsaFeatureMpy4 0x0000000000000008ull
801 
808  #define YepARMIsaFeatureV4 0x0000000000000001ull
809 
811  #define YepARMIsaFeatureV5 0x0000000000000002ull
812 
814  #define YepARMIsaFeatureV5E 0x0000000000000004ull
815 
817  #define YepARMIsaFeatureV6 0x0000000000000008ull
818 
820  #define YepARMIsaFeatureV6K 0x0000000000000010ull
821 
823  #define YepARMIsaFeatureV7 0x0000000000000020ull
824 
826  #define YepARMIsaFeatureV7MP 0x0000000000000040ull
827 
829  #define YepARMIsaFeatureThumb 0x0000000000000080ull
830 
832  #define YepARMIsaFeatureThumb2 0x0000000000000100ull
833 
835  #define YepARMIsaFeatureThumbEE 0x0000000000000200ull
836 
838  #define YepARMIsaFeatureJazelle 0x0000000000000400ull
839 
841  #define YepARMIsaFeatureFPA 0x0000000000000800ull
842 
844  #define YepARMIsaFeatureVFP 0x0000000000001000ull
845 
847  #define YepARMIsaFeatureVFP2 0x0000000000002000ull
848 
850  #define YepARMIsaFeatureVFP3 0x0000000000004000ull
851 
853  #define YepARMIsaFeatureVFPd32 0x0000000000008000ull
854 
856  #define YepARMIsaFeatureVFP3HP 0x0000000000010000ull
857 
859  #define YepARMIsaFeatureVFP4 0x0000000000020000ull
860 
862  #define YepARMIsaFeatureDiv 0x0000000000040000ull
863 
865  #define YepARMIsaFeatureArmada 0x0000000000080000ull
866 
873  #define YepARMSimdFeatureXScale 0x0000000000000001ull
874 
876  #define YepARMSimdFeatureWMMX 0x0000000000000002ull
877 
879  #define YepARMSimdFeatureWMMX2 0x0000000000000004ull
880 
882  #define YepARMSimdFeatureNEON 0x0000000000000008ull
883 
885  #define YepARMSimdFeatureNEONHP 0x0000000000000010ull
886 
888  #define YepARMSimdFeatureNEON2 0x0000000000000020ull
889 
897  #define YepARMSystemFeatureVFPVectorMode 0x0000000100000000ull
898 
907  #define YepMIPSIsaFeatureR2 0x0000000000000001ull
908 
911  #define YepMIPSIsaFeatureMicroMIPS 0x0000000000000002ull
912 
914  #define YepMIPSIsaFeatureFPU 0x0000000000000004ull
915 
917  #define YepMIPSIsaFeatureMT 0x0000000000000008ull
918 
920  #define YepMIPSIsaFeatureMIPS16 0x0000000000000010ull
921 
923  #define YepMIPSIsaFeatureSmartMIPS 0x0000000000000020ull
924 
931  #define YepMIPSSimdFeatureMDMX 0x0000000000000001ull
932 
934  #define YepMIPSSimdFeatureMIPS3D 0x0000000000000002ull
935 
937  #define YepMIPSSimdFeaturePairedSingle 0x0000000000000004ull
938 
940  #define YepMIPSSimdFeatureDSP 0x0000000000000008ull
941 
943  #define YepMIPSSimdFeatureDSP2 0x0000000000000010ull
944 
947  #define YepMIPSSimdFeatureGodsonMMX 0x0000000000000020ull
948 
950  #define YepMIPSSimdFeatureIMX 0x0000000000000040ull
951 
953 #endif
954 
955 #define YEP_ENUMERATION_ISA_FEATURE_FOR_ARCHITECTURE(architecture) (256 + (architecture))
956 #define YEP_ENUMERATION_SIMD_FEATURE_FOR_ARCHITECTURE(architecture) (512 + (architecture))
957 #define YEP_ENUMERATION_SYSTEM_FEATURE_FOR_ARCHITECTURE(architecture) (768 + (architecture))
958 
972  YepEnumerationGenericIsaFeature = YEP_ENUMERATION_ISA_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureUnknown),
974  YepEnumerationGenericSimdFeature = YEP_ENUMERATION_SIMD_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureUnknown),
976  YepEnumerationGenericSystemFeature = YEP_ENUMERATION_SYSTEM_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureUnknown),
978  YepEnumerationX86IsaFeature = YEP_ENUMERATION_ISA_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureX86),
980  YepEnumerationX86SimdFeature = YEP_ENUMERATION_SIMD_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureX86),
982  YepEnumerationX86SystemFeature = YEP_ENUMERATION_SYSTEM_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureX86),
984  YepEnumerationARMIsaFeature = YEP_ENUMERATION_ISA_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureARM),
986  YepEnumerationARMSimdFeature = YEP_ENUMERATION_SIMD_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureARM),
988  YepEnumerationARMSystemFeature = YEP_ENUMERATION_SYSTEM_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureARM),
990  YepEnumerationMIPSIsaFeature = YEP_ENUMERATION_ISA_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureMIPS),
992  YepEnumerationMIPSSimdFeature = YEP_ENUMERATION_SIMD_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureMIPS),
994  YepEnumerationMIPSSystemFeature = YEP_ENUMERATION_SYSTEM_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureMIPS),
996  YepEnumerationPowerPCIsaFeature = YEP_ENUMERATION_ISA_FEATURE_FOR_ARCHITECTURE(YepCpuArchitecturePowerPC),
998  YepEnumerationPowerPCSimdFeature = YEP_ENUMERATION_SIMD_FEATURE_FOR_ARCHITECTURE(YepCpuArchitecturePowerPC),
1000  YepEnumerationPowerPCSystemFeature = YEP_ENUMERATION_SYSTEM_FEATURE_FOR_ARCHITECTURE(YepCpuArchitecturePowerPC),
1002  YepEnumerationIA64IsaFeature = YEP_ENUMERATION_ISA_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureIA64),
1004  YepEnumerationIA64SimdFeature = YEP_ENUMERATION_SIMD_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureIA64),
1006  YepEnumerationIA64SystemFeature = YEP_ENUMERATION_SYSTEM_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureIA64),
1008  YepEnumerationSPARCIsaFeature = YEP_ENUMERATION_ISA_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureSPARC),
1010  YepEnumerationSPARCSimdFeature = YEP_ENUMERATION_SIMD_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureSPARC),
1012  YepEnumerationSPARCSystemFeature = YEP_ENUMERATION_SYSTEM_FEATURE_FOR_ARCHITECTURE(YepCpuArchitectureSPARC)
1013 };