Skip to content

Commit 99ab0f6

Browse files
fabianmcgyuxuanchen1997
authored andcommitted
[mlir][ROCDL] Construct AMDGCN ISA control variable explicitly (#98912)
Summary: This patch constructs the AMDGCN ISA control variable explicitly instead of linking against the library shipped with ROCm. This change prevents issues arising from the order in which the AMDGCN libraries are linked. Test Plan: Reviewers: Subscribers: Tasks: Tags: Differential Revision: https://phabricator.intern.facebook.com/D60251532
1 parent a1585df commit 99ab0f6

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

mlir/lib/Target/LLVM/ROCDL/Target.cpp

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -150,11 +150,6 @@ LogicalResult SerializeGPUModuleBase::appendStandardLibs(AMDGCNLibraries libs) {
150150
return failure();
151151
}
152152

153-
// Get the ISA version.
154-
StringRef isaVersion =
155-
llvm::AMDGPU::getArchNameAMDGCN(llvm::AMDGPU::parseArchAMDGCN(chip));
156-
isaVersion.consume_front("gfx");
157-
158153
// Helper function for adding a library.
159154
auto addLib = [&](const Twine &lib) -> bool {
160155
auto baseSize = path.size();
@@ -175,9 +170,7 @@ LogicalResult SerializeGPUModuleBase::appendStandardLibs(AMDGCNLibraries libs) {
175170
if ((any(libs & AMDGCNLibraries::Ocml) && addLib("ocml.bc")) ||
176171
(any(libs & AMDGCNLibraries::Ockl) && addLib("ockl.bc")) ||
177172
(any(libs & AMDGCNLibraries::Hip) && addLib("hip.bc")) ||
178-
(any(libs & AMDGCNLibraries::OpenCL) && addLib("opencl.bc")) ||
179-
(any(libs & (AMDGCNLibraries::Ocml | AMDGCNLibraries::Ockl)) &&
180-
addLib("oclc_isa_version_" + isaVersion + ".bc")))
173+
(any(libs & AMDGCNLibraries::OpenCL) && addLib("opencl.bc")))
181174
return failure();
182175
return success();
183176
}
@@ -270,6 +263,14 @@ void SerializeGPUModuleBase::addControlVariables(
270263
// Add ocml or ockl related control variables.
271264
if (any(libs & (AMDGCNLibraries::Ocml | AMDGCNLibraries::Ockl))) {
272265
addControlVariable("__oclc_wavefrontsize64", wave64, 8);
266+
267+
// Get the ISA version.
268+
llvm::AMDGPU::IsaVersion isaVersion = llvm::AMDGPU::getIsaVersion(chip);
269+
// Add the ISA control variable.
270+
addControlVariable("__oclc_ISA_version",
271+
isaVersion.Minor + 100 * isaVersion.Stepping +
272+
1000 * isaVersion.Major,
273+
32);
273274
int abi = 500;
274275
abiVer.getAsInteger(0, abi);
275276
addControlVariable("__oclc_ABI_version", abi, 32);

0 commit comments

Comments
 (0)