Skip to content

Commit c39c6c2

Browse files
committed
[mlir][ROCDL] Construct AMDGCN ISA control variable explicitly
This patch constructs the AMDGCN ISA control variable explicitly instead of linking against the library shipped with ROCm. This change prevents issue arising from the order in which the AMGCN libraries are linked.
1 parent 4ed0f84 commit c39c6c2

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)