[NFC][AMDGPU] Move AMDGPU related code out of generic TargetParser.cpp - #198433
Conversation
This stack of pull requests is managed by sgh. |
|
@llvm/pr-subscribers-mlir-llvm @llvm/pr-subscribers-clang-driver Author: Shilei Tian (shiltian) ChangesPatch is 67.65 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/198433.diff 33 Files Affected:
diff --git a/clang/lib/Basic/TargetID.cpp b/clang/lib/Basic/TargetID.cpp
index 446577930b017..6d9ba55ccd9d7 100644
--- a/clang/lib/Basic/TargetID.cpp
+++ b/clang/lib/Basic/TargetID.cpp
@@ -11,7 +11,7 @@
#include "llvm/ADT/SmallSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/Support/Path.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
#include "llvm/TargetParser/Triple.h"
#include <map>
#include <optional>
diff --git a/clang/lib/Basic/Targets/AMDGPU.cpp b/clang/lib/Basic/Targets/AMDGPU.cpp
index 48ba5d94df581..6b077dfa8e142 100644
--- a/clang/lib/Basic/Targets/AMDGPU.cpp
+++ b/clang/lib/Basic/Targets/AMDGPU.cpp
@@ -17,6 +17,7 @@
#include "clang/Basic/MacroBuilder.h"
#include "clang/Basic/TargetBuiltins.h"
#include "llvm/ADT/SmallString.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
using namespace clang;
using namespace clang::targets;
diff --git a/clang/lib/Basic/Targets/AMDGPU.h b/clang/lib/Basic/Targets/AMDGPU.h
index 38c92e73708f8..f1bfca4c42417 100644
--- a/clang/lib/Basic/Targets/AMDGPU.h
+++ b/clang/lib/Basic/Targets/AMDGPU.h
@@ -19,7 +19,7 @@
#include "llvm/ADT/StringSet.h"
#include "llvm/Support/AMDGPUAddrSpace.h"
#include "llvm/Support/Compiler.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
#include "llvm/TargetParser/Triple.h"
#include <optional>
diff --git a/clang/lib/Basic/Targets/SPIR.cpp b/clang/lib/Basic/Targets/SPIR.cpp
index b6d6b213d78ed..8fdb45acf381f 100644
--- a/clang/lib/Basic/Targets/SPIR.cpp
+++ b/clang/lib/Basic/Targets/SPIR.cpp
@@ -14,7 +14,7 @@
#include "AMDGPU.h"
#include "clang/Basic/MacroBuilder.h"
#include "clang/Basic/TargetBuiltins.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
using namespace clang;
using namespace clang::targets;
diff --git a/clang/lib/Driver/ToolChains/AMDGPU.cpp b/clang/lib/Driver/ToolChains/AMDGPU.cpp
index d2d8e56eb22be..5c3baa6898126 100644
--- a/clang/lib/Driver/ToolChains/AMDGPU.cpp
+++ b/clang/lib/Driver/ToolChains/AMDGPU.cpp
@@ -22,8 +22,8 @@
#include "llvm/Support/Path.h"
#include "llvm/Support/Process.h"
#include "llvm/Support/VirtualFileSystem.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
#include "llvm/TargetParser/Host.h"
-#include "llvm/TargetParser/TargetParser.h"
#include <optional>
#include <system_error>
diff --git a/clang/lib/Driver/ToolChains/AMDGPU.h b/clang/lib/Driver/ToolChains/AMDGPU.h
index 20b9365c91bbf..ebc02fa477894 100644
--- a/clang/lib/Driver/ToolChains/AMDGPU.h
+++ b/clang/lib/Driver/ToolChains/AMDGPU.h
@@ -15,7 +15,7 @@
#include "clang/Driver/ToolChain.h"
#include "clang/Options/Options.h"
#include "llvm/ADT/SmallString.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
#include <map>
diff --git a/clang/lib/Driver/ToolChains/Arch/AMDGPU.cpp b/clang/lib/Driver/ToolChains/Arch/AMDGPU.cpp
index 8a9cb7ef5b367..461ec590faf40 100644
--- a/clang/lib/Driver/ToolChains/Arch/AMDGPU.cpp
+++ b/clang/lib/Driver/ToolChains/Arch/AMDGPU.cpp
@@ -7,10 +7,8 @@
//===----------------------------------------------------------------------===//
#include "AMDGPU.h"
-#include "clang/Basic/TargetID.h"
#include "clang/Driver/Driver.h"
#include "clang/Options/Options.h"
-#include "llvm/TargetParser/TargetParser.h"
using namespace clang::driver;
using namespace clang::driver::tools;
diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp
index 9c2d1955a9e12..6b6bfc284e495 100644
--- a/clang/lib/Driver/ToolChains/CommonArgs.cpp
+++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp
@@ -58,9 +58,9 @@
#include "llvm/Support/Threading.h"
#include "llvm/Support/VirtualFileSystem.h"
#include "llvm/Support/YAMLParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
#include "llvm/TargetParser/Host.h"
#include "llvm/TargetParser/PPCTargetParser.h"
-#include "llvm/TargetParser/TargetParser.h"
#include <optional>
using namespace clang::driver;
diff --git a/clang/lib/Sema/SemaAMDGPU.cpp b/clang/lib/Sema/SemaAMDGPU.cpp
index 96a4648f06314..1d2b3898c92d6 100644
--- a/clang/lib/Sema/SemaAMDGPU.cpp
+++ b/clang/lib/Sema/SemaAMDGPU.cpp
@@ -26,7 +26,7 @@
#include "llvm/ADT/StringMap.h"
#include "llvm/Support/AMDGPUAddrSpace.h"
#include "llvm/Support/AtomicOrdering.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
#include <cstdint>
#include <utility>
diff --git a/flang/lib/Frontend/CompilerInstance.cpp b/flang/lib/Frontend/CompilerInstance.cpp
index 28011e8bf685a..3e820d386f8a9 100644
--- a/flang/lib/Frontend/CompilerInstance.cpp
+++ b/flang/lib/Frontend/CompilerInstance.cpp
@@ -29,8 +29,8 @@
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/Path.h"
#include "llvm/Support/raw_ostream.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
#include "llvm/TargetParser/PPCTargetParser.h"
-#include "llvm/TargetParser/TargetParser.h"
#include "llvm/TargetParser/Triple.h"
using namespace Fortran::frontend;
diff --git a/llvm/include/llvm/TargetParser/AMDGPUTargetParser.h b/llvm/include/llvm/TargetParser/AMDGPUTargetParser.h
new file mode 100644
index 0000000000000..7c192b36b6ec8
--- /dev/null
+++ b/llvm/include/llvm/TargetParser/AMDGPUTargetParser.h
@@ -0,0 +1,109 @@
+//===-- AMDGPUTargetParser - Parser for AMDGPU features ---------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// This file implements a target parser to recognise AMDGPU hardware features.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_TARGETPARSER_AMDGPUTARGETPARSER_H
+#define LLVM_TARGETPARSER_AMDGPUTARGETPARSER_H
+
+#include "llvm/ADT/StringMap.h"
+#include "llvm/ADT/StringRef.h"
+#include "llvm/Support/Compiler.h"
+#include <cstdint>
+#include <utility>
+
+namespace llvm {
+
+template <typename T> class SmallVectorImpl;
+class Triple;
+
+namespace AMDGPU {
+
+/// GPU kinds supported by the AMDGPU target.
+enum GPUKind : uint32_t {
+ // Not specified processor.
+ GK_NONE = 0,
+
+#define R600_GPU(NAME, ENUM, FEATURES) ENUM,
+#define AMDGCN_GPU(NAME, ENUM, ISAVERSION, FEATURES) ENUM,
+#include "AMDGPUTargetParser.def"
+
+ GK_AMDGCN_GENERIC_FIRST = GK_GFX9_GENERIC,
+ GK_AMDGCN_GENERIC_LAST = GK_GFX12_5_GENERIC,
+};
+
+/// Instruction set architecture version.
+struct IsaVersion {
+ unsigned Major;
+ unsigned Minor;
+ unsigned Stepping;
+};
+
+// This isn't comprehensive for now, just things that are needed from the
+// frontend driver.
+enum ArchFeatureKind : uint32_t {
+ FEATURE_NONE = 0,
+
+ // These features only exist for r600, and are implied true for amdgcn.
+ FEATURE_FMA = 1 << 1,
+ FEATURE_LDEXP = 1 << 2,
+ FEATURE_FP64 = 1 << 3,
+
+ // Common features.
+ FEATURE_FAST_FMA_F32 = 1 << 4,
+ FEATURE_FAST_DENORMAL_F32 = 1 << 5,
+
+ // Wavefront 32 is available.
+ FEATURE_WAVE32 = 1 << 6,
+
+ // Xnack is available.
+ FEATURE_XNACK = 1 << 7,
+
+ // Sram-ecc is available.
+ FEATURE_SRAMECC = 1 << 8,
+
+ // WGP mode is supported.
+ FEATURE_WGP = 1 << 9,
+
+ // Xnack is available by default
+ FEATURE_XNACK_ALWAYS = 1 << 10
+};
+
+enum FeatureError : uint32_t {
+ NO_ERROR = 0,
+ INVALID_FEATURE_COMBINATION,
+ UNSUPPORTED_TARGET_FEATURE
+};
+
+LLVM_ABI StringRef getArchFamilyNameAMDGCN(GPUKind AK);
+
+LLVM_ABI StringRef getArchNameAMDGCN(GPUKind AK);
+LLVM_ABI StringRef getArchNameR600(GPUKind AK);
+LLVM_ABI StringRef getCanonicalArchName(const Triple &T, StringRef Arch);
+LLVM_ABI GPUKind parseArchAMDGCN(StringRef CPU);
+LLVM_ABI GPUKind parseArchR600(StringRef CPU);
+LLVM_ABI unsigned getArchAttrAMDGCN(GPUKind AK);
+LLVM_ABI unsigned getArchAttrR600(GPUKind AK);
+
+LLVM_ABI void fillValidArchListAMDGCN(SmallVectorImpl<StringRef> &Values);
+LLVM_ABI void fillValidArchListR600(SmallVectorImpl<StringRef> &Values);
+
+LLVM_ABI IsaVersion getIsaVersion(StringRef GPU);
+
+/// Fills Features map with default values for given target GPU.
+/// \p Features contains overriding target features and this function returns
+/// default target features with entries overridden by \p Features.
+LLVM_ABI std::pair<FeatureError, StringRef>
+fillAMDGPUFeatureMap(StringRef GPU, const Triple &T, StringMap<bool> &Features);
+} // namespace AMDGPU
+
+} // namespace llvm
+
+#endif
diff --git a/llvm/include/llvm/TargetParser/TargetParser.h b/llvm/include/llvm/TargetParser/TargetParser.h
index caf57c804db46..b65ff37dfc958 100644
--- a/llvm/include/llvm/TargetParser/TargetParser.h
+++ b/llvm/include/llvm/TargetParser/TargetParser.h
@@ -19,99 +19,10 @@
#include "llvm/ADT/StringMap.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Support/Compiler.h"
+#include <optional>
namespace llvm {
-template <typename T> class SmallVectorImpl;
-class Triple;
-
-// Target specific information in their own namespaces.
-// (ARM/AArch64/X86 are declared in ARM/AArch64/X86TargetParser.h)
-// These should be generated from TableGen because the information is already
-// there, and there is where new information about targets will be added.
-// FIXME: To TableGen this we need to make some table generated files available
-// even if the back-end is not compiled with LLVM, plus we need to create a new
-// back-end to TableGen to create these clean tables.
-namespace AMDGPU {
-
-/// GPU kinds supported by the AMDGPU target.
-enum GPUKind : uint32_t {
- // Not specified processor.
- GK_NONE = 0,
-
-#define R600_GPU(NAME, ENUM, FEATURES) ENUM,
-#define AMDGCN_GPU(NAME, ENUM, ISAVERSION, FEATURES) ENUM,
-#include "AMDGPUTargetParser.def"
-
- GK_AMDGCN_GENERIC_FIRST = GK_GFX9_GENERIC,
- GK_AMDGCN_GENERIC_LAST = GK_GFX12_5_GENERIC,
-};
-
-/// Instruction set architecture version.
-struct IsaVersion {
- unsigned Major;
- unsigned Minor;
- unsigned Stepping;
-};
-
-// This isn't comprehensive for now, just things that are needed from the
-// frontend driver.
-enum ArchFeatureKind : uint32_t {
- FEATURE_NONE = 0,
-
- // These features only exist for r600, and are implied true for amdgcn.
- FEATURE_FMA = 1 << 1,
- FEATURE_LDEXP = 1 << 2,
- FEATURE_FP64 = 1 << 3,
-
- // Common features.
- FEATURE_FAST_FMA_F32 = 1 << 4,
- FEATURE_FAST_DENORMAL_F32 = 1 << 5,
-
- // Wavefront 32 is available.
- FEATURE_WAVE32 = 1 << 6,
-
- // Xnack is available.
- FEATURE_XNACK = 1 << 7,
-
- // Sram-ecc is available.
- FEATURE_SRAMECC = 1 << 8,
-
- // WGP mode is supported.
- FEATURE_WGP = 1 << 9,
-
- // Xnack is available by default
- FEATURE_XNACK_ALWAYS = 1 << 10
-};
-
-enum FeatureError : uint32_t {
- NO_ERROR = 0,
- INVALID_FEATURE_COMBINATION,
- UNSUPPORTED_TARGET_FEATURE
-};
-
-LLVM_ABI StringRef getArchFamilyNameAMDGCN(GPUKind AK);
-
-LLVM_ABI StringRef getArchNameAMDGCN(GPUKind AK);
-LLVM_ABI StringRef getArchNameR600(GPUKind AK);
-LLVM_ABI StringRef getCanonicalArchName(const Triple &T, StringRef Arch);
-LLVM_ABI GPUKind parseArchAMDGCN(StringRef CPU);
-LLVM_ABI GPUKind parseArchR600(StringRef CPU);
-LLVM_ABI unsigned getArchAttrAMDGCN(GPUKind AK);
-LLVM_ABI unsigned getArchAttrR600(GPUKind AK);
-
-LLVM_ABI void fillValidArchListAMDGCN(SmallVectorImpl<StringRef> &Values);
-LLVM_ABI void fillValidArchListR600(SmallVectorImpl<StringRef> &Values);
-
-LLVM_ABI IsaVersion getIsaVersion(StringRef GPU);
-
-/// Fills Features map with default values for given target GPU.
-/// \p Features contains overriding target features and this function returns
-/// default target features with entries overridden by \p Features.
-LLVM_ABI std::pair<FeatureError, StringRef>
-fillAMDGPUFeatureMap(StringRef GPU, const Triple &T, StringMap<bool> &Features);
-} // namespace AMDGPU
-
struct BasicSubtargetFeatureKV {
const char *Key; ///< K-V key string
unsigned Value; ///< K-V integer value
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp b/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
index 6e8ad3f9f1a24..18b3af1cea294 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
@@ -50,7 +50,7 @@
#include "llvm/Support/Compiler.h"
#include "llvm/Target/TargetLoweringObjectFile.h"
#include "llvm/Target/TargetMachine.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
using namespace llvm;
using namespace llvm::AMDGPU;
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUMIRFormatter.cpp b/llvm/lib/Target/AMDGPU/AMDGPUMIRFormatter.cpp
index e262d4e715fea..873aae5daae94 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUMIRFormatter.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUMIRFormatter.cpp
@@ -13,7 +13,7 @@
#include "AMDGPUMIRFormatter.h"
#include "SIMachineFunctionInfo.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
using namespace llvm;
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUPreloadKernArgProlog.cpp b/llvm/lib/Target/AMDGPU/AMDGPUPreloadKernArgProlog.cpp
index 90c4f4e6680c2..c943d6fa2dd92 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUPreloadKernArgProlog.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUPreloadKernArgProlog.cpp
@@ -31,7 +31,7 @@
#include "GCNSubtarget.h"
#include "SIMachineFunctionInfo.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
using namespace llvm;
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUWaitSGPRHazards.cpp b/llvm/lib/Target/AMDGPU/AMDGPUWaitSGPRHazards.cpp
index faef40862d718..a04163599aab9 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUWaitSGPRHazards.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUWaitSGPRHazards.cpp
@@ -17,7 +17,7 @@
#include "MCTargetDesc/AMDGPUMCTargetDesc.h"
#include "SIInstrInfo.h"
#include "llvm/ADT/SetVector.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
using namespace llvm;
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUWaitcntUtils.h b/llvm/lib/Target/AMDGPU/AMDGPUWaitcntUtils.h
index 111b28af3b47e..24dbcdf8cc475 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUWaitcntUtils.h
+++ b/llvm/lib/Target/AMDGPU/AMDGPUWaitcntUtils.h
@@ -13,7 +13,7 @@
#include "llvm/ADT/StringExtras.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/raw_ostream.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
namespace llvm {
diff --git a/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp b/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
index 0e169106b9794..75e48f20b6945 100644
--- a/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
+++ b/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
@@ -43,7 +43,7 @@
#include "llvm/Support/Casting.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/MathExtras.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
#include <optional>
using namespace llvm;
diff --git a/llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp b/llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp
index 8e2306682dbc3..8ab90d953200e 100644
--- a/llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp
+++ b/llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp
@@ -21,7 +21,7 @@
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/ScheduleDAG.h"
#include "llvm/Support/Debug.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
using namespace llvm;
diff --git a/llvm/lib/Target/AMDGPU/MCA/AMDGPUCustomBehaviour.cpp b/llvm/lib/Target/AMDGPU/MCA/AMDGPUCustomBehaviour.cpp
index 9ec12131d7236..6c81cbcad3330 100644
--- a/llvm/lib/Target/AMDGPU/MCA/AMDGPUCustomBehaviour.cpp
+++ b/llvm/lib/Target/AMDGPU/MCA/AMDGPUCustomBehaviour.cpp
@@ -18,6 +18,7 @@
#include "llvm/MC/TargetRegistry.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/WithColor.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
namespace llvm::mca {
diff --git a/llvm/lib/Target/AMDGPU/MCA/AMDGPUCustomBehaviour.h b/llvm/lib/Target/AMDGPU/MCA/AMDGPUCustomBehaviour.h
index aeb5c032daee4..c764ff71f5d0c 100644
--- a/llvm/lib/Target/AMDGPU/MCA/AMDGPUCustomBehaviour.h
+++ b/llvm/lib/Target/AMDGPU/MCA/AMDGPUCustomBehaviour.h
@@ -20,7 +20,6 @@
#include "Utils/AMDGPUBaseInfo.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/MCA/CustomBehaviour.h"
-#include "llvm/TargetParser/TargetParser.h"
namespace llvm {
namespace mca {
diff --git a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUAsmBackend.cpp b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUAsmBackend.cpp
index 95da56f420b2d..d71dcf225df50 100644
--- a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUAsmBackend.cpp
+++ b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUAsmBackend.cpp
@@ -21,7 +21,7 @@
#include "llvm/MC/MCValue.h"
#include "llvm/MC/TargetRegistry.h"
#include "llvm/Support/EndianStream.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
using namespace llvm;
using namespace llvm::AMDGPU;
diff --git a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUInstPrinter.cpp b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUInstPrinter.cpp
index 9ffa4458abdc6..19c5ac6a647ce 100644
--- a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUInstPrinter.cpp
+++ b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUInstPrinter.cpp
@@ -20,7 +20,7 @@
#include "llvm/MC/MCInstrInfo.h"
#include "llvm/MC/MCRegisterInfo.h"
#include "llvm/MC/MCSubtargetInfo.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
using namespace llvm;
using namespace llvm::AMDGPU;
diff --git a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCKernelDescriptor.cpp b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCKernelDescriptor.cpp
index 296b248dfa23a..a37fe6741ea55 100644
--- a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCKernelDescriptor.cpp
+++ b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCKernelDescriptor.cpp
@@ -12,7 +12,7 @@
#include "llvm/MC/MCContext.h"
#include "llvm/MC/MCExpr.h"
#include "llvm/MC/MCSubtargetInfo.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
using namespace llvm;
using namespace llvm::AMDGPU;
diff --git a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp
index d6509fdd2b21a..d2d11f0786a16 100644
--- a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp
+++ b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp
@@ -31,7 +31,7 @@
#include "llvm/Support/AMDHSAKernelDescriptor.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/FormattedStream.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
using namespace llvm;
using namespace llvm::AMDGPU;
diff --git a/llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp b/llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp
index e3d7b7a5a519e..c03f18768d590 100644
--- a/llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp
+++ b/llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp
@@ -40,7 +40,7 @@
#include "llvm/IR/Dominators.h"
#include "llvm/InitializePasses.h"
#include "llvm/Support/DebugCounter.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
using namespace llvm;
diff --git a/llvm/lib/Target/AMDGPU/SIMemoryLegalizer.cpp b/llvm/lib/Target/AMDGPU/SIMemoryLegalizer.cpp
index fe87c5afda1b8..25922c5af7da1 100644
--- a/llvm/lib/Target/AMDGPU/SIMemoryLegalizer.cpp
+++ b/llvm/lib/Target/AMDGPU/SIMemoryLegalizer.cpp
@@ -28,7 +28,7 @@
#include "llvm/Support/AMDGPUAddrSpace.h"
#include "llvm/Support/AtomicOrdering.h"
#include "llvm/Support/Debug.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
using namespace llvm;
using namespace llvm::AMDGPU;
diff --git a/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp b/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp
index 6feaa4951b14a..bcdb20c6bd24f 100644
--- a/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp
+++ b/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp
@@ -26,7 +26,7 @@
#include "llvm/MC/MCRegisterInfo.h"
#include "llvm/MC/MCSubtargetInfo.h"
#include "llvm/Support/Comma...
[truncated]
|
|
@llvm/pr-subscribers-backend-amdgpu Author: Shilei Tian (shiltian) ChangesPatch is 67.65 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/198433.diff 33 Files Affected:
diff --git a/clang/lib/Basic/TargetID.cpp b/clang/lib/Basic/TargetID.cpp
index 446577930b017..6d9ba55ccd9d7 100644
--- a/clang/lib/Basic/TargetID.cpp
+++ b/clang/lib/Basic/TargetID.cpp
@@ -11,7 +11,7 @@
#include "llvm/ADT/SmallSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/Support/Path.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
#include "llvm/TargetParser/Triple.h"
#include <map>
#include <optional>
diff --git a/clang/lib/Basic/Targets/AMDGPU.cpp b/clang/lib/Basic/Targets/AMDGPU.cpp
index 48ba5d94df581..6b077dfa8e142 100644
--- a/clang/lib/Basic/Targets/AMDGPU.cpp
+++ b/clang/lib/Basic/Targets/AMDGPU.cpp
@@ -17,6 +17,7 @@
#include "clang/Basic/MacroBuilder.h"
#include "clang/Basic/TargetBuiltins.h"
#include "llvm/ADT/SmallString.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
using namespace clang;
using namespace clang::targets;
diff --git a/clang/lib/Basic/Targets/AMDGPU.h b/clang/lib/Basic/Targets/AMDGPU.h
index 38c92e73708f8..f1bfca4c42417 100644
--- a/clang/lib/Basic/Targets/AMDGPU.h
+++ b/clang/lib/Basic/Targets/AMDGPU.h
@@ -19,7 +19,7 @@
#include "llvm/ADT/StringSet.h"
#include "llvm/Support/AMDGPUAddrSpace.h"
#include "llvm/Support/Compiler.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
#include "llvm/TargetParser/Triple.h"
#include <optional>
diff --git a/clang/lib/Basic/Targets/SPIR.cpp b/clang/lib/Basic/Targets/SPIR.cpp
index b6d6b213d78ed..8fdb45acf381f 100644
--- a/clang/lib/Basic/Targets/SPIR.cpp
+++ b/clang/lib/Basic/Targets/SPIR.cpp
@@ -14,7 +14,7 @@
#include "AMDGPU.h"
#include "clang/Basic/MacroBuilder.h"
#include "clang/Basic/TargetBuiltins.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
using namespace clang;
using namespace clang::targets;
diff --git a/clang/lib/Driver/ToolChains/AMDGPU.cpp b/clang/lib/Driver/ToolChains/AMDGPU.cpp
index d2d8e56eb22be..5c3baa6898126 100644
--- a/clang/lib/Driver/ToolChains/AMDGPU.cpp
+++ b/clang/lib/Driver/ToolChains/AMDGPU.cpp
@@ -22,8 +22,8 @@
#include "llvm/Support/Path.h"
#include "llvm/Support/Process.h"
#include "llvm/Support/VirtualFileSystem.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
#include "llvm/TargetParser/Host.h"
-#include "llvm/TargetParser/TargetParser.h"
#include <optional>
#include <system_error>
diff --git a/clang/lib/Driver/ToolChains/AMDGPU.h b/clang/lib/Driver/ToolChains/AMDGPU.h
index 20b9365c91bbf..ebc02fa477894 100644
--- a/clang/lib/Driver/ToolChains/AMDGPU.h
+++ b/clang/lib/Driver/ToolChains/AMDGPU.h
@@ -15,7 +15,7 @@
#include "clang/Driver/ToolChain.h"
#include "clang/Options/Options.h"
#include "llvm/ADT/SmallString.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
#include <map>
diff --git a/clang/lib/Driver/ToolChains/Arch/AMDGPU.cpp b/clang/lib/Driver/ToolChains/Arch/AMDGPU.cpp
index 8a9cb7ef5b367..461ec590faf40 100644
--- a/clang/lib/Driver/ToolChains/Arch/AMDGPU.cpp
+++ b/clang/lib/Driver/ToolChains/Arch/AMDGPU.cpp
@@ -7,10 +7,8 @@
//===----------------------------------------------------------------------===//
#include "AMDGPU.h"
-#include "clang/Basic/TargetID.h"
#include "clang/Driver/Driver.h"
#include "clang/Options/Options.h"
-#include "llvm/TargetParser/TargetParser.h"
using namespace clang::driver;
using namespace clang::driver::tools;
diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp
index 9c2d1955a9e12..6b6bfc284e495 100644
--- a/clang/lib/Driver/ToolChains/CommonArgs.cpp
+++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp
@@ -58,9 +58,9 @@
#include "llvm/Support/Threading.h"
#include "llvm/Support/VirtualFileSystem.h"
#include "llvm/Support/YAMLParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
#include "llvm/TargetParser/Host.h"
#include "llvm/TargetParser/PPCTargetParser.h"
-#include "llvm/TargetParser/TargetParser.h"
#include <optional>
using namespace clang::driver;
diff --git a/clang/lib/Sema/SemaAMDGPU.cpp b/clang/lib/Sema/SemaAMDGPU.cpp
index 96a4648f06314..1d2b3898c92d6 100644
--- a/clang/lib/Sema/SemaAMDGPU.cpp
+++ b/clang/lib/Sema/SemaAMDGPU.cpp
@@ -26,7 +26,7 @@
#include "llvm/ADT/StringMap.h"
#include "llvm/Support/AMDGPUAddrSpace.h"
#include "llvm/Support/AtomicOrdering.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
#include <cstdint>
#include <utility>
diff --git a/flang/lib/Frontend/CompilerInstance.cpp b/flang/lib/Frontend/CompilerInstance.cpp
index 28011e8bf685a..3e820d386f8a9 100644
--- a/flang/lib/Frontend/CompilerInstance.cpp
+++ b/flang/lib/Frontend/CompilerInstance.cpp
@@ -29,8 +29,8 @@
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/Path.h"
#include "llvm/Support/raw_ostream.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
#include "llvm/TargetParser/PPCTargetParser.h"
-#include "llvm/TargetParser/TargetParser.h"
#include "llvm/TargetParser/Triple.h"
using namespace Fortran::frontend;
diff --git a/llvm/include/llvm/TargetParser/AMDGPUTargetParser.h b/llvm/include/llvm/TargetParser/AMDGPUTargetParser.h
new file mode 100644
index 0000000000000..7c192b36b6ec8
--- /dev/null
+++ b/llvm/include/llvm/TargetParser/AMDGPUTargetParser.h
@@ -0,0 +1,109 @@
+//===-- AMDGPUTargetParser - Parser for AMDGPU features ---------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// This file implements a target parser to recognise AMDGPU hardware features.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_TARGETPARSER_AMDGPUTARGETPARSER_H
+#define LLVM_TARGETPARSER_AMDGPUTARGETPARSER_H
+
+#include "llvm/ADT/StringMap.h"
+#include "llvm/ADT/StringRef.h"
+#include "llvm/Support/Compiler.h"
+#include <cstdint>
+#include <utility>
+
+namespace llvm {
+
+template <typename T> class SmallVectorImpl;
+class Triple;
+
+namespace AMDGPU {
+
+/// GPU kinds supported by the AMDGPU target.
+enum GPUKind : uint32_t {
+ // Not specified processor.
+ GK_NONE = 0,
+
+#define R600_GPU(NAME, ENUM, FEATURES) ENUM,
+#define AMDGCN_GPU(NAME, ENUM, ISAVERSION, FEATURES) ENUM,
+#include "AMDGPUTargetParser.def"
+
+ GK_AMDGCN_GENERIC_FIRST = GK_GFX9_GENERIC,
+ GK_AMDGCN_GENERIC_LAST = GK_GFX12_5_GENERIC,
+};
+
+/// Instruction set architecture version.
+struct IsaVersion {
+ unsigned Major;
+ unsigned Minor;
+ unsigned Stepping;
+};
+
+// This isn't comprehensive for now, just things that are needed from the
+// frontend driver.
+enum ArchFeatureKind : uint32_t {
+ FEATURE_NONE = 0,
+
+ // These features only exist for r600, and are implied true for amdgcn.
+ FEATURE_FMA = 1 << 1,
+ FEATURE_LDEXP = 1 << 2,
+ FEATURE_FP64 = 1 << 3,
+
+ // Common features.
+ FEATURE_FAST_FMA_F32 = 1 << 4,
+ FEATURE_FAST_DENORMAL_F32 = 1 << 5,
+
+ // Wavefront 32 is available.
+ FEATURE_WAVE32 = 1 << 6,
+
+ // Xnack is available.
+ FEATURE_XNACK = 1 << 7,
+
+ // Sram-ecc is available.
+ FEATURE_SRAMECC = 1 << 8,
+
+ // WGP mode is supported.
+ FEATURE_WGP = 1 << 9,
+
+ // Xnack is available by default
+ FEATURE_XNACK_ALWAYS = 1 << 10
+};
+
+enum FeatureError : uint32_t {
+ NO_ERROR = 0,
+ INVALID_FEATURE_COMBINATION,
+ UNSUPPORTED_TARGET_FEATURE
+};
+
+LLVM_ABI StringRef getArchFamilyNameAMDGCN(GPUKind AK);
+
+LLVM_ABI StringRef getArchNameAMDGCN(GPUKind AK);
+LLVM_ABI StringRef getArchNameR600(GPUKind AK);
+LLVM_ABI StringRef getCanonicalArchName(const Triple &T, StringRef Arch);
+LLVM_ABI GPUKind parseArchAMDGCN(StringRef CPU);
+LLVM_ABI GPUKind parseArchR600(StringRef CPU);
+LLVM_ABI unsigned getArchAttrAMDGCN(GPUKind AK);
+LLVM_ABI unsigned getArchAttrR600(GPUKind AK);
+
+LLVM_ABI void fillValidArchListAMDGCN(SmallVectorImpl<StringRef> &Values);
+LLVM_ABI void fillValidArchListR600(SmallVectorImpl<StringRef> &Values);
+
+LLVM_ABI IsaVersion getIsaVersion(StringRef GPU);
+
+/// Fills Features map with default values for given target GPU.
+/// \p Features contains overriding target features and this function returns
+/// default target features with entries overridden by \p Features.
+LLVM_ABI std::pair<FeatureError, StringRef>
+fillAMDGPUFeatureMap(StringRef GPU, const Triple &T, StringMap<bool> &Features);
+} // namespace AMDGPU
+
+} // namespace llvm
+
+#endif
diff --git a/llvm/include/llvm/TargetParser/TargetParser.h b/llvm/include/llvm/TargetParser/TargetParser.h
index caf57c804db46..b65ff37dfc958 100644
--- a/llvm/include/llvm/TargetParser/TargetParser.h
+++ b/llvm/include/llvm/TargetParser/TargetParser.h
@@ -19,99 +19,10 @@
#include "llvm/ADT/StringMap.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Support/Compiler.h"
+#include <optional>
namespace llvm {
-template <typename T> class SmallVectorImpl;
-class Triple;
-
-// Target specific information in their own namespaces.
-// (ARM/AArch64/X86 are declared in ARM/AArch64/X86TargetParser.h)
-// These should be generated from TableGen because the information is already
-// there, and there is where new information about targets will be added.
-// FIXME: To TableGen this we need to make some table generated files available
-// even if the back-end is not compiled with LLVM, plus we need to create a new
-// back-end to TableGen to create these clean tables.
-namespace AMDGPU {
-
-/// GPU kinds supported by the AMDGPU target.
-enum GPUKind : uint32_t {
- // Not specified processor.
- GK_NONE = 0,
-
-#define R600_GPU(NAME, ENUM, FEATURES) ENUM,
-#define AMDGCN_GPU(NAME, ENUM, ISAVERSION, FEATURES) ENUM,
-#include "AMDGPUTargetParser.def"
-
- GK_AMDGCN_GENERIC_FIRST = GK_GFX9_GENERIC,
- GK_AMDGCN_GENERIC_LAST = GK_GFX12_5_GENERIC,
-};
-
-/// Instruction set architecture version.
-struct IsaVersion {
- unsigned Major;
- unsigned Minor;
- unsigned Stepping;
-};
-
-// This isn't comprehensive for now, just things that are needed from the
-// frontend driver.
-enum ArchFeatureKind : uint32_t {
- FEATURE_NONE = 0,
-
- // These features only exist for r600, and are implied true for amdgcn.
- FEATURE_FMA = 1 << 1,
- FEATURE_LDEXP = 1 << 2,
- FEATURE_FP64 = 1 << 3,
-
- // Common features.
- FEATURE_FAST_FMA_F32 = 1 << 4,
- FEATURE_FAST_DENORMAL_F32 = 1 << 5,
-
- // Wavefront 32 is available.
- FEATURE_WAVE32 = 1 << 6,
-
- // Xnack is available.
- FEATURE_XNACK = 1 << 7,
-
- // Sram-ecc is available.
- FEATURE_SRAMECC = 1 << 8,
-
- // WGP mode is supported.
- FEATURE_WGP = 1 << 9,
-
- // Xnack is available by default
- FEATURE_XNACK_ALWAYS = 1 << 10
-};
-
-enum FeatureError : uint32_t {
- NO_ERROR = 0,
- INVALID_FEATURE_COMBINATION,
- UNSUPPORTED_TARGET_FEATURE
-};
-
-LLVM_ABI StringRef getArchFamilyNameAMDGCN(GPUKind AK);
-
-LLVM_ABI StringRef getArchNameAMDGCN(GPUKind AK);
-LLVM_ABI StringRef getArchNameR600(GPUKind AK);
-LLVM_ABI StringRef getCanonicalArchName(const Triple &T, StringRef Arch);
-LLVM_ABI GPUKind parseArchAMDGCN(StringRef CPU);
-LLVM_ABI GPUKind parseArchR600(StringRef CPU);
-LLVM_ABI unsigned getArchAttrAMDGCN(GPUKind AK);
-LLVM_ABI unsigned getArchAttrR600(GPUKind AK);
-
-LLVM_ABI void fillValidArchListAMDGCN(SmallVectorImpl<StringRef> &Values);
-LLVM_ABI void fillValidArchListR600(SmallVectorImpl<StringRef> &Values);
-
-LLVM_ABI IsaVersion getIsaVersion(StringRef GPU);
-
-/// Fills Features map with default values for given target GPU.
-/// \p Features contains overriding target features and this function returns
-/// default target features with entries overridden by \p Features.
-LLVM_ABI std::pair<FeatureError, StringRef>
-fillAMDGPUFeatureMap(StringRef GPU, const Triple &T, StringMap<bool> &Features);
-} // namespace AMDGPU
-
struct BasicSubtargetFeatureKV {
const char *Key; ///< K-V key string
unsigned Value; ///< K-V integer value
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp b/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
index 6e8ad3f9f1a24..18b3af1cea294 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
@@ -50,7 +50,7 @@
#include "llvm/Support/Compiler.h"
#include "llvm/Target/TargetLoweringObjectFile.h"
#include "llvm/Target/TargetMachine.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
using namespace llvm;
using namespace llvm::AMDGPU;
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUMIRFormatter.cpp b/llvm/lib/Target/AMDGPU/AMDGPUMIRFormatter.cpp
index e262d4e715fea..873aae5daae94 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUMIRFormatter.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUMIRFormatter.cpp
@@ -13,7 +13,7 @@
#include "AMDGPUMIRFormatter.h"
#include "SIMachineFunctionInfo.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
using namespace llvm;
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUPreloadKernArgProlog.cpp b/llvm/lib/Target/AMDGPU/AMDGPUPreloadKernArgProlog.cpp
index 90c4f4e6680c2..c943d6fa2dd92 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUPreloadKernArgProlog.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUPreloadKernArgProlog.cpp
@@ -31,7 +31,7 @@
#include "GCNSubtarget.h"
#include "SIMachineFunctionInfo.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
using namespace llvm;
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUWaitSGPRHazards.cpp b/llvm/lib/Target/AMDGPU/AMDGPUWaitSGPRHazards.cpp
index faef40862d718..a04163599aab9 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUWaitSGPRHazards.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUWaitSGPRHazards.cpp
@@ -17,7 +17,7 @@
#include "MCTargetDesc/AMDGPUMCTargetDesc.h"
#include "SIInstrInfo.h"
#include "llvm/ADT/SetVector.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
using namespace llvm;
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUWaitcntUtils.h b/llvm/lib/Target/AMDGPU/AMDGPUWaitcntUtils.h
index 111b28af3b47e..24dbcdf8cc475 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUWaitcntUtils.h
+++ b/llvm/lib/Target/AMDGPU/AMDGPUWaitcntUtils.h
@@ -13,7 +13,7 @@
#include "llvm/ADT/StringExtras.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/raw_ostream.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
namespace llvm {
diff --git a/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp b/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
index 0e169106b9794..75e48f20b6945 100644
--- a/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
+++ b/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
@@ -43,7 +43,7 @@
#include "llvm/Support/Casting.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/MathExtras.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
#include <optional>
using namespace llvm;
diff --git a/llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp b/llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp
index 8e2306682dbc3..8ab90d953200e 100644
--- a/llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp
+++ b/llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp
@@ -21,7 +21,7 @@
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/ScheduleDAG.h"
#include "llvm/Support/Debug.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
using namespace llvm;
diff --git a/llvm/lib/Target/AMDGPU/MCA/AMDGPUCustomBehaviour.cpp b/llvm/lib/Target/AMDGPU/MCA/AMDGPUCustomBehaviour.cpp
index 9ec12131d7236..6c81cbcad3330 100644
--- a/llvm/lib/Target/AMDGPU/MCA/AMDGPUCustomBehaviour.cpp
+++ b/llvm/lib/Target/AMDGPU/MCA/AMDGPUCustomBehaviour.cpp
@@ -18,6 +18,7 @@
#include "llvm/MC/TargetRegistry.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/WithColor.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
namespace llvm::mca {
diff --git a/llvm/lib/Target/AMDGPU/MCA/AMDGPUCustomBehaviour.h b/llvm/lib/Target/AMDGPU/MCA/AMDGPUCustomBehaviour.h
index aeb5c032daee4..c764ff71f5d0c 100644
--- a/llvm/lib/Target/AMDGPU/MCA/AMDGPUCustomBehaviour.h
+++ b/llvm/lib/Target/AMDGPU/MCA/AMDGPUCustomBehaviour.h
@@ -20,7 +20,6 @@
#include "Utils/AMDGPUBaseInfo.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/MCA/CustomBehaviour.h"
-#include "llvm/TargetParser/TargetParser.h"
namespace llvm {
namespace mca {
diff --git a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUAsmBackend.cpp b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUAsmBackend.cpp
index 95da56f420b2d..d71dcf225df50 100644
--- a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUAsmBackend.cpp
+++ b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUAsmBackend.cpp
@@ -21,7 +21,7 @@
#include "llvm/MC/MCValue.h"
#include "llvm/MC/TargetRegistry.h"
#include "llvm/Support/EndianStream.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
using namespace llvm;
using namespace llvm::AMDGPU;
diff --git a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUInstPrinter.cpp b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUInstPrinter.cpp
index 9ffa4458abdc6..19c5ac6a647ce 100644
--- a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUInstPrinter.cpp
+++ b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUInstPrinter.cpp
@@ -20,7 +20,7 @@
#include "llvm/MC/MCInstrInfo.h"
#include "llvm/MC/MCRegisterInfo.h"
#include "llvm/MC/MCSubtargetInfo.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
using namespace llvm;
using namespace llvm::AMDGPU;
diff --git a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCKernelDescriptor.cpp b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCKernelDescriptor.cpp
index 296b248dfa23a..a37fe6741ea55 100644
--- a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCKernelDescriptor.cpp
+++ b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCKernelDescriptor.cpp
@@ -12,7 +12,7 @@
#include "llvm/MC/MCContext.h"
#include "llvm/MC/MCExpr.h"
#include "llvm/MC/MCSubtargetInfo.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
using namespace llvm;
using namespace llvm::AMDGPU;
diff --git a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp
index d6509fdd2b21a..d2d11f0786a16 100644
--- a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp
+++ b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp
@@ -31,7 +31,7 @@
#include "llvm/Support/AMDHSAKernelDescriptor.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/FormattedStream.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
using namespace llvm;
using namespace llvm::AMDGPU;
diff --git a/llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp b/llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp
index e3d7b7a5a519e..c03f18768d590 100644
--- a/llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp
+++ b/llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp
@@ -40,7 +40,7 @@
#include "llvm/IR/Dominators.h"
#include "llvm/InitializePasses.h"
#include "llvm/Support/DebugCounter.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
using namespace llvm;
diff --git a/llvm/lib/Target/AMDGPU/SIMemoryLegalizer.cpp b/llvm/lib/Target/AMDGPU/SIMemoryLegalizer.cpp
index fe87c5afda1b8..25922c5af7da1 100644
--- a/llvm/lib/Target/AMDGPU/SIMemoryLegalizer.cpp
+++ b/llvm/lib/Target/AMDGPU/SIMemoryLegalizer.cpp
@@ -28,7 +28,7 @@
#include "llvm/Support/AMDGPUAddrSpace.h"
#include "llvm/Support/AtomicOrdering.h"
#include "llvm/Support/Debug.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
using namespace llvm;
using namespace llvm::AMDGPU;
diff --git a/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp b/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp
index 6feaa4951b14a..bcdb20c6bd24f 100644
--- a/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp
+++ b/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp
@@ -26,7 +26,7 @@
#include "llvm/MC/MCRegisterInfo.h"
#include "llvm/MC/MCSubtargetInfo.h"
#include "llvm/Support/Comma...
[truncated]
|
|
@llvm/pr-subscribers-mlir Author: Shilei Tian (shiltian) ChangesPatch is 67.65 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/198433.diff 33 Files Affected:
diff --git a/clang/lib/Basic/TargetID.cpp b/clang/lib/Basic/TargetID.cpp
index 446577930b017..6d9ba55ccd9d7 100644
--- a/clang/lib/Basic/TargetID.cpp
+++ b/clang/lib/Basic/TargetID.cpp
@@ -11,7 +11,7 @@
#include "llvm/ADT/SmallSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/Support/Path.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
#include "llvm/TargetParser/Triple.h"
#include <map>
#include <optional>
diff --git a/clang/lib/Basic/Targets/AMDGPU.cpp b/clang/lib/Basic/Targets/AMDGPU.cpp
index 48ba5d94df581..6b077dfa8e142 100644
--- a/clang/lib/Basic/Targets/AMDGPU.cpp
+++ b/clang/lib/Basic/Targets/AMDGPU.cpp
@@ -17,6 +17,7 @@
#include "clang/Basic/MacroBuilder.h"
#include "clang/Basic/TargetBuiltins.h"
#include "llvm/ADT/SmallString.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
using namespace clang;
using namespace clang::targets;
diff --git a/clang/lib/Basic/Targets/AMDGPU.h b/clang/lib/Basic/Targets/AMDGPU.h
index 38c92e73708f8..f1bfca4c42417 100644
--- a/clang/lib/Basic/Targets/AMDGPU.h
+++ b/clang/lib/Basic/Targets/AMDGPU.h
@@ -19,7 +19,7 @@
#include "llvm/ADT/StringSet.h"
#include "llvm/Support/AMDGPUAddrSpace.h"
#include "llvm/Support/Compiler.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
#include "llvm/TargetParser/Triple.h"
#include <optional>
diff --git a/clang/lib/Basic/Targets/SPIR.cpp b/clang/lib/Basic/Targets/SPIR.cpp
index b6d6b213d78ed..8fdb45acf381f 100644
--- a/clang/lib/Basic/Targets/SPIR.cpp
+++ b/clang/lib/Basic/Targets/SPIR.cpp
@@ -14,7 +14,7 @@
#include "AMDGPU.h"
#include "clang/Basic/MacroBuilder.h"
#include "clang/Basic/TargetBuiltins.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
using namespace clang;
using namespace clang::targets;
diff --git a/clang/lib/Driver/ToolChains/AMDGPU.cpp b/clang/lib/Driver/ToolChains/AMDGPU.cpp
index d2d8e56eb22be..5c3baa6898126 100644
--- a/clang/lib/Driver/ToolChains/AMDGPU.cpp
+++ b/clang/lib/Driver/ToolChains/AMDGPU.cpp
@@ -22,8 +22,8 @@
#include "llvm/Support/Path.h"
#include "llvm/Support/Process.h"
#include "llvm/Support/VirtualFileSystem.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
#include "llvm/TargetParser/Host.h"
-#include "llvm/TargetParser/TargetParser.h"
#include <optional>
#include <system_error>
diff --git a/clang/lib/Driver/ToolChains/AMDGPU.h b/clang/lib/Driver/ToolChains/AMDGPU.h
index 20b9365c91bbf..ebc02fa477894 100644
--- a/clang/lib/Driver/ToolChains/AMDGPU.h
+++ b/clang/lib/Driver/ToolChains/AMDGPU.h
@@ -15,7 +15,7 @@
#include "clang/Driver/ToolChain.h"
#include "clang/Options/Options.h"
#include "llvm/ADT/SmallString.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
#include <map>
diff --git a/clang/lib/Driver/ToolChains/Arch/AMDGPU.cpp b/clang/lib/Driver/ToolChains/Arch/AMDGPU.cpp
index 8a9cb7ef5b367..461ec590faf40 100644
--- a/clang/lib/Driver/ToolChains/Arch/AMDGPU.cpp
+++ b/clang/lib/Driver/ToolChains/Arch/AMDGPU.cpp
@@ -7,10 +7,8 @@
//===----------------------------------------------------------------------===//
#include "AMDGPU.h"
-#include "clang/Basic/TargetID.h"
#include "clang/Driver/Driver.h"
#include "clang/Options/Options.h"
-#include "llvm/TargetParser/TargetParser.h"
using namespace clang::driver;
using namespace clang::driver::tools;
diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp
index 9c2d1955a9e12..6b6bfc284e495 100644
--- a/clang/lib/Driver/ToolChains/CommonArgs.cpp
+++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp
@@ -58,9 +58,9 @@
#include "llvm/Support/Threading.h"
#include "llvm/Support/VirtualFileSystem.h"
#include "llvm/Support/YAMLParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
#include "llvm/TargetParser/Host.h"
#include "llvm/TargetParser/PPCTargetParser.h"
-#include "llvm/TargetParser/TargetParser.h"
#include <optional>
using namespace clang::driver;
diff --git a/clang/lib/Sema/SemaAMDGPU.cpp b/clang/lib/Sema/SemaAMDGPU.cpp
index 96a4648f06314..1d2b3898c92d6 100644
--- a/clang/lib/Sema/SemaAMDGPU.cpp
+++ b/clang/lib/Sema/SemaAMDGPU.cpp
@@ -26,7 +26,7 @@
#include "llvm/ADT/StringMap.h"
#include "llvm/Support/AMDGPUAddrSpace.h"
#include "llvm/Support/AtomicOrdering.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
#include <cstdint>
#include <utility>
diff --git a/flang/lib/Frontend/CompilerInstance.cpp b/flang/lib/Frontend/CompilerInstance.cpp
index 28011e8bf685a..3e820d386f8a9 100644
--- a/flang/lib/Frontend/CompilerInstance.cpp
+++ b/flang/lib/Frontend/CompilerInstance.cpp
@@ -29,8 +29,8 @@
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/Path.h"
#include "llvm/Support/raw_ostream.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
#include "llvm/TargetParser/PPCTargetParser.h"
-#include "llvm/TargetParser/TargetParser.h"
#include "llvm/TargetParser/Triple.h"
using namespace Fortran::frontend;
diff --git a/llvm/include/llvm/TargetParser/AMDGPUTargetParser.h b/llvm/include/llvm/TargetParser/AMDGPUTargetParser.h
new file mode 100644
index 0000000000000..7c192b36b6ec8
--- /dev/null
+++ b/llvm/include/llvm/TargetParser/AMDGPUTargetParser.h
@@ -0,0 +1,109 @@
+//===-- AMDGPUTargetParser - Parser for AMDGPU features ---------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// This file implements a target parser to recognise AMDGPU hardware features.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_TARGETPARSER_AMDGPUTARGETPARSER_H
+#define LLVM_TARGETPARSER_AMDGPUTARGETPARSER_H
+
+#include "llvm/ADT/StringMap.h"
+#include "llvm/ADT/StringRef.h"
+#include "llvm/Support/Compiler.h"
+#include <cstdint>
+#include <utility>
+
+namespace llvm {
+
+template <typename T> class SmallVectorImpl;
+class Triple;
+
+namespace AMDGPU {
+
+/// GPU kinds supported by the AMDGPU target.
+enum GPUKind : uint32_t {
+ // Not specified processor.
+ GK_NONE = 0,
+
+#define R600_GPU(NAME, ENUM, FEATURES) ENUM,
+#define AMDGCN_GPU(NAME, ENUM, ISAVERSION, FEATURES) ENUM,
+#include "AMDGPUTargetParser.def"
+
+ GK_AMDGCN_GENERIC_FIRST = GK_GFX9_GENERIC,
+ GK_AMDGCN_GENERIC_LAST = GK_GFX12_5_GENERIC,
+};
+
+/// Instruction set architecture version.
+struct IsaVersion {
+ unsigned Major;
+ unsigned Minor;
+ unsigned Stepping;
+};
+
+// This isn't comprehensive for now, just things that are needed from the
+// frontend driver.
+enum ArchFeatureKind : uint32_t {
+ FEATURE_NONE = 0,
+
+ // These features only exist for r600, and are implied true for amdgcn.
+ FEATURE_FMA = 1 << 1,
+ FEATURE_LDEXP = 1 << 2,
+ FEATURE_FP64 = 1 << 3,
+
+ // Common features.
+ FEATURE_FAST_FMA_F32 = 1 << 4,
+ FEATURE_FAST_DENORMAL_F32 = 1 << 5,
+
+ // Wavefront 32 is available.
+ FEATURE_WAVE32 = 1 << 6,
+
+ // Xnack is available.
+ FEATURE_XNACK = 1 << 7,
+
+ // Sram-ecc is available.
+ FEATURE_SRAMECC = 1 << 8,
+
+ // WGP mode is supported.
+ FEATURE_WGP = 1 << 9,
+
+ // Xnack is available by default
+ FEATURE_XNACK_ALWAYS = 1 << 10
+};
+
+enum FeatureError : uint32_t {
+ NO_ERROR = 0,
+ INVALID_FEATURE_COMBINATION,
+ UNSUPPORTED_TARGET_FEATURE
+};
+
+LLVM_ABI StringRef getArchFamilyNameAMDGCN(GPUKind AK);
+
+LLVM_ABI StringRef getArchNameAMDGCN(GPUKind AK);
+LLVM_ABI StringRef getArchNameR600(GPUKind AK);
+LLVM_ABI StringRef getCanonicalArchName(const Triple &T, StringRef Arch);
+LLVM_ABI GPUKind parseArchAMDGCN(StringRef CPU);
+LLVM_ABI GPUKind parseArchR600(StringRef CPU);
+LLVM_ABI unsigned getArchAttrAMDGCN(GPUKind AK);
+LLVM_ABI unsigned getArchAttrR600(GPUKind AK);
+
+LLVM_ABI void fillValidArchListAMDGCN(SmallVectorImpl<StringRef> &Values);
+LLVM_ABI void fillValidArchListR600(SmallVectorImpl<StringRef> &Values);
+
+LLVM_ABI IsaVersion getIsaVersion(StringRef GPU);
+
+/// Fills Features map with default values for given target GPU.
+/// \p Features contains overriding target features and this function returns
+/// default target features with entries overridden by \p Features.
+LLVM_ABI std::pair<FeatureError, StringRef>
+fillAMDGPUFeatureMap(StringRef GPU, const Triple &T, StringMap<bool> &Features);
+} // namespace AMDGPU
+
+} // namespace llvm
+
+#endif
diff --git a/llvm/include/llvm/TargetParser/TargetParser.h b/llvm/include/llvm/TargetParser/TargetParser.h
index caf57c804db46..b65ff37dfc958 100644
--- a/llvm/include/llvm/TargetParser/TargetParser.h
+++ b/llvm/include/llvm/TargetParser/TargetParser.h
@@ -19,99 +19,10 @@
#include "llvm/ADT/StringMap.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Support/Compiler.h"
+#include <optional>
namespace llvm {
-template <typename T> class SmallVectorImpl;
-class Triple;
-
-// Target specific information in their own namespaces.
-// (ARM/AArch64/X86 are declared in ARM/AArch64/X86TargetParser.h)
-// These should be generated from TableGen because the information is already
-// there, and there is where new information about targets will be added.
-// FIXME: To TableGen this we need to make some table generated files available
-// even if the back-end is not compiled with LLVM, plus we need to create a new
-// back-end to TableGen to create these clean tables.
-namespace AMDGPU {
-
-/// GPU kinds supported by the AMDGPU target.
-enum GPUKind : uint32_t {
- // Not specified processor.
- GK_NONE = 0,
-
-#define R600_GPU(NAME, ENUM, FEATURES) ENUM,
-#define AMDGCN_GPU(NAME, ENUM, ISAVERSION, FEATURES) ENUM,
-#include "AMDGPUTargetParser.def"
-
- GK_AMDGCN_GENERIC_FIRST = GK_GFX9_GENERIC,
- GK_AMDGCN_GENERIC_LAST = GK_GFX12_5_GENERIC,
-};
-
-/// Instruction set architecture version.
-struct IsaVersion {
- unsigned Major;
- unsigned Minor;
- unsigned Stepping;
-};
-
-// This isn't comprehensive for now, just things that are needed from the
-// frontend driver.
-enum ArchFeatureKind : uint32_t {
- FEATURE_NONE = 0,
-
- // These features only exist for r600, and are implied true for amdgcn.
- FEATURE_FMA = 1 << 1,
- FEATURE_LDEXP = 1 << 2,
- FEATURE_FP64 = 1 << 3,
-
- // Common features.
- FEATURE_FAST_FMA_F32 = 1 << 4,
- FEATURE_FAST_DENORMAL_F32 = 1 << 5,
-
- // Wavefront 32 is available.
- FEATURE_WAVE32 = 1 << 6,
-
- // Xnack is available.
- FEATURE_XNACK = 1 << 7,
-
- // Sram-ecc is available.
- FEATURE_SRAMECC = 1 << 8,
-
- // WGP mode is supported.
- FEATURE_WGP = 1 << 9,
-
- // Xnack is available by default
- FEATURE_XNACK_ALWAYS = 1 << 10
-};
-
-enum FeatureError : uint32_t {
- NO_ERROR = 0,
- INVALID_FEATURE_COMBINATION,
- UNSUPPORTED_TARGET_FEATURE
-};
-
-LLVM_ABI StringRef getArchFamilyNameAMDGCN(GPUKind AK);
-
-LLVM_ABI StringRef getArchNameAMDGCN(GPUKind AK);
-LLVM_ABI StringRef getArchNameR600(GPUKind AK);
-LLVM_ABI StringRef getCanonicalArchName(const Triple &T, StringRef Arch);
-LLVM_ABI GPUKind parseArchAMDGCN(StringRef CPU);
-LLVM_ABI GPUKind parseArchR600(StringRef CPU);
-LLVM_ABI unsigned getArchAttrAMDGCN(GPUKind AK);
-LLVM_ABI unsigned getArchAttrR600(GPUKind AK);
-
-LLVM_ABI void fillValidArchListAMDGCN(SmallVectorImpl<StringRef> &Values);
-LLVM_ABI void fillValidArchListR600(SmallVectorImpl<StringRef> &Values);
-
-LLVM_ABI IsaVersion getIsaVersion(StringRef GPU);
-
-/// Fills Features map with default values for given target GPU.
-/// \p Features contains overriding target features and this function returns
-/// default target features with entries overridden by \p Features.
-LLVM_ABI std::pair<FeatureError, StringRef>
-fillAMDGPUFeatureMap(StringRef GPU, const Triple &T, StringMap<bool> &Features);
-} // namespace AMDGPU
-
struct BasicSubtargetFeatureKV {
const char *Key; ///< K-V key string
unsigned Value; ///< K-V integer value
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp b/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
index 6e8ad3f9f1a24..18b3af1cea294 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
@@ -50,7 +50,7 @@
#include "llvm/Support/Compiler.h"
#include "llvm/Target/TargetLoweringObjectFile.h"
#include "llvm/Target/TargetMachine.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
using namespace llvm;
using namespace llvm::AMDGPU;
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUMIRFormatter.cpp b/llvm/lib/Target/AMDGPU/AMDGPUMIRFormatter.cpp
index e262d4e715fea..873aae5daae94 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUMIRFormatter.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUMIRFormatter.cpp
@@ -13,7 +13,7 @@
#include "AMDGPUMIRFormatter.h"
#include "SIMachineFunctionInfo.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
using namespace llvm;
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUPreloadKernArgProlog.cpp b/llvm/lib/Target/AMDGPU/AMDGPUPreloadKernArgProlog.cpp
index 90c4f4e6680c2..c943d6fa2dd92 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUPreloadKernArgProlog.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUPreloadKernArgProlog.cpp
@@ -31,7 +31,7 @@
#include "GCNSubtarget.h"
#include "SIMachineFunctionInfo.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
using namespace llvm;
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUWaitSGPRHazards.cpp b/llvm/lib/Target/AMDGPU/AMDGPUWaitSGPRHazards.cpp
index faef40862d718..a04163599aab9 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUWaitSGPRHazards.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUWaitSGPRHazards.cpp
@@ -17,7 +17,7 @@
#include "MCTargetDesc/AMDGPUMCTargetDesc.h"
#include "SIInstrInfo.h"
#include "llvm/ADT/SetVector.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
using namespace llvm;
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUWaitcntUtils.h b/llvm/lib/Target/AMDGPU/AMDGPUWaitcntUtils.h
index 111b28af3b47e..24dbcdf8cc475 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUWaitcntUtils.h
+++ b/llvm/lib/Target/AMDGPU/AMDGPUWaitcntUtils.h
@@ -13,7 +13,7 @@
#include "llvm/ADT/StringExtras.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/raw_ostream.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
namespace llvm {
diff --git a/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp b/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
index 0e169106b9794..75e48f20b6945 100644
--- a/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
+++ b/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
@@ -43,7 +43,7 @@
#include "llvm/Support/Casting.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/MathExtras.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
#include <optional>
using namespace llvm;
diff --git a/llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp b/llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp
index 8e2306682dbc3..8ab90d953200e 100644
--- a/llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp
+++ b/llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp
@@ -21,7 +21,7 @@
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/ScheduleDAG.h"
#include "llvm/Support/Debug.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
using namespace llvm;
diff --git a/llvm/lib/Target/AMDGPU/MCA/AMDGPUCustomBehaviour.cpp b/llvm/lib/Target/AMDGPU/MCA/AMDGPUCustomBehaviour.cpp
index 9ec12131d7236..6c81cbcad3330 100644
--- a/llvm/lib/Target/AMDGPU/MCA/AMDGPUCustomBehaviour.cpp
+++ b/llvm/lib/Target/AMDGPU/MCA/AMDGPUCustomBehaviour.cpp
@@ -18,6 +18,7 @@
#include "llvm/MC/TargetRegistry.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/WithColor.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
namespace llvm::mca {
diff --git a/llvm/lib/Target/AMDGPU/MCA/AMDGPUCustomBehaviour.h b/llvm/lib/Target/AMDGPU/MCA/AMDGPUCustomBehaviour.h
index aeb5c032daee4..c764ff71f5d0c 100644
--- a/llvm/lib/Target/AMDGPU/MCA/AMDGPUCustomBehaviour.h
+++ b/llvm/lib/Target/AMDGPU/MCA/AMDGPUCustomBehaviour.h
@@ -20,7 +20,6 @@
#include "Utils/AMDGPUBaseInfo.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/MCA/CustomBehaviour.h"
-#include "llvm/TargetParser/TargetParser.h"
namespace llvm {
namespace mca {
diff --git a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUAsmBackend.cpp b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUAsmBackend.cpp
index 95da56f420b2d..d71dcf225df50 100644
--- a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUAsmBackend.cpp
+++ b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUAsmBackend.cpp
@@ -21,7 +21,7 @@
#include "llvm/MC/MCValue.h"
#include "llvm/MC/TargetRegistry.h"
#include "llvm/Support/EndianStream.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
using namespace llvm;
using namespace llvm::AMDGPU;
diff --git a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUInstPrinter.cpp b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUInstPrinter.cpp
index 9ffa4458abdc6..19c5ac6a647ce 100644
--- a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUInstPrinter.cpp
+++ b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUInstPrinter.cpp
@@ -20,7 +20,7 @@
#include "llvm/MC/MCInstrInfo.h"
#include "llvm/MC/MCRegisterInfo.h"
#include "llvm/MC/MCSubtargetInfo.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
using namespace llvm;
using namespace llvm::AMDGPU;
diff --git a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCKernelDescriptor.cpp b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCKernelDescriptor.cpp
index 296b248dfa23a..a37fe6741ea55 100644
--- a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCKernelDescriptor.cpp
+++ b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCKernelDescriptor.cpp
@@ -12,7 +12,7 @@
#include "llvm/MC/MCContext.h"
#include "llvm/MC/MCExpr.h"
#include "llvm/MC/MCSubtargetInfo.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
using namespace llvm;
using namespace llvm::AMDGPU;
diff --git a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp
index d6509fdd2b21a..d2d11f0786a16 100644
--- a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp
+++ b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp
@@ -31,7 +31,7 @@
#include "llvm/Support/AMDHSAKernelDescriptor.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/FormattedStream.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
using namespace llvm;
using namespace llvm::AMDGPU;
diff --git a/llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp b/llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp
index e3d7b7a5a519e..c03f18768d590 100644
--- a/llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp
+++ b/llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp
@@ -40,7 +40,7 @@
#include "llvm/IR/Dominators.h"
#include "llvm/InitializePasses.h"
#include "llvm/Support/DebugCounter.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
using namespace llvm;
diff --git a/llvm/lib/Target/AMDGPU/SIMemoryLegalizer.cpp b/llvm/lib/Target/AMDGPU/SIMemoryLegalizer.cpp
index fe87c5afda1b8..25922c5af7da1 100644
--- a/llvm/lib/Target/AMDGPU/SIMemoryLegalizer.cpp
+++ b/llvm/lib/Target/AMDGPU/SIMemoryLegalizer.cpp
@@ -28,7 +28,7 @@
#include "llvm/Support/AMDGPUAddrSpace.h"
#include "llvm/Support/AtomicOrdering.h"
#include "llvm/Support/Debug.h"
-#include "llvm/TargetParser/TargetParser.h"
+#include "llvm/TargetParser/AMDGPUTargetParser.h"
using namespace llvm;
using namespace llvm::AMDGPU;
diff --git a/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp b/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp
index 6feaa4951b14a..bcdb20c6bd24f 100644
--- a/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp
+++ b/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp
@@ -26,7 +26,7 @@
#include "llvm/MC/MCRegisterInfo.h"
#include "llvm/MC/MCSubtargetInfo.h"
#include "llvm/Support/Comma...
[truncated]
|
74a466a to
c48bc2f
Compare
700f693 to
91d102f
Compare
91d102f to
ce7b6ed
Compare
| #include "clang/Basic/MacroBuilder.h" | ||
| #include "clang/Basic/TargetBuiltins.h" | ||
| #include "llvm/ADT/SmallString.h" | ||
| #include "llvm/TargetParser/AMDGPUTargetParser.h" |
There was a problem hiding this comment.
You already have it included in the AMDGPU.h.
There was a problem hiding this comment.
Right, but my understanding is that the best practice is to include the headers we actually need instead of relying on transitive includes from other headers, since those headers might later stop including the ones we depend on.
That probably won't happen with AMDGPU.h, since it's basically a giant all-in-one header included by almost every AMDGPU source file, but IMHO that's not really a good thing.
| #include "clang/Basic/MacroBuilder.h" | ||
| #include "clang/Basic/TargetBuiltins.h" | ||
| #include "llvm/TargetParser/TargetParser.h" | ||
| #include "llvm/TargetParser/AMDGPUTargetParser.h" |
| #include "llvm/Support/Path.h" | ||
| #include "llvm/Support/Process.h" | ||
| #include "llvm/Support/VirtualFileSystem.h" | ||
| #include "llvm/TargetParser/AMDGPUTargetParser.h" |
| #include "clang/Basic/MacroBuilder.h" | ||
| #include "clang/Basic/TargetBuiltins.h" | ||
| #include "llvm/ADT/SmallString.h" | ||
| #include "llvm/TargetParser/AMDGPUTargetParser.h" |
…arser.cpp (llvm#198433)" This reverts commit 9997b11.
- Update AMD target parser includes after llvm/llvm-project#198433 - Add explicit TypeID for AMD UniformityAnalysis after llvm/llvm-project#199634 - Update finite-trip-count AMD range analysis after llvm/llvm-project#196616 - Update NVVM::BarrierOp creation after llvm/llvm-project#199404
- Update AMD target parser includes after llvm/llvm-project#198433 - Add explicit TypeID for AMD UniformityAnalysis after llvm/llvm-project#199634 - Update finite-trip-count AMD range analysis after llvm/llvm-project#196616 - Update NVVM::BarrierOp creation after llvm/llvm-project#199404
- Update AMD target parser includes after llvm/llvm-project#198433 - Add explicit TypeID for AMD UniformityAnalysis after llvm/llvm-project#199634 - Update finite-trip-count AMD range analysis after llvm/llvm-project#196616 - Update NVVM::BarrierOp creation after llvm/llvm-project#199404
* Dropped -Os and -Oz after llvm/llvm-project#191363 * Emit scalar {add,sub,mul}.rn.bf16 ops after llvm/llvm-project#190414 * Also changed to avoid hardcoding line numbers in test_line_info.py * Add identifier/discriminator arguments to DICompositeTypeAttr::get * calls after llvm/llvm-project#195321 * Pass MCRegisterInfo and MCSubtargetInfo by reference when constructing * MCContext after llvm/llvm-project#195032 * Replace NVVM::Barrier0Op and nvvm.barrier0 test expectations with * NVVM::BarrierOp/nvvm.barrier after llvm/llvm-project#195608 * Update AMD target parser includes after llvm/llvm-project#198433 * Add explicit TypeID for AMD UniformityAnalysis after llvm/llvm-project#199634 * Update finite-trip-count AMD range analysis after llvm/llvm-project#196616 * Update NVVM::BarrierOp creation after llvm/llvm-project#199404 also disable SLP vectorizer on sm_80 to workaround a ptxas bug --------- Co-authored-by: Lei Zhang <antiagainst@gmail.com> Co-authored-by: Lei Zhang <Lei.Zhang2@amd.com>
- Update AMD target parser includes after llvm/llvm-project#198433 - Add explicit TypeID for AMD UniformityAnalysis after llvm/llvm-project#199634 - Update finite-trip-count AMD range analysis after llvm/llvm-project#196616 - Update NVVM::BarrierOp creation after llvm/llvm-project#199404
* Dropped -Os and -Oz after llvm/llvm-project#191363 * Emit scalar {add,sub,mul}.rn.bf16 ops after llvm/llvm-project#190414 * Also changed to avoid hardcoding line numbers in test_line_info.py * Add identifier/discriminator arguments to DICompositeTypeAttr::get * calls after llvm/llvm-project#195321 * Pass MCRegisterInfo and MCSubtargetInfo by reference when constructing * MCContext after llvm/llvm-project#195032 * Replace NVVM::Barrier0Op and nvvm.barrier0 test expectations with * NVVM::BarrierOp/nvvm.barrier after llvm/llvm-project#195608 * Update AMD target parser includes after llvm/llvm-project#198433 * Add explicit TypeID for AMD UniformityAnalysis after llvm/llvm-project#199634 * Update finite-trip-count AMD range analysis after llvm/llvm-project#196616 * Update NVVM::BarrierOp creation after llvm/llvm-project#199404 also disable SLP vectorizer on sm_80 to workaround a ptxas bug --------- Co-authored-by: Lei Zhang <antiagainst@gmail.com> Co-authored-by: Lei Zhang <Lei.Zhang2@amd.com>
* Dropped -Os and -Oz after llvm/llvm-project#191363 * Emit scalar {add,sub,mul}.rn.bf16 ops after llvm/llvm-project#190414 * Also changed to avoid hardcoding line numbers in test_line_info.py * Add identifier/discriminator arguments to DICompositeTypeAttr::get * calls after llvm/llvm-project#195321 * Pass MCRegisterInfo and MCSubtargetInfo by reference when constructing * MCContext after llvm/llvm-project#195032 * Replace NVVM::Barrier0Op and nvvm.barrier0 test expectations with * NVVM::BarrierOp/nvvm.barrier after llvm/llvm-project#195608 * Update AMD target parser includes after llvm/llvm-project#198433 * Add explicit TypeID for AMD UniformityAnalysis after llvm/llvm-project#199634 * Update finite-trip-count AMD range analysis after llvm/llvm-project#196616 * Update NVVM::BarrierOp creation after llvm/llvm-project#199404 also disable SLP vectorizer on sm_80 to workaround a ptxas bug --------- Co-authored-by: Lei Zhang <antiagainst@gmail.com> Co-authored-by: Lei Zhang <Lei.Zhang2@amd.com>
comgr-hotswap.cpp only uses llvm::AMDGPU::IsaVersion and llvm::AMDGPU::getIsaVersion. On this compiler branch's LLVM base those symbols still live in llvm/TargetParser/TargetParser.h; the split-out llvm/TargetParser/AMDGPUTargetParser.h header (upstream llvm/llvm-project PR llvm#198433) is not present, so the original include broke the TheRock compiler-runtime build with a missing-header fatal error. Switch the include to TargetParser.h, which provides both symbols at this base, avoiding the need to also pull in the large NFC TargetParser split.
comgr-hotswap.cpp only uses llvm::AMDGPU::IsaVersion and llvm::AMDGPU::getIsaVersion. On this compiler branch's LLVM base those symbols still live in llvm/TargetParser/TargetParser.h; the split-out llvm/TargetParser/AMDGPUTargetParser.h header (upstream llvm/llvm-project PR llvm#198433) is not present, so the original include broke the TheRock compiler-runtime build with a missing-header fatal error. Switch the include to TargetParser.h, which provides both symbols at this base, avoiding the need to also pull in the large NFC TargetParser split.
comgr-hotswap.cpp only uses llvm::AMDGPU::IsaVersion and llvm::AMDGPU::getIsaVersion. On this compiler branch's LLVM base those symbols still live in llvm/TargetParser/TargetParser.h; the split-out llvm/TargetParser/AMDGPUTargetParser.h header (upstream llvm/llvm-project PR llvm#198433) is not present, so the original include broke the TheRock compiler-runtime build with a missing-header fatal error. Switch the include to TargetParser.h, which provides both symbols at this base, avoiding the need to also pull in the large NFC TargetParser split.
No description provided.