[clang] [llvm] [Reland] [PowerPC] frontend get target feature from backend with cpu name (PR #144594)

zhijian lin via llvm-commits llvm-commits at lists.llvm.org
Tue Jun 17 13:15:08 PDT 2025


diggerlin wrote:

the EmitTargetFeature.cpp will generated following content, I used PPC target  as example:

```
// Autogenerated by TargetFeatureEmitter.cpp

#ifdef GET_SUBTARGETFEATURES_ENUM
#undef GET_SUBTARGETFEATURES_ENUM

namespace llvm {
namespace PPC {
enum {
  AIXOS = 0,
  DeprecatedDST = 1,
  Directive32 = 2,
  Directive64 = 3,
  Directive440 = 4,
  ...
    FeatureWideImmFusion = 111,
  FeatureZeroMoveFusion = 112,
  NumSubtargetFeatures = 113
};
} // end namespace PPC
} // end namespace llvm
#endif // GET_SUBTARGETFEATURES_ENUM

#ifdef GET_SUBTARGETFEATURES_KV
#undef GET_SUBTARGETFEATURES_KV

namespace llvm {
// Sorted (by key) array of values for CPU features.
extern const llvm::BasicSubtargetFeatureKV BasicPPCFeatureKV[] = {
  { "64bit", PPC::Feature64Bit, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } },
  { "64bitregs", PPC::Feature64BitRegs, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } },
  { "aix", PPC::AIXOS, { { { 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } },
  ...
  };

// Sorted (by key) array of values for CPU subtype.
extern const llvm::BasicSubtargetSubTypeKV BasicPPCSubTypeKV[] = {
 { "440", { { { 0x80c0020000000010ULL, 0xa020ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } },
 { "450", { { { 0x80c0020000000010ULL, 0xa020ULL, 0x0ULL, 0x0ULL, 0x0ULL, } } } },
  ....
  };

} // end namespace llvm
#endif // GET_SUBTARGETFEATURES_KV

```


https://github.com/llvm/llvm-project/pull/144594


More information about the llvm-commits mailing list