Author: Chen Zheng Date: 2024-07-03T00:20:14-04:00 New Revision: 6a992bc89f5ca25d132abd044d78ecf27ae6e162
URL: https://github.com/llvm/llvm-project/commit/6a992bc89f5ca25d132abd044d78ecf27ae6e162 DIFF: https://github.com/llvm/llvm-project/commit/6a992bc89f5ca25d132abd044d78ecf27ae6e162.diff LOG: [PowerPC] refactor CPU info in PPCTargetParser.def, NFC CPU features will be done in follow up patches. Added: llvm/tools/clang Modified: clang/lib/Basic/Targets/PPC.cpp clang/lib/CodeGen/CGBuiltin.cpp llvm/include/llvm/TargetParser/PPCTargetParser.def llvm/lib/Target/PowerPC/PPCInstrInfo.cpp Removed: ################################################################################ diff --git a/clang/lib/Basic/Targets/PPC.cpp b/clang/lib/Basic/Targets/PPC.cpp index a1e5f20f7dbe2..89c5566f7ad09 100644 --- a/clang/lib/Basic/Targets/PPC.cpp +++ b/clang/lib/Basic/Targets/PPC.cpp @@ -928,17 +928,18 @@ bool PPCTargetInfo::validateCpuSupports(StringRef FeatureStr) const { bool PPCTargetInfo::validateCpuIs(StringRef CPUName) const { llvm::Triple Triple = getTriple(); - if (Triple.isOSAIX()) { -#define PPC_AIX_CPU(NAME, SUPPORT_METHOD, INDEX, OP, VALUE) .Case(NAME, true) - return llvm::StringSwitch<bool>(CPUName) -#include "llvm/TargetParser/PPCTargetParser.def" - .Default(false); - } - - assert(Triple.isOSLinux() && + assert((Triple.isOSAIX() || Triple.isOSLinux()) && "__builtin_cpu_is() is only supported for AIX and Linux."); -#define PPC_LNX_CPU(NAME, NUM) .Case(NAME, true) - return llvm::StringSwitch<bool>(CPUName) + +#define PPC_CPU(NAME, Linux_SUPPORT_METHOD, LinuxID, AIX_SUPPORT_METHOD, \ + AIXID) \ + .Case(NAME, {Linux_SUPPORT_METHOD, AIX_SUPPORT_METHOD}) + + std::pair<unsigned, unsigned> SuppportMethod = + llvm::StringSwitch<std::pair<unsigned, unsigned>>(CPUName) #include "llvm/TargetParser/PPCTargetParser.def" - .Default(false); + .Default({BUILTIN_PPC_UNSUPPORTED, BUILTIN_PPC_UNSUPPORTED}); + return Triple.isOSLinux() + ? (SuppportMethod.first != BUILTIN_PPC_UNSUPPORTED) + : (SuppportMethod.second != BUILTIN_PPC_UNSUPPORTED); } diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp index ed37267efe715..5b92f1837980c 100644 --- a/clang/lib/CodeGen/CGBuiltin.cpp +++ b/clang/lib/CodeGen/CGBuiltin.cpp @@ -16748,10 +16748,10 @@ Value *CodeGenFunction::EmitPPCBuiltinExpr(unsigned BuiltinID, auto GenAIXPPCBuiltinCpuExpr = [&](unsigned SupportMethod, unsigned FieldIdx, unsigned Mask, CmpInst::Predicate CompOp, unsigned OpValue) -> Value * { - if (SupportMethod == AIX_BUILTIN_PPC_FALSE) + if (SupportMethod == BUILTIN_PPC_FALSE) return llvm::ConstantInt::getFalse(ConvertType(E->getType())); - if (SupportMethod == AIX_BUILTIN_PPC_TRUE) + if (SupportMethod == BUILTIN_PPC_TRUE) return llvm::ConstantInt::getTrue(ConvertType(E->getType())); assert(SupportMethod <= SYS_CALL && "Invalid value for SupportMethod."); @@ -16803,34 +16803,39 @@ Value *CodeGenFunction::EmitPPCBuiltinExpr(unsigned BuiltinID, StringRef CPUStr = cast<clang::StringLiteral>(CPUExpr)->getString(); llvm::Triple Triple = getTarget().getTriple(); - if (Triple.isOSAIX()) { - unsigned SupportMethod, FieldIdx, CpuIdValue; - CmpInst::Predicate CompareOp; - typedef std::tuple<unsigned, unsigned, CmpInst::Predicate, unsigned> - CPUType; - std::tie(SupportMethod, FieldIdx, CompareOp, CpuIdValue) = - static_cast<CPUType>(StringSwitch<CPUType>(CPUStr) -#define PPC_AIX_CPU(NAME, SUPPORT_METHOD, INDEX, COMPARE_OP, VALUE) \ - .Case(NAME, {SUPPORT_METHOD, INDEX, COMPARE_OP, VALUE}) + unsigned LinuxSupportMethod, LinuxIDValue, AIXSupportMethod, AIXIDValue; + typedef std::tuple<unsigned, unsigned, unsigned, unsigned> CPUInfo; + + std::tie(LinuxSupportMethod, LinuxIDValue, AIXSupportMethod, AIXIDValue) = + static_cast<CPUInfo>(StringSwitch<CPUInfo>(CPUStr) +#define PPC_CPU(NAME, Linux_SUPPORT_METHOD, LinuxID, AIX_SUPPORT_METHOD, \ + AIXID) \ + .Case(NAME, {Linux_SUPPORT_METHOD, LinuxID, AIX_SUPPORT_METHOD, AIXID}) #include "llvm/TargetParser/PPCTargetParser.def" - .Default({AIX_BUILTIN_PPC_FALSE, 0, - CmpInst::Predicate(), 0})); - return GenAIXPPCBuiltinCpuExpr(SupportMethod, FieldIdx, 0, CompareOp, - CpuIdValue); + .Default({BUILTIN_PPC_UNSUPPORTED, 0, + BUILTIN_PPC_UNSUPPORTED, 0})); + + if (Triple.isOSAIX()) { + assert((AIXSupportMethod != BUILTIN_PPC_UNSUPPORTED) && + "Invalid CPU name. Missed by SemaChecking?"); + return GenAIXPPCBuiltinCpuExpr(AIXSupportMethod, AIX_SYSCON_IMPL_IDX, 0, + ICmpInst::ICMP_EQ, AIXIDValue); } assert(Triple.isOSLinux() && "__builtin_cpu_is() is only supported for AIX and Linux."); - unsigned NumCPUID = StringSwitch<unsigned>(CPUStr) -#define PPC_LNX_CPU(Name, NumericID) .Case(Name, NumericID) -#include "llvm/TargetParser/PPCTargetParser.def" - .Default(-1U); - assert(NumCPUID < -1U && "Invalid CPU name. Missed by SemaChecking?"); + + assert((LinuxSupportMethod != BUILTIN_PPC_UNSUPPORTED) && + "Invalid CPU name. Missed by SemaChecking?"); + + if (LinuxSupportMethod == BUILTIN_PPC_FALSE) + return llvm::ConstantInt::getFalse(ConvertType(E->getType())); + Value *Op0 = llvm::ConstantInt::get(Int32Ty, PPC_FAWORD_CPUID); llvm::Function *F = CGM.getIntrinsic(Intrinsic::ppc_fixed_addr_ld); Value *TheCall = Builder.CreateCall(F, {Op0}, "cpu_is"); return Builder.CreateICmpEQ(TheCall, - llvm::ConstantInt::get(Int32Ty, NumCPUID)); + llvm::ConstantInt::get(Int32Ty, LinuxIDValue)); } case Builtin::BI__builtin_cpu_supports: { llvm::Triple Triple = getTarget().getTriple(); @@ -16848,7 +16853,7 @@ Value *CodeGenFunction::EmitPPCBuiltinExpr(unsigned BuiltinID, VALUE) \ .Case(NAME, {SUPPORT_METHOD, INDEX, MASK, COMP_OP, VALUE}) #include "llvm/TargetParser/PPCTargetParser.def" - .Default({AIX_BUILTIN_PPC_FALSE, 0, 0, + .Default({BUILTIN_PPC_FALSE, 0, 0, CmpInst::Predicate(), 0})); return GenAIXPPCBuiltinCpuExpr(SupportMethod, FieldIdx, Mask, CompOp, Value); diff --git a/llvm/include/llvm/TargetParser/PPCTargetParser.def b/llvm/include/llvm/TargetParser/PPCTargetParser.def index d462c9c9ffe69..44e97d56a059c 100644 --- a/llvm/include/llvm/TargetParser/PPCTargetParser.def +++ b/llvm/include/llvm/TargetParser/PPCTargetParser.def @@ -14,7 +14,7 @@ #ifdef PPC_TGT_PARSER_UNDEF_MACROS #undef PPC_LNX_FEATURE -#undef PPC_LNX_CPU +#undef PPC_CPU #undef PPC_FAWORD_HWCAP #undef PPC_FAWORD_HWCAP2 #undef PPC_FAWORD_CPUID @@ -30,12 +30,22 @@ #undef PPC_CPUID_OFFSET_LE64 #undef PPC_CPUID_OFFSET_BE32 #undef PPC_CPUID_OFFSET_BE64 +#undef BUILTIN_PPC_TRUE +#undef BUILTIN_PPC_FALSE +#undef USE_SYS_CONF +#undef SYS_CALL +#undef BUILTIN_PPC_UNSUPPORTED +#undef AIX_SYSCON_IMPL_IDX +#undef AIX_PPC7_VALUE +#undef AIX_PPC8_VALUE +#undef AIX_PPC9_VALUE +#undef AIX_PPC10_VALUE #else #ifndef PPC_LNX_FEATURE #define PPC_LNX_FEATURE(NAME, DESC, ENUMNAME, ENUMVAL, HWCAPN) #endif -#ifndef PPC_LNX_CPU -#define PPC_LNX_CPU(NAME, NUM) +#ifndef PPC_CPU +#define PPC_CPU(Name, Linux_SUPPORT_METHOD, LinuxID, AIX_SUPPORT_METHOD, AIXID) #endif #ifndef PPC_FAWORD_HWCAP #define PPC_FAWORD_HWCAP 1 @@ -47,6 +57,56 @@ #define PPC_FAWORD_CPUID 3 #endif +// PPC CPUs +// +// The value of SUPPORT_METHOD can be: +// BUILTIN_PPC_TRUE : feature supported +// BUILTIN_PPC_FALSE : feature not supported +// USE_SYS_CONF : return value depends on comparing VALUE with the specified +// data member of _system_configuration at INDEX, where the +// data member is masked by Mask. +// SYS_CALL : return value depends on comparing a VALUE with the return value +// of calling `getsystemcfg` with the parameter INDEX, which is +// then masked by Mask. +// +// USE_SYS_CONF is only a methond supported on AIX. +// +// Supported SUPPORT_METHOD values. +#define BUILTIN_PPC_TRUE 1 +#define BUILTIN_PPC_FALSE 0 +#define USE_SYS_CONF 2 +#define SYS_CALL 3 +#define BUILTIN_PPC_UNSUPPORTED 4 + +#define AIX_SYSCON_IMPL_IDX 1 + +#define AIX_PPC7_VALUE 0x00008000 +#define AIX_PPC8_VALUE 0x00010000 +#define AIX_PPC9_VALUE 0x00020000 +#define AIX_PPC10_VALUE 0x00040000 + +// __builtin_cpu_is() and __builtin_cpu_supports() are supported only on Power7 and up on AIX. +// PPC_CPU(Name, Linux_SUPPORT_METHOD, LinuxID, AIX_SUPPORT_METHOD, AIXID) +PPC_CPU("power4",SYS_CALL,32,BUILTIN_PPC_FALSE,0) +PPC_CPU("ppc970",SYS_CALL,33,BUILTIN_PPC_FALSE,0) +PPC_CPU("power5",SYS_CALL,34,BUILTIN_PPC_FALSE,0) +PPC_CPU("power5+",SYS_CALL,35,BUILTIN_PPC_FALSE,0) +PPC_CPU("power6",SYS_CALL,36,BUILTIN_PPC_FALSE,0) +PPC_CPU("ppc-cell-be",SYS_CALL,37,BUILTIN_PPC_FALSE,0) +PPC_CPU("power6x",SYS_CALL,38,BUILTIN_PPC_FALSE,0) +PPC_CPU("power7",SYS_CALL,39,USE_SYS_CONF,AIX_PPC7_VALUE) +PPC_CPU("ppca2",SYS_CALL,40,BUILTIN_PPC_FALSE,0) +PPC_CPU("ppc405",SYS_CALL,41,BUILTIN_PPC_FALSE,0) +PPC_CPU("ppc440",SYS_CALL,42,BUILTIN_PPC_FALSE,0) +PPC_CPU("ppc464",SYS_CALL,43,BUILTIN_PPC_FALSE,0) +PPC_CPU("ppc476",SYS_CALL,44,BUILTIN_PPC_FALSE,0) +PPC_CPU("power8",SYS_CALL,45,USE_SYS_CONF,AIX_PPC8_VALUE) +PPC_CPU("power9",SYS_CALL,46,USE_SYS_CONF,AIX_PPC9_VALUE) +PPC_CPU("power10",SYS_CALL,47,USE_SYS_CONF,AIX_PPC10_VALUE) +#undef PPC_CPU + +// PPC features on Linux: +// // PPC_LNX_FEATURE(Name, Description, EnumName, BitMask, PPC_FAWORD_WORD) PPC_LNX_FEATURE("4xxmac","4xx CPU has a Multiply Accumulator",PPCF_4XXMAC,0x02000000,PPC_FAWORD_HWCAP) 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_ PPC_LNX_FEATURE("vcrypto","CPU supports the vector cryptography instructions",PPCF_VCRYPTO,0x02000000,PPC_FAWORD_HWCAP2) PPC_LNX_FEATURE("vsx","CPU supports the vector-scalar extension",PPCF_VSX,0x00000080,PPC_FAWORD_HWCAP) -// PPC_LNX_CPU(Name, NumericID) -PPC_LNX_CPU("power4",32) -PPC_LNX_CPU("ppc970",33) -PPC_LNX_CPU("power5",34) -PPC_LNX_CPU("power5+",35) -PPC_LNX_CPU("power6",36) -PPC_LNX_CPU("ppc-cell-be",37) -PPC_LNX_CPU("power6x",38) -PPC_LNX_CPU("power7",39) -PPC_LNX_CPU("ppca2",40) -PPC_LNX_CPU("ppc405",41) -PPC_LNX_CPU("ppc440",42) -PPC_LNX_CPU("ppc464",43) -PPC_LNX_CPU("ppc476",44) -PPC_LNX_CPU("power8",45) -PPC_LNX_CPU("power9",46) -PPC_LNX_CPU("power10",47) #ifdef PPC_LNX_DEFINE_OFFSETS # define PPC_HWCAP_OFFSET_LE32 -0x703C # define PPC_HWCAP_OFFSET_LE64 -0x7064 @@ -125,13 +168,13 @@ PPC_LNX_CPU("power10",47) #endif #undef PPC_LNX_DEFINE_OFFSETS #undef PPC_LNX_FEATURE -#undef PPC_LNX_CPU +// PPC features on AIX +// // Definition of the following values are found in the AIX header // file: </usr/include/sys/systemcfg.h>. #ifndef AIX_POWERPC_USE_SYS_CONF #define AIX_POWERPC_USE_SYS_CONF - #define AIX_SYSCON_IMPL_IDX 1 #define AIX_SYSCON_CACHE_IDX 5 #define AIX_SYSCON_SMT_IDX 44 #define AIX_SYSCON_VMX_IDX 46 @@ -139,89 +182,45 @@ PPC_LNX_CPU("power10",47) #define SYS_CALL_TM_VER 59 #define SYS_CALL_MMA_VER 62 - - #define AIX_PPC7_VALUE 0x00008000 - #define AIX_PPC8_VALUE 0x00010000 - #define AIX_PPC9_VALUE 0x00020000 - #define AIX_PPC10_VALUE 0x00040000 - - // Supported SUPPORT_METHOD values. - #define AIX_BUILTIN_PPC_TRUE 1 - #define AIX_BUILTIN_PPC_FALSE 0 - #define USE_SYS_CONF 2 - #define SYS_CALL 3 -#endif - -// The value of SUPPORT_METHOD can be: -// AIX_BUILTIN_PPC_TRUE : feature supported -// AIX_BUILTIN_PPC_FALSE : feature not supported -// USE_SYS_CONF : return value depends on comparing VALUE with the specified -// data member of _system_configuration at INDEX, where the -// data member is masked by Mask. -// SYS_CALL : return value depends on comparing a VALUE with the return value -// of calling `getsystemcfg` with the parameter INDEX, which is -// then masked by Mask. - -#ifndef PPC_AIX_CPU - #define PPC_AIX_CPU(NAME, SUPPORT_METHOD, INDEX, COMPARE_OP, VALUE) #endif -// __builtin_cpu_is() and __builtin_cpu_supports() are supported only on Power7 and up. -PPC_AIX_CPU("power4",AIX_BUILTIN_PPC_FALSE,0,CmpInst::Predicate(),0) -PPC_AIX_CPU("ppc970",AIX_BUILTIN_PPC_FALSE,0,CmpInst::Predicate(),0) -PPC_AIX_CPU("power5",AIX_BUILTIN_PPC_FALSE,0,CmpInst::Predicate(),0) -PPC_AIX_CPU("power5+",AIX_BUILTIN_PPC_FALSE,0,CmpInst::Predicate(),0) -PPC_AIX_CPU("power6",AIX_BUILTIN_PPC_FALSE,0,CmpInst::Predicate(),0) -PPC_AIX_CPU("ppc-cell-be",AIX_BUILTIN_PPC_FALSE,0,CmpInst::Predicate(),0) -PPC_AIX_CPU("power6x",AIX_BUILTIN_PPC_FALSE,0,CmpInst::Predicate(),0) -PPC_AIX_CPU("ppca2",AIX_BUILTIN_PPC_FALSE,0,CmpInst::Predicate(),0) -PPC_AIX_CPU("ppc405",AIX_BUILTIN_PPC_FALSE,0,CmpInst::Predicate(),0) -PPC_AIX_CPU("ppc440",AIX_BUILTIN_PPC_FALSE,0,CmpInst::Predicate(),0) -PPC_AIX_CPU("ppc464",AIX_BUILTIN_PPC_FALSE,0,CmpInst::Predicate(),0) -PPC_AIX_CPU("ppc476",AIX_BUILTIN_PPC_FALSE,0,CmpInst::Predicate(),0) -PPC_AIX_CPU("power7",USE_SYS_CONF,AIX_SYSCON_IMPL_IDX,ICmpInst::ICMP_EQ,AIX_PPC7_VALUE) -PPC_AIX_CPU("power8",USE_SYS_CONF,AIX_SYSCON_IMPL_IDX,ICmpInst::ICMP_EQ,AIX_PPC8_VALUE) -PPC_AIX_CPU("power9",USE_SYS_CONF,AIX_SYSCON_IMPL_IDX,ICmpInst::ICMP_EQ,AIX_PPC9_VALUE) -PPC_AIX_CPU("power10",USE_SYS_CONF,AIX_SYSCON_IMPL_IDX,ICmpInst::ICMP_EQ,AIX_PPC10_VALUE) -#undef PPC_AIX_CPU - #ifndef PPC_AIX_FEATURE #define PPC_AIX_FEATURE(NAME,DESC,SUPPORT_METHOD,INDEX,MASK,COMPARE_OP,VALUE) #endif -PPC_AIX_FEATURE("4xxmac","4xx CPU has a Multiply Accumulator",AIX_BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0) +PPC_AIX_FEATURE("4xxmac","4xx CPU has a Multiply Accumulator",BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0) PPC_AIX_FEATURE("altivec","CPU has a SIMD/Vector Unit",USE_SYS_CONF,AIX_SYSCON_VMX_IDX,0,ICmpInst::ICMP_UGT,0) -PPC_AIX_FEATURE("arch_2_05","CPU supports ISA 205 (eg, POWER6)",AIX_BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0) +PPC_AIX_FEATURE("arch_2_05","CPU supports ISA 205 (eg, POWER6)",BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0) 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) 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) 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) 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) -PPC_AIX_FEATURE("booke","CPU supports the Embedded ISA category",AIX_BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0) -PPC_AIX_FEATURE("cellbe","CPU has a CELL broadband engine",AIX_BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0) +PPC_AIX_FEATURE("booke","CPU supports the Embedded ISA category",BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0) +PPC_AIX_FEATURE("cellbe","CPU has a CELL broadband engine",BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0) 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) PPC_AIX_FEATURE("dfp","CPU has a decimal floating point unit",USE_SYS_CONF,AIX_SYSCON_DFP_IDX,0,ICmpInst::ICMP_NE,0) 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) PPC_AIX_FEATURE("ebb","CPU supports event base branching",USE_SYS_CONF,AIX_SYSCON_IMPL_IDX,0,ICmpInst::ICMP_UGE,AIX_PPC8_VALUE) -PPC_AIX_FEATURE("efpsingle","CPU has a SPE single precision floating point unit",AIX_BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0) -PPC_AIX_FEATURE("efpdouble","CPU has a SPE double precision floating point unit",AIX_BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0) -PPC_AIX_FEATURE("fpu","CPU has a floating point unit",AIX_BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0) +PPC_AIX_FEATURE("efpsingle","CPU has a SPE single precision floating point unit",BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0) +PPC_AIX_FEATURE("efpdouble","CPU has a SPE double precision floating point unit",BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0) +PPC_AIX_FEATURE("fpu","CPU has a floating point unit",BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0) PPC_AIX_FEATURE("htm","CPU has hardware transaction memory instructions",SYS_CALL,SYS_CALL_TM_VER,0,ICmpInst::ICMP_UGT,0) -PPC_AIX_FEATURE("isel","CPU supports the integer select instruction",AIX_BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0) +PPC_AIX_FEATURE("isel","CPU supports the integer select instruction",BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0) PPC_AIX_FEATURE("mma","CPU supports the matrix-multiply assist instructions",SYS_CALL,SYS_CALL_MMA_VER,0,ICmpInst::ICMP_UGT,0) -PPC_AIX_FEATURE("mmu","CPU has a memory management unit",AIX_BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0) -PPC_AIX_FEATURE("pa6t","CPU supports the PA Semi 6T CORE ISA",AIX_BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0) -PPC_AIX_FEATURE("power4","CPU supports ISA 200 (eg, POWER4)",AIX_BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0) -PPC_AIX_FEATURE("power5","CPU supports ISA 202 (eg, POWER5)",AIX_BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0) -PPC_AIX_FEATURE("power5+","CPU supports ISA 203 (eg, POWER5+)",AIX_BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0) -PPC_AIX_FEATURE("power6x","CPU supports ISA 205 (eg, POWER6)",AIX_BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0) -PPC_AIX_FEATURE("ppc32","CPU supports 32-bit mode execution",AIX_BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0) -PPC_AIX_FEATURE("ppc601","CPU supports the old POWER ISA (eg, 601)",AIX_BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0) -PPC_AIX_FEATURE("ppc64","CPU supports 64-bit mode execution",AIX_BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0) -PPC_AIX_FEATURE("ppcle","CPU supports a little-endian mode that uses address swizzling",AIX_BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0) +PPC_AIX_FEATURE("mmu","CPU has a memory management unit",BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0) +PPC_AIX_FEATURE("pa6t","CPU supports the PA Semi 6T CORE ISA",BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0) +PPC_AIX_FEATURE("power4","CPU supports ISA 200 (eg, POWER4)",BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0) +PPC_AIX_FEATURE("power5","CPU supports ISA 202 (eg, POWER5)",BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0) +PPC_AIX_FEATURE("power5+","CPU supports ISA 203 (eg, POWER5+)",BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0) +PPC_AIX_FEATURE("power6x","CPU supports ISA 205 (eg, POWER6)",BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0) +PPC_AIX_FEATURE("ppc32","CPU supports 32-bit mode execution",BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0) +PPC_AIX_FEATURE("ppc601","CPU supports the old POWER ISA (eg, 601)",BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0) +PPC_AIX_FEATURE("ppc64","CPU supports 64-bit mode execution",BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0) +PPC_AIX_FEATURE("ppcle","CPU supports a little-endian mode that uses address swizzling",BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0) PPC_AIX_FEATURE("smt","CPU supports simultaneous multi-threading",USE_SYS_CONF,AIX_SYSCON_SMT_IDX,0x3,ICmpInst::ICMP_EQ,0x3) -PPC_AIX_FEATURE("spe","CPU has a signal processing extension unit",AIX_BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0) +PPC_AIX_FEATURE("spe","CPU has a signal processing extension unit",BUILTIN_PPC_FALSE,0,0,CmpInst::Predicate(),0) PPC_AIX_FEATURE("tar","CPU supports the target address register",USE_SYS_CONF,AIX_SYSCON_IMPL_IDX,0,ICmpInst::ICMP_UGE,AIX_PPC8_VALUE) -PPC_AIX_FEATURE("true_le","CPU supports true little-endian mode",AIX_BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0) +PPC_AIX_FEATURE("true_le","CPU supports true little-endian mode",BUILTIN_PPC_TRUE,0,0,CmpInst::Predicate(),0) PPC_AIX_FEATURE("ucache","CPU has unified I/D cache",USE_SYS_CONF,AIX_SYSCON_CACHE_IDX,0x00000002,ICmpInst::ICMP_EQ,0x00000002) PPC_AIX_FEATURE("vsx","CPU supports the vector-scalar extension",USE_SYS_CONF,AIX_SYSCON_VMX_IDX,0,ICmpInst::ICMP_UGT,1) #undef PPC_AIX_FEATURE diff --git a/llvm/lib/Target/PowerPC/PPCInstrInfo.cpp b/llvm/lib/Target/PowerPC/PPCInstrInfo.cpp index e3f59f3bd28df..d2195cfbdc5c9 100644 --- a/llvm/lib/Target/PowerPC/PPCInstrInfo.cpp +++ b/llvm/lib/Target/PowerPC/PPCInstrInfo.cpp @@ -3124,7 +3124,7 @@ bool PPCInstrInfo::expandPostRAPseudo(MachineInstr &MI) const { MI.setDesc(get(PPC::LWZ)); uint64_t FAType = MI.getOperand(1).getImm(); #undef PPC_LNX_FEATURE -#undef PPC_LNX_CPU +#undef PPC_CPU #define PPC_LNX_DEFINE_OFFSETS #include "llvm/TargetParser/PPCTargetParser.def" bool IsLE = Subtarget.isLittleEndian(); diff --git a/llvm/tools/clang b/llvm/tools/clang new file mode 120000 index 0000000000000..7700edcd10231 --- /dev/null +++ b/llvm/tools/clang @@ -0,0 +1 @@ +../../clang \ No newline at end of file _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits