Coverage Report

Created: 2026-07-25 06:13

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/keystone/llvm/lib/Target/PowerPC/PPCGenSubtargetInfo.inc
Line
Count
Source
1
/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2
|*                                                                            *|
3
|* Subtarget Enumeration Source Fragment                                      *|
4
|*                                                                            *|
5
|* Automatically generated file, do not edit!                                 *|
6
|*                                                                            *|
7
\*===----------------------------------------------------------------------===*/
8
9
10
#ifdef GET_SUBTARGETINFO_ENUM
11
#undef GET_SUBTARGETINFO_ENUM
12
namespace llvm_ks {
13
namespace PPC {
14
enum : uint64_t {
15
  DeprecatedDST = 0,
16
  Directive32 = 1,
17
  Directive64 = 2,
18
  Directive440 = 3,
19
  Directive601 = 4,
20
  Directive602 = 5,
21
  Directive603 = 6,
22
  Directive604 = 7,
23
  Directive620 = 8,
24
  Directive750 = 9,
25
  Directive970 = 10,
26
  Directive7400 = 11,
27
  DirectiveA2 = 12,
28
  DirectiveE500mc = 13,
29
  DirectiveE5500 = 14,
30
  DirectivePwr3 = 15,
31
  DirectivePwr4 = 16,
32
  DirectivePwr5 = 17,
33
  DirectivePwr5x = 18,
34
  DirectivePwr6 = 19,
35
  DirectivePwr6x = 20,
36
  DirectivePwr7 = 21,
37
  DirectivePwr8 = 22,
38
  Feature64Bit = 23,
39
  Feature64BitRegs = 24,
40
  FeatureAltivec = 25,
41
  FeatureBPERMD = 26,
42
  FeatureBookE = 27,
43
  FeatureCMPB = 28,
44
  FeatureCRBits = 29,
45
  FeatureDirectMove = 30,
46
  FeatureE500 = 31,
47
  FeatureExtDiv = 32,
48
  FeatureFCPSGN = 33,
49
  FeatureFPCVT = 34,
50
  FeatureFPRND = 35,
51
  FeatureFRE = 36,
52
  FeatureFRES = 37,
53
  FeatureFRSQRTE = 38,
54
  FeatureFRSQRTES = 39,
55
  FeatureFSqrt = 40,
56
  FeatureFloat128 = 41,
57
  FeatureFusion = 42,
58
  FeatureHTM = 43,
59
  FeatureICBT = 44,
60
  FeatureISEL = 45,
61
  FeatureInvariantFunctionDescriptors = 46,
62
  FeatureLDBRX = 47,
63
  FeatureLFIWAX = 48,
64
  FeatureMFOCRF = 49,
65
  FeatureMFTB = 50,
66
  FeatureMSYNC = 51,
67
  FeatureP8Altivec = 52,
68
  FeatureP8Crypto = 53,
69
  FeatureP8Vector = 54,
70
  FeaturePOPCNTD = 55,
71
  FeaturePPC4xx = 56,
72
  FeaturePPC6xx = 57,
73
  FeaturePartwordAtomic = 58,
74
  FeatureQPX = 59,
75
  FeatureRecipPrec = 60,
76
  FeatureSPE = 61,
77
  FeatureSTFIWX = 62,
78
  FeatureSoftFloat = 63,
79
  FeatureVSX = 64
80
};
81
}
82
} // end llvm namespace
83
#endif // GET_SUBTARGETINFO_ENUM
84
85
86
#ifdef GET_SUBTARGETINFO_MC_DESC
87
#undef GET_SUBTARGETINFO_MC_DESC
88
namespace llvm_ks {
89
// Sorted (by key) array of values for CPU features.
90
extern const llvm_ks::SubtargetFeatureKV PPCFeatureKV[] = {
91
  { "64bit", "Enable 64-bit instructions", { PPC::Feature64Bit }, { } },
92
  { "64bitregs", "Enable 64-bit registers usage for ppc32 [beta]", { PPC::Feature64BitRegs }, { } },
93
  { "altivec", "Enable Altivec instructions", { PPC::FeatureAltivec }, { } },
94
  { "booke", "Enable Book E instructions", { PPC::FeatureBookE }, { PPC::FeatureICBT } },
95
  { "bpermd", "Enable the bpermd instruction", { PPC::FeatureBPERMD }, { } },
96
  { "cmpb", "Enable the cmpb instruction", { PPC::FeatureCMPB }, { } },
97
  { "crbits", "Use condition-register bits individually", { PPC::FeatureCRBits }, { } },
98
  { "crypto", "Enable POWER8 Crypto instructions", { PPC::FeatureP8Crypto }, { PPC::FeatureP8Altivec } },
99
  { "direct-move", "Enable Power8 direct move instructions", { PPC::FeatureDirectMove }, { PPC::FeatureVSX } },
100
  { "e500", "Enable E500/E500mc instructions", { PPC::FeatureE500 }, { } },
101
  { "extdiv", "Enable extended divide instructions", { PPC::FeatureExtDiv }, { } },
102
  { "fcpsgn", "Enable the fcpsgn instruction", { PPC::FeatureFCPSGN }, { } },
103
  { "float128", "Enable the __float128 data type for IEEE-754R Binary128.", { PPC::FeatureFloat128 }, { PPC::FeatureVSX } },
104
  { "fpcvt", "Enable fc[ft]* (unsigned and single-precision) and lfiwzx instructions", { PPC::FeatureFPCVT }, { } },
105
  { "fprnd", "Enable the fri[mnpz] instructions", { PPC::FeatureFPRND }, { } },
106
  { "fre", "Enable the fre instruction", { PPC::FeatureFRE }, { } },
107
  { "fres", "Enable the fres instruction", { PPC::FeatureFRES }, { } },
108
  { "frsqrte", "Enable the frsqrte instruction", { PPC::FeatureFRSQRTE }, { } },
109
  { "frsqrtes", "Enable the frsqrtes instruction", { PPC::FeatureFRSQRTES }, { } },
110
  { "fsqrt", "Enable the fsqrt instruction", { PPC::FeatureFSqrt }, { } },
111
  { "fusion", "Target supports add/load integer fusion.", { PPC::FeatureFusion }, { } },
112
  { "htm", "Enable Hardware Transactional Memory instructions", { PPC::FeatureHTM }, { } },
113
  { "icbt", "Enable icbt instruction", { PPC::FeatureICBT }, { } },
114
  { "invariant-function-descriptors", "Assume function descriptors are invariant", { PPC::FeatureInvariantFunctionDescriptors }, { } },
115
  { "isel", "Enable the isel instruction", { PPC::FeatureISEL }, { } },
116
  { "ldbrx", "Enable the ldbrx instruction", { PPC::FeatureLDBRX }, { } },
117
  { "lfiwax", "Enable the lfiwax instruction", { PPC::FeatureLFIWAX }, { } },
118
  { "mfocrf", "Enable the MFOCRF instruction", { PPC::FeatureMFOCRF }, { } },
119
  { "msync", "Has only the msync instruction instead of sync", { PPC::FeatureMSYNC }, { PPC::FeatureBookE } },
120
  { "partword-atomics", "Enable l[bh]arx and st[bh]cx.", { PPC::FeaturePartwordAtomic }, { } },
121
  { "popcntd", "Enable the popcnt[dw] instructions", { PPC::FeaturePOPCNTD }, { } },
122
  { "power8-altivec", "Enable POWER8 Altivec instructions", { PPC::FeatureP8Altivec }, { PPC::FeatureAltivec } },
123
  { "power8-vector", "Enable POWER8 vector instructions", { PPC::FeatureP8Vector }, { PPC::FeatureVSX, PPC::FeatureP8Altivec } },
124
  { "ppc4xx", "Enable PPC 4xx instructions", { PPC::FeaturePPC4xx }, { } },
125
  { "ppc6xx", "Enable PPC 6xx instructions", { PPC::FeaturePPC6xx }, { } },
126
  { "qpx", "Enable QPX instructions", { PPC::FeatureQPX }, { } },
127
  { "recipprec", "Assume higher precision reciprocal estimates", { PPC::FeatureRecipPrec }, { } },
128
  { "soft-float", "Use software emulation for floating point", { PPC::FeatureSoftFloat }, { } },
129
  { "spe", "Enable SPE instructions", { PPC::FeatureSPE }, { } },
130
  { "stfiwx", "Enable the stfiwx instruction", { PPC::FeatureSTFIWX }, { } },
131
  { "vsx", "Enable VSX instructions", { PPC::FeatureVSX }, { PPC::FeatureAltivec } }
132
};
133
134
// Sorted (by key) array of values for CPU subtype.
135
extern const llvm_ks::SubtargetFeatureKV PPCSubTypeKV[] = {
136
  { "440", "Select the 440 processor", { PPC::Directive440, PPC::FeatureISEL, PPC::FeatureFRES, PPC::FeatureFRSQRTE, PPC::FeatureICBT, PPC::FeatureBookE, PPC::FeatureMSYNC, PPC::FeatureMFTB }, { } },
137
  { "450", "Select the 450 processor", { PPC::Directive440, PPC::FeatureISEL, PPC::FeatureFRES, PPC::FeatureFRSQRTE, PPC::FeatureICBT, PPC::FeatureBookE, PPC::FeatureMSYNC, PPC::FeatureMFTB }, { } },
138
  { "601", "Select the 601 processor", { PPC::Directive601 }, { } },
139
  { "602", "Select the 602 processor", { PPC::Directive602, PPC::FeatureMFTB }, { } },
140
  { "603", "Select the 603 processor", { PPC::Directive603, PPC::FeatureFRES, PPC::FeatureFRSQRTE, PPC::FeatureMFTB }, { } },
141
  { "603e", "Select the 603e processor", { PPC::Directive603, PPC::FeatureFRES, PPC::FeatureFRSQRTE, PPC::FeatureMFTB }, { } },
142
  { "603ev", "Select the 603ev processor", { PPC::Directive603, PPC::FeatureFRES, PPC::FeatureFRSQRTE, PPC::FeatureMFTB }, { } },
143
  { "604", "Select the 604 processor", { PPC::Directive604, PPC::FeatureFRES, PPC::FeatureFRSQRTE, PPC::FeatureMFTB }, { } },
144
  { "604e", "Select the 604e processor", { PPC::Directive604, PPC::FeatureFRES, PPC::FeatureFRSQRTE, PPC::FeatureMFTB }, { } },
145
  { "620", "Select the 620 processor", { PPC::Directive620, PPC::FeatureFRES, PPC::FeatureFRSQRTE, PPC::FeatureMFTB }, { } },
146
  { "7400", "Select the 7400 processor", { PPC::Directive7400, PPC::FeatureAltivec, PPC::FeatureFRES, PPC::FeatureFRSQRTE, PPC::FeatureMFTB }, { } },
147
  { "7450", "Select the 7450 processor", { PPC::Directive7400, PPC::FeatureAltivec, PPC::FeatureFRES, PPC::FeatureFRSQRTE, PPC::FeatureMFTB }, { } },
148
  { "750", "Select the 750 processor", { PPC::Directive750, PPC::FeatureFRES, PPC::FeatureFRSQRTE, PPC::FeatureMFTB }, { } },
149
  { "970", "Select the 970 processor", { PPC::Directive970, PPC::FeatureAltivec, PPC::FeatureMFOCRF, PPC::FeatureFSqrt, PPC::FeatureFRES, PPC::FeatureFRSQRTE, PPC::FeatureSTFIWX, PPC::Feature64Bit, PPC::FeatureMFTB }, { } },
150
  { "a2", "Select the a2 processor", { PPC::DirectiveA2, PPC::FeatureICBT, PPC::FeatureBookE, PPC::FeatureMFOCRF, PPC::FeatureFCPSGN, PPC::FeatureFSqrt, PPC::FeatureFRE, PPC::FeatureFRES, PPC::FeatureFRSQRTE, PPC::FeatureFRSQRTES, PPC::FeatureRecipPrec, PPC::FeatureSTFIWX, PPC::FeatureLFIWAX, PPC::FeatureFPRND, PPC::FeatureFPCVT, PPC::FeatureISEL, PPC::FeaturePOPCNTD, PPC::FeatureCMPB, PPC::FeatureLDBRX, PPC::Feature64Bit, PPC::FeatureMFTB }, { } },
151
  { "a2q", "Select the a2q processor", { PPC::DirectiveA2, PPC::FeatureICBT, PPC::FeatureBookE, PPC::FeatureMFOCRF, PPC::FeatureFCPSGN, PPC::FeatureFSqrt, PPC::FeatureFRE, PPC::FeatureFRES, PPC::FeatureFRSQRTE, PPC::FeatureFRSQRTES, PPC::FeatureRecipPrec, PPC::FeatureSTFIWX, PPC::FeatureLFIWAX, PPC::FeatureFPRND, PPC::FeatureFPCVT, PPC::FeatureISEL, PPC::FeaturePOPCNTD, PPC::FeatureCMPB, PPC::FeatureLDBRX, PPC::Feature64Bit, PPC::FeatureQPX, PPC::FeatureMFTB }, { } },
152
  { "e500mc", "Select the e500mc processor", { PPC::DirectiveE500mc, PPC::FeatureSTFIWX, PPC::FeatureICBT, PPC::FeatureBookE, PPC::FeatureISEL, PPC::FeatureMFTB }, { } },
153
  { "e5500", "Select the e5500 processor", { PPC::DirectiveE5500, PPC::FeatureMFOCRF, PPC::Feature64Bit, PPC::FeatureSTFIWX, PPC::FeatureICBT, PPC::FeatureBookE, PPC::FeatureISEL, PPC::FeatureMFTB }, { } },
154
  { "g3", "Select the g3 processor", { PPC::Directive750, PPC::FeatureFRES, PPC::FeatureFRSQRTE, PPC::FeatureMFTB }, { } },
155
  { "g4", "Select the g4 processor", { PPC::Directive7400, PPC::FeatureAltivec, PPC::FeatureFRES, PPC::FeatureFRSQRTE, PPC::FeatureMFTB }, { } },
156
  { "g4+", "Select the g4+ processor", { PPC::Directive7400, PPC::FeatureAltivec, PPC::FeatureFRES, PPC::FeatureFRSQRTE, PPC::FeatureMFTB }, { } },
157
  { "g5", "Select the g5 processor", { PPC::Directive970, PPC::FeatureAltivec, PPC::FeatureMFOCRF, PPC::FeatureFSqrt, PPC::FeatureSTFIWX, PPC::FeatureFRES, PPC::FeatureFRSQRTE, PPC::Feature64Bit, PPC::FeatureMFTB, PPC::DeprecatedDST }, { } },
158
  { "generic", "Select the generic processor", { PPC::Directive32, PPC::FeatureMFTB }, { } },
159
  { "ppc", "Select the ppc processor", { PPC::Directive32, PPC::FeatureMFTB }, { } },
160
  { "ppc64", "Select the ppc64 processor", { PPC::Directive64, PPC::FeatureAltivec, PPC::FeatureMFOCRF, PPC::FeatureFSqrt, PPC::FeatureFRES, PPC::FeatureFRSQRTE, PPC::FeatureSTFIWX, PPC::Feature64Bit, PPC::FeatureMFTB }, { } },
161
  { "ppc64le", "Select the ppc64le processor", { PPC::DirectivePwr7, PPC::FeatureAltivec, PPC::FeatureVSX, PPC::FeatureMFOCRF, PPC::FeatureFCPSGN, PPC::FeatureFSqrt, PPC::FeatureFRE, PPC::FeatureFRES, PPC::FeatureFRSQRTE, PPC::FeatureFRSQRTES, PPC::FeatureRecipPrec, PPC::FeatureSTFIWX, PPC::FeatureLFIWAX, PPC::FeatureFPRND, PPC::FeatureFPCVT, PPC::FeatureISEL, PPC::FeaturePOPCNTD, PPC::FeatureCMPB, PPC::FeatureLDBRX, PPC::Feature64Bit, PPC::FeatureBPERMD, PPC::FeatureExtDiv, PPC::FeatureMFTB, PPC::DeprecatedDST, PPC::DirectivePwr8, PPC::FeatureP8Altivec, PPC::FeatureP8Vector, PPC::FeatureP8Crypto, PPC::FeatureHTM, PPC::FeatureDirectMove, PPC::FeatureICBT, PPC::FeaturePartwordAtomic, PPC::FeatureFusion }, { } },
162
  { "pwr3", "Select the pwr3 processor", { PPC::DirectivePwr3, PPC::FeatureAltivec, PPC::FeatureFRES, PPC::FeatureFRSQRTE, PPC::FeatureMFOCRF, PPC::FeatureSTFIWX, PPC::Feature64Bit }, { } },
163
  { "pwr4", "Select the pwr4 processor", { PPC::DirectivePwr4, PPC::FeatureAltivec, PPC::FeatureMFOCRF, PPC::FeatureFSqrt, PPC::FeatureFRES, PPC::FeatureFRSQRTE, PPC::FeatureSTFIWX, PPC::Feature64Bit, PPC::FeatureMFTB }, { } },
164
  { "pwr5", "Select the pwr5 processor", { PPC::DirectivePwr5, PPC::FeatureAltivec, PPC::FeatureMFOCRF, PPC::FeatureFSqrt, PPC::FeatureFRE, PPC::FeatureFRES, PPC::FeatureFRSQRTE, PPC::FeatureFRSQRTES, PPC::FeatureSTFIWX, PPC::Feature64Bit, PPC::FeatureMFTB, PPC::DeprecatedDST }, { } },
165
  { "pwr5x", "Select the pwr5x processor", { PPC::DirectivePwr5x, PPC::FeatureAltivec, PPC::FeatureMFOCRF, PPC::FeatureFSqrt, PPC::FeatureFRE, PPC::FeatureFRES, PPC::FeatureFRSQRTE, PPC::FeatureFRSQRTES, PPC::FeatureSTFIWX, PPC::FeatureFPRND, PPC::Feature64Bit, PPC::FeatureMFTB, PPC::DeprecatedDST }, { } },
166
  { "pwr6", "Select the pwr6 processor", { PPC::DirectivePwr6, PPC::FeatureAltivec, PPC::FeatureMFOCRF, PPC::FeatureFCPSGN, PPC::FeatureFSqrt, PPC::FeatureFRE, PPC::FeatureFRES, PPC::FeatureFRSQRTE, PPC::FeatureFRSQRTES, PPC::FeatureRecipPrec, PPC::FeatureSTFIWX, PPC::FeatureLFIWAX, PPC::FeatureCMPB, PPC::FeatureFPRND, PPC::Feature64Bit, PPC::FeatureMFTB, PPC::DeprecatedDST }, { } },
167
  { "pwr6x", "Select the pwr6x processor", { PPC::DirectivePwr5x, PPC::FeatureAltivec, PPC::FeatureMFOCRF, PPC::FeatureFCPSGN, PPC::FeatureFSqrt, PPC::FeatureFRE, PPC::FeatureFRES, PPC::FeatureFRSQRTE, PPC::FeatureFRSQRTES, PPC::FeatureRecipPrec, PPC::FeatureSTFIWX, PPC::FeatureLFIWAX, PPC::FeatureCMPB, PPC::FeatureFPRND, PPC::Feature64Bit, PPC::FeatureMFTB, PPC::DeprecatedDST }, { } },
168
  { "pwr7", "Select the pwr7 processor", { PPC::DirectivePwr7, PPC::FeatureAltivec, PPC::FeatureVSX, PPC::FeatureMFOCRF, PPC::FeatureFCPSGN, PPC::FeatureFSqrt, PPC::FeatureFRE, PPC::FeatureFRES, PPC::FeatureFRSQRTE, PPC::FeatureFRSQRTES, PPC::FeatureRecipPrec, PPC::FeatureSTFIWX, PPC::FeatureLFIWAX, PPC::FeatureFPRND, PPC::FeatureFPCVT, PPC::FeatureISEL, PPC::FeaturePOPCNTD, PPC::FeatureCMPB, PPC::FeatureLDBRX, PPC::Feature64Bit, PPC::FeatureBPERMD, PPC::FeatureExtDiv, PPC::FeatureMFTB, PPC::DeprecatedDST }, { } },
169
  { "pwr8", "Select the pwr8 processor", { PPC::DirectivePwr7, PPC::FeatureAltivec, PPC::FeatureVSX, PPC::FeatureMFOCRF, PPC::FeatureFCPSGN, PPC::FeatureFSqrt, PPC::FeatureFRE, PPC::FeatureFRES, PPC::FeatureFRSQRTE, PPC::FeatureFRSQRTES, PPC::FeatureRecipPrec, PPC::FeatureSTFIWX, PPC::FeatureLFIWAX, PPC::FeatureFPRND, PPC::FeatureFPCVT, PPC::FeatureISEL, PPC::FeaturePOPCNTD, PPC::FeatureCMPB, PPC::FeatureLDBRX, PPC::Feature64Bit, PPC::FeatureBPERMD, PPC::FeatureExtDiv, PPC::FeatureMFTB, PPC::DeprecatedDST, PPC::DirectivePwr8, PPC::FeatureP8Altivec, PPC::FeatureP8Vector, PPC::FeatureP8Crypto, PPC::FeatureHTM, PPC::FeatureDirectMove, PPC::FeatureICBT, PPC::FeaturePartwordAtomic, PPC::FeatureFusion }, { } }
170
};
171
172
#ifdef DBGFIELD
173
#error "<target>GenSubtargetInfo.inc requires a DBGFIELD macro"
174
#endif
175
#ifndef NDEBUG
176
#define DBGFIELD(x) x,
177
#else
178
#define DBGFIELD(x)
179
#endif
180
181
#undef DBGFIELD
182
7.36k
static inline MCSubtargetInfo *createPPCMCSubtargetInfoImpl(const Triple &TT, StringRef CPU, StringRef FS) {
183
  return new MCSubtargetInfo(TT, CPU, FS, PPCFeatureKV, PPCSubTypeKV, NULL);
184
7.36k
}
185
186
} // end llvm namespace
187
#endif // GET_SUBTARGETINFO_MC_DESC
188
189
190
#ifdef GET_SUBTARGETINFO_TARGET_DESC
191
#undef GET_SUBTARGETINFO_TARGET_DESC
192
#include "llvm/Support/Debug.h"
193
#include "llvm/Support/raw_ostream.h"
194
// ParseSubtargetFeatures - Parses features string setting specified
195
// subtarget options.
196
void llvm_ks::PPCSubtarget::ParseSubtargetFeatures(StringRef CPU, StringRef FS) {
197
  DEBUG(dbgs() << "\nFeatures:" << FS);
198
  DEBUG(dbgs() << "\nCPU:" << CPU << "\n\n");
199
  InitMCProcessorInfo(CPU, FS);
200
  const FeatureBitset& Bits = getFeatureBits();
201
  if (Bits[PPC::DeprecatedDST]) DeprecatedDST = true;
202
  if (Bits[PPC::Directive32] && DarwinDirective < PPC::DIR_32) DarwinDirective = PPC::DIR_32;
203
  if (Bits[PPC::Directive64] && DarwinDirective < PPC::DIR_64) DarwinDirective = PPC::DIR_64;
204
  if (Bits[PPC::Directive440] && DarwinDirective < PPC::DIR_440) DarwinDirective = PPC::DIR_440;
205
  if (Bits[PPC::Directive601] && DarwinDirective < PPC::DIR_601) DarwinDirective = PPC::DIR_601;
206
  if (Bits[PPC::Directive602] && DarwinDirective < PPC::DIR_602) DarwinDirective = PPC::DIR_602;
207
  if (Bits[PPC::Directive603] && DarwinDirective < PPC::DIR_603) DarwinDirective = PPC::DIR_603;
208
  if (Bits[PPC::Directive604] && DarwinDirective < PPC::DIR_603) DarwinDirective = PPC::DIR_603;
209
  if (Bits[PPC::Directive620] && DarwinDirective < PPC::DIR_603) DarwinDirective = PPC::DIR_603;
210
  if (Bits[PPC::Directive750] && DarwinDirective < PPC::DIR_750) DarwinDirective = PPC::DIR_750;
211
  if (Bits[PPC::Directive970] && DarwinDirective < PPC::DIR_970) DarwinDirective = PPC::DIR_970;
212
  if (Bits[PPC::Directive7400] && DarwinDirective < PPC::DIR_7400) DarwinDirective = PPC::DIR_7400;
213
  if (Bits[PPC::DirectiveA2] && DarwinDirective < PPC::DIR_A2) DarwinDirective = PPC::DIR_A2;
214
  if (Bits[PPC::DirectiveE500mc] && DarwinDirective < PPC::DIR_E500mc) DarwinDirective = PPC::DIR_E500mc;
215
  if (Bits[PPC::DirectiveE5500] && DarwinDirective < PPC::DIR_E5500) DarwinDirective = PPC::DIR_E5500;
216
  if (Bits[PPC::DirectivePwr3] && DarwinDirective < PPC::DIR_PWR3) DarwinDirective = PPC::DIR_PWR3;
217
  if (Bits[PPC::DirectivePwr4] && DarwinDirective < PPC::DIR_PWR4) DarwinDirective = PPC::DIR_PWR4;
218
  if (Bits[PPC::DirectivePwr5] && DarwinDirective < PPC::DIR_PWR5) DarwinDirective = PPC::DIR_PWR5;
219
  if (Bits[PPC::DirectivePwr5x] && DarwinDirective < PPC::DIR_PWR5X) DarwinDirective = PPC::DIR_PWR5X;
220
  if (Bits[PPC::DirectivePwr6] && DarwinDirective < PPC::DIR_PWR6) DarwinDirective = PPC::DIR_PWR6;
221
  if (Bits[PPC::DirectivePwr6x] && DarwinDirective < PPC::DIR_PWR6X) DarwinDirective = PPC::DIR_PWR6X;
222
  if (Bits[PPC::DirectivePwr7] && DarwinDirective < PPC::DIR_PWR7) DarwinDirective = PPC::DIR_PWR7;
223
  if (Bits[PPC::DirectivePwr8] && DarwinDirective < PPC::DIR_PWR8) DarwinDirective = PPC::DIR_PWR8;
224
  if (Bits[PPC::Feature64Bit]) Has64BitSupport = true;
225
  if (Bits[PPC::Feature64BitRegs]) Use64BitRegs = true;
226
  if (Bits[PPC::FeatureAltivec]) HasAltivec = true;
227
  if (Bits[PPC::FeatureBPERMD]) HasBPERMD = true;
228
  if (Bits[PPC::FeatureBookE]) IsBookE = true;
229
  if (Bits[PPC::FeatureCMPB]) HasCMPB = true;
230
  if (Bits[PPC::FeatureCRBits]) UseCRBits = true;
231
  if (Bits[PPC::FeatureDirectMove]) HasDirectMove = true;
232
  if (Bits[PPC::FeatureE500]) IsE500 = true;
233
  if (Bits[PPC::FeatureExtDiv]) HasExtDiv = true;
234
  if (Bits[PPC::FeatureFCPSGN]) HasFCPSGN = true;
235
  if (Bits[PPC::FeatureFPCVT]) HasFPCVT = true;
236
  if (Bits[PPC::FeatureFPRND]) HasFPRND = true;
237
  if (Bits[PPC::FeatureFRE]) HasFRE = true;
238
  if (Bits[PPC::FeatureFRES]) HasFRES = true;
239
  if (Bits[PPC::FeatureFRSQRTE]) HasFRSQRTE = true;
240
  if (Bits[PPC::FeatureFRSQRTES]) HasFRSQRTES = true;
241
  if (Bits[PPC::FeatureFSqrt]) HasFSQRT = true;
242
  if (Bits[PPC::FeatureFloat128]) HasFloat128 = true;
243
  if (Bits[PPC::FeatureFusion]) HasFusion = true;
244
  if (Bits[PPC::FeatureHTM]) HasHTM = true;
245
  if (Bits[PPC::FeatureICBT]) HasICBT = true;
246
  if (Bits[PPC::FeatureISEL]) HasISEL = true;
247
  if (Bits[PPC::FeatureInvariantFunctionDescriptors]) HasInvariantFunctionDescriptors = true;
248
  if (Bits[PPC::FeatureLDBRX]) HasLDBRX = true;
249
  if (Bits[PPC::FeatureLFIWAX]) HasLFIWAX = true;
250
  if (Bits[PPC::FeatureMFOCRF]) HasMFOCRF = true;
251
  if (Bits[PPC::FeatureMFTB]) FeatureMFTB = true;
252
  if (Bits[PPC::FeatureMSYNC]) HasOnlyMSYNC = true;
253
  if (Bits[PPC::FeatureP8Altivec]) HasP8Altivec = true;
254
  if (Bits[PPC::FeatureP8Crypto]) HasP8Crypto = true;
255
  if (Bits[PPC::FeatureP8Vector]) HasP8Vector = true;
256
  if (Bits[PPC::FeaturePOPCNTD]) HasPOPCNTD = true;
257
  if (Bits[PPC::FeaturePPC4xx]) IsPPC4xx = true;
258
  if (Bits[PPC::FeaturePPC6xx]) IsPPC6xx = true;
259
  if (Bits[PPC::FeaturePartwordAtomic]) HasPartwordAtomics = true;
260
  if (Bits[PPC::FeatureQPX]) HasQPX = true;
261
  if (Bits[PPC::FeatureRecipPrec]) HasRecipPrec = true;
262
  if (Bits[PPC::FeatureSPE]) HasSPE = true;
263
  if (Bits[PPC::FeatureSTFIWX]) HasSTFIWX = true;
264
  if (Bits[PPC::FeatureSoftFloat]) UseSoftFloat = true;
265
  if (Bits[PPC::FeatureVSX]) HasVSX = true;
266
}
267
#endif // GET_SUBTARGETINFO_TARGET_DESC