Including the .kd symbol suffix in AMDGPU executables.
This avoids the need for string manipulation at runtime and is what
the HSA API expects.
diff --git a/compiler/plugins/target/ROCM/ROCMTarget.cpp b/compiler/plugins/target/ROCM/ROCMTarget.cpp
index 851b6ed..8558f0b 100644
--- a/compiler/plugins/target/ROCM/ROCMTarget.cpp
+++ b/compiler/plugins/target/ROCM/ROCMTarget.cpp
@@ -665,7 +665,9 @@
}
int64_t ordinal = ordinalAttr.getInt();
- auto symbolNameRef = builder.createString(exportOp.getName());
+ // Symbol names include a `.kd` suffix as that's what HSA expects.
+ auto symbolNameKd = (exportOp.getName() + ".kd").str();
+ auto symbolNameRef = builder.createString(symbolNameKd);
iree_hal_amdgpu_Dims_t workgroupSize = {0};
if (auto workgroupSizeAttr = exportOp.getWorkgroupSize()) {
diff --git a/runtime/src/iree/schemas/amdgpu_executable_def.fbs b/runtime/src/iree/schemas/amdgpu_executable_def.fbs
index 43efdb0..7c0510c 100644
--- a/runtime/src/iree/schemas/amdgpu_executable_def.fbs
+++ b/runtime/src/iree/schemas/amdgpu_executable_def.fbs
@@ -28,6 +28,7 @@
// Information about an exported function on the executable.
table ExportDef {
// String name of the exported function symbol in the module.
+ // Includes a `.kd` suffix as that's what HSA expects.
symbol_name:string;
// Workgroup size for the export.