Skip to content

Commit 6a992bc

Browse files
author
Chen Zheng
committed
[PowerPC] refactor CPU info in PPCTargetParser.def, NFC
CPU features will be done in follow up patches.
1 parent e860c16 commit 6a992bc

File tree

5 files changed

+126
-120
lines changed

5 files changed

+126
-120
lines changed

clang/lib/Basic/Targets/PPC.cpp

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -928,17 +928,18 @@ bool PPCTargetInfo::validateCpuSupports(StringRef FeatureStr) const {
928928

929929
bool PPCTargetInfo::validateCpuIs(StringRef CPUName) const {
930930
llvm::Triple Triple = getTriple();
931-
if (Triple.isOSAIX()) {
932-
#define PPC_AIX_CPU(NAME, SUPPORT_METHOD, INDEX, OP, VALUE) .Case(NAME, true)
933-
return llvm::StringSwitch<bool>(CPUName)
934-
#include "llvm/TargetParser/PPCTargetParser.def"
935-
.Default(false);
936-
}
937-
938-
assert(Triple.isOSLinux() &&
931+
assert((Triple.isOSAIX() || Triple.isOSLinux()) &&
939932
"__builtin_cpu_is() is only supported for AIX and Linux.");
940-
#define PPC_LNX_CPU(NAME, NUM) .Case(NAME, true)
941-
return llvm::StringSwitch<bool>(CPUName)
933+
934+
#define PPC_CPU(NAME, Linux_SUPPORT_METHOD, LinuxID, AIX_SUPPORT_METHOD, \
935+
AIXID) \
936+
.Case(NAME, {Linux_SUPPORT_METHOD, AIX_SUPPORT_METHOD})
937+
938+
std::pair<unsigned, unsigned> SuppportMethod =
939+
llvm::StringSwitch<std::pair<unsigned, unsigned>>(CPUName)
942940
#include "llvm/TargetParser/PPCTargetParser.def"
943-
.Default(false);
941+
.Default({BUILTIN_PPC_UNSUPPORTED, BUILTIN_PPC_UNSUPPORTED});
942+
return Triple.isOSLinux()
943+
? (SuppportMethod.first != BUILTIN_PPC_UNSUPPORTED)
944+
: (SuppportMethod.second != BUILTIN_PPC_UNSUPPORTED);
944945
}

clang/lib/CodeGen/CGBuiltin.cpp

Lines changed: 27 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -16748,10 +16748,10 @@ Value *CodeGenFunction::EmitPPCBuiltinExpr(unsigned BuiltinID,
1674816748
auto GenAIXPPCBuiltinCpuExpr = [&](unsigned SupportMethod, unsigned FieldIdx,
1674916749
unsigned Mask, CmpInst::Predicate CompOp,
1675016750
unsigned OpValue) -> Value * {
16751-
if (SupportMethod == AIX_BUILTIN_PPC_FALSE)
16751+
if (SupportMethod == BUILTIN_PPC_FALSE)
1675216752
return llvm::ConstantInt::getFalse(ConvertType(E->getType()));
1675316753

16754-
if (SupportMethod == AIX_BUILTIN_PPC_TRUE)
16754+
if (SupportMethod == BUILTIN_PPC_TRUE)
1675516755
return llvm::ConstantInt::getTrue(ConvertType(E->getType()));
1675616756

1675716757
assert(SupportMethod <= SYS_CALL && "Invalid value for SupportMethod.");
@@ -16803,34 +16803,39 @@ Value *CodeGenFunction::EmitPPCBuiltinExpr(unsigned BuiltinID,
1680316803
StringRef CPUStr = cast<clang::StringLiteral>(CPUExpr)->getString();
1680416804
llvm::Triple Triple = getTarget().getTriple();
1680516805

16806-
if (Triple.isOSAIX()) {
16807-
unsigned SupportMethod, FieldIdx, CpuIdValue;
16808-
CmpInst::Predicate CompareOp;
16809-
typedef std::tuple<unsigned, unsigned, CmpInst::Predicate, unsigned>
16810-
CPUType;
16811-
std::tie(SupportMethod, FieldIdx, CompareOp, CpuIdValue) =
16812-
static_cast<CPUType>(StringSwitch<CPUType>(CPUStr)
16813-
#define PPC_AIX_CPU(NAME, SUPPORT_METHOD, INDEX, COMPARE_OP, VALUE) \
16814-
.Case(NAME, {SUPPORT_METHOD, INDEX, COMPARE_OP, VALUE})
16806+
unsigned LinuxSupportMethod, LinuxIDValue, AIXSupportMethod, AIXIDValue;
16807+
typedef std::tuple<unsigned, unsigned, unsigned, unsigned> CPUInfo;
16808+
16809+
std::tie(LinuxSupportMethod, LinuxIDValue, AIXSupportMethod, AIXIDValue) =
16810+
static_cast<CPUInfo>(StringSwitch<CPUInfo>(CPUStr)
16811+
#define PPC_CPU(NAME, Linux_SUPPORT_METHOD, LinuxID, AIX_SUPPORT_METHOD, \
16812+
AIXID) \
16813+
.Case(NAME, {Linux_SUPPORT_METHOD, LinuxID, AIX_SUPPORT_METHOD, AIXID})
1681516814
#include "llvm/TargetParser/PPCTargetParser.def"
16816-
.Default({AIX_BUILTIN_PPC_FALSE, 0,
16817-
CmpInst::Predicate(), 0}));
16818-
return GenAIXPPCBuiltinCpuExpr(SupportMethod, FieldIdx, 0, CompareOp,
16819-
CpuIdValue);
16815+
.Default({BUILTIN_PPC_UNSUPPORTED, 0,
16816+
BUILTIN_PPC_UNSUPPORTED, 0}));
16817+
16818+
if (Triple.isOSAIX()) {
16819+
assert((AIXSupportMethod != BUILTIN_PPC_UNSUPPORTED) &&
16820+
"Invalid CPU name. Missed by SemaChecking?");
16821+
return GenAIXPPCBuiltinCpuExpr(AIXSupportMethod, AIX_SYSCON_IMPL_IDX, 0,
16822+
ICmpInst::ICMP_EQ, AIXIDValue);
1682016823
}
1682116824

1682216825
assert(Triple.isOSLinux() &&
1682316826
"__builtin_cpu_is() is only supported for AIX and Linux.");
16824-
unsigned NumCPUID = StringSwitch<unsigned>(CPUStr)
16825-
#define PPC_LNX_CPU(Name, NumericID) .Case(Name, NumericID)
16826-
#include "llvm/TargetParser/PPCTargetParser.def"
16827-
.Default(-1U);
16828-
assert(NumCPUID < -1U && "Invalid CPU name. Missed by SemaChecking?");
16827+
16828+
assert((LinuxSupportMethod != BUILTIN_PPC_UNSUPPORTED) &&
16829+
"Invalid CPU name. Missed by SemaChecking?");
16830+
16831+
if (LinuxSupportMethod == BUILTIN_PPC_FALSE)
16832+
return llvm::ConstantInt::getFalse(ConvertType(E->getType()));
16833+
1682916834
Value *Op0 = llvm::ConstantInt::get(Int32Ty, PPC_FAWORD_CPUID);
1683016835
llvm::Function *F = CGM.getIntrinsic(Intrinsic::ppc_fixed_addr_ld);
1683116836
Value *TheCall = Builder.CreateCall(F, {Op0}, "cpu_is");
1683216837
return Builder.CreateICmpEQ(TheCall,
16833-
llvm::ConstantInt::get(Int32Ty, NumCPUID));
16838+
llvm::ConstantInt::get(Int32Ty, LinuxIDValue));
1683416839
}
1683516840
case Builtin::BI__builtin_cpu_supports: {
1683616841
llvm::Triple Triple = getTarget().getTriple();
@@ -16848,7 +16853,7 @@ Value *CodeGenFunction::EmitPPCBuiltinExpr(unsigned BuiltinID,
1684816853
VALUE) \
1684916854
.Case(NAME, {SUPPORT_METHOD, INDEX, MASK, COMP_OP, VALUE})
1685016855
#include "llvm/TargetParser/PPCTargetParser.def"
16851-
.Default({AIX_BUILTIN_PPC_FALSE, 0, 0,
16856+
.Default({BUILTIN_PPC_FALSE, 0, 0,
1685216857
CmpInst::Predicate(), 0}));
1685316858
return GenAIXPPCBuiltinCpuExpr(SupportMethod, FieldIdx, Mask, CompOp,
1685416859
Value);

llvm/include/llvm/TargetParser/PPCTargetParser.def

Lines changed: 85 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
#ifdef PPC_TGT_PARSER_UNDEF_MACROS
1616
#undef PPC_LNX_FEATURE
17-
#undef PPC_LNX_CPU
17+
#undef PPC_CPU
1818
#undef PPC_FAWORD_HWCAP
1919
#undef PPC_FAWORD_HWCAP2
2020
#undef PPC_FAWORD_CPUID
@@ -30,12 +30,22 @@
3030
#undef PPC_CPUID_OFFSET_LE64
3131
#undef PPC_CPUID_OFFSET_BE32
3232
#undef PPC_CPUID_OFFSET_BE64
33+
#undef BUILTIN_PPC_TRUE
34+
#undef BUILTIN_PPC_FALSE
35+
#undef USE_SYS_CONF
36+
#undef SYS_CALL
37+
#undef BUILTIN_PPC_UNSUPPORTED
38+
#undef AIX_SYSCON_IMPL_IDX
39+
#undef AIX_PPC7_VALUE
40+
#undef AIX_PPC8_VALUE
41+
#undef AIX_PPC9_VALUE
42+
#undef AIX_PPC10_VALUE
3343
#else
3444
#ifndef PPC_LNX_FEATURE
3545
#define PPC_LNX_FEATURE(NAME, DESC, ENUMNAME, ENUMVAL, HWCAPN)
3646
#endif
37-
#ifndef PPC_LNX_CPU
38-
#define PPC_LNX_CPU(NAME, NUM)
47+
#ifndef PPC_CPU
48+
#define PPC_CPU(Name, Linux_SUPPORT_METHOD, LinuxID, AIX_SUPPORT_METHOD, AIXID)
3949
#endif
4050
#ifndef PPC_FAWORD_HWCAP
4151
#define PPC_FAWORD_HWCAP 1
@@ -47,6 +57,56 @@
4757
#define PPC_FAWORD_CPUID 3
4858
#endif
4959

60+
// PPC CPUs
61+
//
62+
// The value of SUPPORT_METHOD can be:
63+
// BUILTIN_PPC_TRUE : feature supported
64+
// BUILTIN_PPC_FALSE : feature not supported
65+
// USE_SYS_CONF : return value depends on comparing VALUE with the specified
66+
// data member of _system_configuration at INDEX, where the
67+
// data member is masked by Mask.
68+
// SYS_CALL : return value depends on comparing a VALUE with the return value
69+
// of calling `getsystemcfg` with the parameter INDEX, which is
70+
// then masked by Mask.
71+
//
72+
// USE_SYS_CONF is only a methond supported on AIX.
73+
//
74+
// Supported SUPPORT_METHOD values.
75+
#define BUILTIN_PPC_TRUE 1
76+
#define BUILTIN_PPC_FALSE 0
77+
#define USE_SYS_CONF 2
78+
#define SYS_CALL 3
79+
#define BUILTIN_PPC_UNSUPPORTED 4
80+
81+
#define AIX_SYSCON_IMPL_IDX 1
82+
83+
#define AIX_PPC7_VALUE 0x00008000
84+
#define AIX_PPC8_VALUE 0x00010000
85+
#define AIX_PPC9_VALUE 0x00020000
86+
#define AIX_PPC10_VALUE 0x00040000
87+
88+
// __builtin_cpu_is() and __builtin_cpu_supports() are supported only on Power7 and up on AIX.
89+
// PPC_CPU(Name, Linux_SUPPORT_METHOD, LinuxID, AIX_SUPPORT_METHOD, AIXID)
90+
PPC_CPU("power4",SYS_CALL,32,BUILTIN_PPC_FALSE,0)
91+
PPC_CPU("ppc970",SYS_CALL,33,BUILTIN_PPC_FALSE,0)
92+
PPC_CPU("power5",SYS_CALL,34,BUILTIN_PPC_FALSE,0)
93+
PPC_CPU("power5+",SYS_CALL,35,BUILTIN_PPC_FALSE,0)
94+
PPC_CPU("power6",SYS_CALL,36,BUILTIN_PPC_FALSE,0)
95+
PPC_CPU("ppc-cell-be",SYS_CALL,37,BUILTIN_PPC_FALSE,0)
96+
PPC_CPU("power6x",SYS_CALL,38,BUILTIN_PPC_FALSE,0)
97+
PPC_CPU("power7",SYS_CALL,39,USE_SYS_CONF,AIX_PPC7_VALUE)
98+
PPC_CPU("ppca2",SYS_CALL,40,BUILTIN_PPC_FALSE,0)
99+
PPC_CPU("ppc405",SYS_CALL,41,BUILTIN_PPC_FALSE,0)
100+
PPC_CPU("ppc440",SYS_CALL,42,BUILTIN_PPC_FALSE,0)
101+
PPC_CPU("ppc464",SYS_CALL,43,BUILTIN_PPC_FALSE,0)
102+
PPC_CPU("ppc476",SYS_CALL,44,BUILTIN_PPC_FALSE,0)
103+
PPC_CPU("power8",SYS_CALL,45,USE_SYS_CONF,AIX_PPC8_VALUE)
104+
PPC_CPU("power9",SYS_CALL,46,USE_SYS_CONF,AIX_PPC9_VALUE)
105+
PPC_CPU("power10",SYS_CALL,47,USE_SYS_CONF,AIX_PPC10_VALUE)
106+
#undef PPC_CPU
107+
108+
// PPC features on Linux:
109+
//
50110
// PPC_LNX_FEATURE(Name, Description, EnumName, BitMask, PPC_FAWORD_WORD)
51111
PPC_LNX_FEATURE("4xxmac","4xx CPU has a Multiply Accumulator",PPCF_4XXMAC,0x02000000,PPC_FAWORD_HWCAP)
52112
PPC_LNX_FEATURE("altivec","CPU has a SIMD/Vector Unit",PPCF_ALTIVEC,0x10000000,PPC_FAWORD_HWCAP)
@@ -92,23 +152,6 @@ PPC_LNX_FEATURE("ucache","CPU has unified I/D cache",PPCF_UCACHE,0x01000000,PPC_
92152
PPC_LNX_FEATURE("vcrypto","CPU supports the vector cryptography instructions",PPCF_VCRYPTO,0x02000000,PPC_FAWORD_HWCAP2)
93153
PPC_LNX_FEATURE("vsx","CPU supports the vector-scalar extension",PPCF_VSX,0x00000080,PPC_FAWORD_HWCAP)
94154

95-
// PPC_LNX_CPU(Name, NumericID)
96-
PPC_LNX_CPU("power4",32)
97-
PPC_LNX_CPU("ppc970",33)
98-
PPC_LNX_CPU("power5",34)
99-
PPC_LNX_CPU("power5+",35)
100-
PPC_LNX_CPU("power6",36)
101-
PPC_LNX_CPU("ppc-cell-be",37)
102-
PPC_LNX_CPU("power6x",38)
103-
PPC_LNX_CPU("power7",39)
104-
PPC_LNX_CPU("ppca2",40)
105-
PPC_LNX_CPU("ppc405",41)
106-
PPC_LNX_CPU("ppc440",42)
107-
PPC_LNX_CPU("ppc464",43)
108-
PPC_LNX_CPU("ppc476",44)
109-
PPC_LNX_CPU("power8",45)
110-
PPC_LNX_CPU("power9",46)
111-
PPC_LNX_CPU("power10",47)
112155
#ifdef PPC_LNX_DEFINE_OFFSETS
113156
# define PPC_HWCAP_OFFSET_LE32 -0x703C
114157
# define PPC_HWCAP_OFFSET_LE64 -0x7064
@@ -125,103 +168,59 @@ PPC_LNX_CPU("power10",47)
125168
#endif
126169
#undef PPC_LNX_DEFINE_OFFSETS
127170
#undef PPC_LNX_FEATURE
128-
#undef PPC_LNX_CPU
129171

172+
// PPC features on AIX
173+
//
130174
// Definition of the following values are found in the AIX header
131175
// file: </usr/include/sys/systemcfg.h>.
132176
#ifndef AIX_POWERPC_USE_SYS_CONF
133177
#define AIX_POWERPC_USE_SYS_CONF
134-
#define AIX_SYSCON_IMPL_IDX 1
135178
#define AIX_SYSCON_CACHE_IDX 5
136179
#define AIX_SYSCON_SMT_IDX 44
137180
#define AIX_SYSCON_VMX_IDX 46
138181
#define AIX_SYSCON_DFP_IDX 53
139182

140183
#define SYS_CALL_TM_VER 59
141184
#define SYS_CALL_MMA_VER 62
142-
143-
#define AIX_PPC7_VALUE 0x00008000
144-
#define AIX_PPC8_VALUE 0x00010000
145-
#define AIX_PPC9_VALUE 0x00020000
146-
#define AIX_PPC10_VALUE 0x00040000
147-
148-
// Supported SUPPORT_METHOD values.
149-
#define AIX_BUILTIN_PPC_TRUE 1
150-
#define AIX_BUILTIN_PPC_FALSE 0
151-
#define USE_SYS_CONF 2
152-
#define SYS_CALL 3
153-
#endif
154-
155-
// The value of SUPPORT_METHOD can be:
156-
// AIX_BUILTIN_PPC_TRUE : feature supported
157-
// AIX_BUILTIN_PPC_FALSE : feature not supported
158-
// USE_SYS_CONF : return value depends on comparing VALUE with the specified
159-
// data member of _system_configuration at INDEX, where the
160-
// data member is masked by Mask.
161-
// SYS_CALL : return value depends on comparing a VALUE with the return value
162-
// of calling `getsystemcfg` with the parameter INDEX, which is
163-
// then masked by Mask.
164-
165-
#ifndef PPC_AIX_CPU
166-
#define PPC_AIX_CPU(NAME, SUPPORT_METHOD, INDEX, COMPARE_OP, VALUE)
167185
#endif
168186

169-
// __builtin_cpu_is() and __builtin_cpu_supports() are supported only on Power7 and up.
170-
PPC_AIX_CPU("power4",AIX_BUILTIN_PPC_FALSE,0,CmpInst::Predicate(),0)
171-
PPC_AIX_CPU("ppc970",AIX_BUILTIN_PPC_FALSE,0,CmpInst::Predicate(),0)
172-
PPC_AIX_CPU("power5",AIX_BUILTIN_PPC_FALSE,0,CmpInst::Predicate(),0)
173-
PPC_AIX_CPU("power5+",AIX_BUILTIN_PPC_FALSE,0,CmpInst::Predicate(),0)
174-
PPC_AIX_CPU("power6",AIX_BUILTIN_PPC_FALSE,0,CmpInst::Predicate(),0)
175-
PPC_AIX_CPU("ppc-cell-be",AIX_BUILTIN_PPC_FALSE,0,CmpInst::Predicate(),0)
176-
PPC_AIX_CPU("power6x",AIX_BUILTIN_PPC_FALSE,0,CmpInst::Predicate(),0)
177-
PPC_AIX_CPU("ppca2",AIX_BUILTIN_PPC_FALSE,0,CmpInst::Predicate(),0)
178-
PPC_AIX_CPU("ppc405",AIX_BUILTIN_PPC_FALSE,0,CmpInst::Predicate(),0)
179-
PPC_AIX_CPU("ppc440",AIX_BUILTIN_PPC_FALSE,0,CmpInst::Predicate(),0)
180-
PPC_AIX_CPU("ppc464",AIX_BUILTIN_PPC_FALSE,0,CmpInst::Predicate(),0)
181-
PPC_AIX_CPU("ppc476",AIX_BUILTIN_PPC_FALSE,0,CmpInst::Predicate(),0)
182-
PPC_AIX_CPU("power7",USE_SYS_CONF,AIX_SYSCON_IMPL_IDX,ICmpInst::ICMP_EQ,AIX_PPC7_VALUE)
183-
PPC_AIX_CPU("power8",USE_SYS_CONF,AIX_SYSCON_IMPL_IDX,ICmpInst::ICMP_EQ,AIX_PPC8_VALUE)
184-
PPC_AIX_CPU("power9",USE_SYS_CONF,AIX_SYSCON_IMPL_IDX,ICmpInst::ICMP_EQ,AIX_PPC9_VALUE)
185-
PPC_AIX_CPU("power10",USE_SYS_CONF,AIX_SYSCON_IMPL_IDX,ICmpInst::ICMP_EQ,AIX_PPC10_VALUE)
186-
#undef PPC_AIX_CPU
187-
188187
#ifndef PPC_AIX_FEATURE
189188
#define PPC_AIX_FEATURE(NAME,DESC,SUPPORT_METHOD,INDEX,MASK,COMPARE_OP,VALUE)
190189
#endif
191190

192-
PPC_AIX_FEATURE("4xxmac","4xx CPU has a Multiply Accumulator",AIX_BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0)
191+
PPC_AIX_FEATURE("4xxmac","4xx CPU has a Multiply Accumulator",BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0)
193192
PPC_AIX_FEATURE("altivec","CPU has a SIMD/Vector Unit",USE_SYS_CONF,AIX_SYSCON_VMX_IDX,0,ICmpInst::ICMP_UGT,0)
194-
PPC_AIX_FEATURE("arch_2_05","CPU supports ISA 205 (eg, POWER6)",AIX_BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0)
193+
PPC_AIX_FEATURE("arch_2_05","CPU supports ISA 205 (eg, POWER6)",BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0)
195194
PPC_AIX_FEATURE("arch_2_06","CPU supports ISA 206 (eg, POWER7)",USE_SYS_CONF,AIX_SYSCON_IMPL_IDX,0,ICmpInst::ICMP_UGE,AIX_PPC7_VALUE)
196195
PPC_AIX_FEATURE("arch_2_07","CPU supports ISA 207 (eg, POWER8)",USE_SYS_CONF,AIX_SYSCON_IMPL_IDX,0,ICmpInst::ICMP_UGE,AIX_PPC8_VALUE)
197196
PPC_AIX_FEATURE("arch_3_00","CPU supports ISA 30 (eg, POWER9)", USE_SYS_CONF,AIX_SYSCON_IMPL_IDX,0,ICmpInst::ICMP_UGE,AIX_PPC9_VALUE)
198197
PPC_AIX_FEATURE("arch_3_1","CPU supports ISA 31 (eg, POWER10)", USE_SYS_CONF,AIX_SYSCON_IMPL_IDX,0,ICmpInst::ICMP_UGE,AIX_PPC10_VALUE)
199-
PPC_AIX_FEATURE("booke","CPU supports the Embedded ISA category",AIX_BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0)
200-
PPC_AIX_FEATURE("cellbe","CPU has a CELL broadband engine",AIX_BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0)
198+
PPC_AIX_FEATURE("booke","CPU supports the Embedded ISA category",BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0)
199+
PPC_AIX_FEATURE("cellbe","CPU has a CELL broadband engine",BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0)
201200
PPC_AIX_FEATURE("darn","CPU supports the darn (deliver a random number) instruction",USE_SYS_CONF,AIX_SYSCON_IMPL_IDX,0,ICmpInst::ICMP_UGE,AIX_PPC9_VALUE)
202201
PPC_AIX_FEATURE("dfp","CPU has a decimal floating point unit",USE_SYS_CONF,AIX_SYSCON_DFP_IDX,0,ICmpInst::ICMP_NE,0)
203202
PPC_AIX_FEATURE("dscr","CPU supports the data stream control register",USE_SYS_CONF,AIX_SYSCON_IMPL_IDX,0,ICmpInst::ICMP_UGE,AIX_PPC8_VALUE)
204203
PPC_AIX_FEATURE("ebb","CPU supports event base branching",USE_SYS_CONF,AIX_SYSCON_IMPL_IDX,0,ICmpInst::ICMP_UGE,AIX_PPC8_VALUE)
205-
PPC_AIX_FEATURE("efpsingle","CPU has a SPE single precision floating point unit",AIX_BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0)
206-
PPC_AIX_FEATURE("efpdouble","CPU has a SPE double precision floating point unit",AIX_BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0)
207-
PPC_AIX_FEATURE("fpu","CPU has a floating point unit",AIX_BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0)
204+
PPC_AIX_FEATURE("efpsingle","CPU has a SPE single precision floating point unit",BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0)
205+
PPC_AIX_FEATURE("efpdouble","CPU has a SPE double precision floating point unit",BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0)
206+
PPC_AIX_FEATURE("fpu","CPU has a floating point unit",BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0)
208207
PPC_AIX_FEATURE("htm","CPU has hardware transaction memory instructions",SYS_CALL,SYS_CALL_TM_VER,0,ICmpInst::ICMP_UGT,0)
209-
PPC_AIX_FEATURE("isel","CPU supports the integer select instruction",AIX_BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0)
208+
PPC_AIX_FEATURE("isel","CPU supports the integer select instruction",BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0)
210209
PPC_AIX_FEATURE("mma","CPU supports the matrix-multiply assist instructions",SYS_CALL,SYS_CALL_MMA_VER,0,ICmpInst::ICMP_UGT,0)
211-
PPC_AIX_FEATURE("mmu","CPU has a memory management unit",AIX_BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0)
212-
PPC_AIX_FEATURE("pa6t","CPU supports the PA Semi 6T CORE ISA",AIX_BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0)
213-
PPC_AIX_FEATURE("power4","CPU supports ISA 200 (eg, POWER4)",AIX_BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0)
214-
PPC_AIX_FEATURE("power5","CPU supports ISA 202 (eg, POWER5)",AIX_BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0)
215-
PPC_AIX_FEATURE("power5+","CPU supports ISA 203 (eg, POWER5+)",AIX_BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0)
216-
PPC_AIX_FEATURE("power6x","CPU supports ISA 205 (eg, POWER6)",AIX_BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0)
217-
PPC_AIX_FEATURE("ppc32","CPU supports 32-bit mode execution",AIX_BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0)
218-
PPC_AIX_FEATURE("ppc601","CPU supports the old POWER ISA (eg, 601)",AIX_BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0)
219-
PPC_AIX_FEATURE("ppc64","CPU supports 64-bit mode execution",AIX_BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0)
220-
PPC_AIX_FEATURE("ppcle","CPU supports a little-endian mode that uses address swizzling",AIX_BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0)
210+
PPC_AIX_FEATURE("mmu","CPU has a memory management unit",BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0)
211+
PPC_AIX_FEATURE("pa6t","CPU supports the PA Semi 6T CORE ISA",BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0)
212+
PPC_AIX_FEATURE("power4","CPU supports ISA 200 (eg, POWER4)",BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0)
213+
PPC_AIX_FEATURE("power5","CPU supports ISA 202 (eg, POWER5)",BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0)
214+
PPC_AIX_FEATURE("power5+","CPU supports ISA 203 (eg, POWER5+)",BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0)
215+
PPC_AIX_FEATURE("power6x","CPU supports ISA 205 (eg, POWER6)",BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0)
216+
PPC_AIX_FEATURE("ppc32","CPU supports 32-bit mode execution",BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0)
217+
PPC_AIX_FEATURE("ppc601","CPU supports the old POWER ISA (eg, 601)",BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0)
218+
PPC_AIX_FEATURE("ppc64","CPU supports 64-bit mode execution",BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0)
219+
PPC_AIX_FEATURE("ppcle","CPU supports a little-endian mode that uses address swizzling",BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0)
221220
PPC_AIX_FEATURE("smt","CPU supports simultaneous multi-threading",USE_SYS_CONF,AIX_SYSCON_SMT_IDX,0x3,ICmpInst::ICMP_EQ,0x3)
222-
PPC_AIX_FEATURE("spe","CPU has a signal processing extension unit",AIX_BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0)
221+
PPC_AIX_FEATURE("spe","CPU has a signal processing extension unit",BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0)
223222
PPC_AIX_FEATURE("tar","CPU supports the target address register",USE_SYS_CONF,AIX_SYSCON_IMPL_IDX,0,ICmpInst::ICMP_UGE,AIX_PPC8_VALUE)
224-
PPC_AIX_FEATURE("true_le","CPU supports true little-endian mode",AIX_BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0)
223+
PPC_AIX_FEATURE("true_le","CPU supports true little-endian mode",BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0)
225224
PPC_AIX_FEATURE("ucache","CPU has unified I/D cache",USE_SYS_CONF,AIX_SYSCON_CACHE_IDX,0x00000002,ICmpInst::ICMP_EQ,0x00000002)
226225
PPC_AIX_FEATURE("vsx","CPU supports the vector-scalar extension",USE_SYS_CONF,AIX_SYSCON_VMX_IDX,0,ICmpInst::ICMP_UGT,1)
227226
#undef PPC_AIX_FEATURE

llvm/lib/Target/PowerPC/PPCInstrInfo.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3124,7 +3124,7 @@ bool PPCInstrInfo::expandPostRAPseudo(MachineInstr &MI) const {
31243124
MI.setDesc(get(PPC::LWZ));
31253125
uint64_t FAType = MI.getOperand(1).getImm();
31263126
#undef PPC_LNX_FEATURE
3127-
#undef PPC_LNX_CPU
3127+
#undef PPC_CPU
31283128
#define PPC_LNX_DEFINE_OFFSETS
31293129
#include "llvm/TargetParser/PPCTargetParser.def"
31303130
bool IsLE = Subtarget.isLittleEndian();

llvm/tools/clang

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../../clang

0 commit comments

Comments
 (0)