Skip to content

Commit

Permalink
Extend TranslatorOpts to handle SPIRVGenKernelArgNameMD
Browse files Browse the repository at this point in the history
  • Loading branch information
aratajew authored and svenvh committed Sep 10, 2019
1 parent 7d1c034 commit 4b5307f
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 9 deletions.
12 changes: 10 additions & 2 deletions include/LLVMSPIRVOpts.h
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,9 @@ class TranslatorOpts {

TranslatorOpts() = default;

TranslatorOpts(VersionNumber Max, const ExtensionsStatusMap &Map = {})
: MaxVersion(Max), ExtStatusMap(Map) {}
TranslatorOpts(VersionNumber Max, const ExtensionsStatusMap &Map = {},
bool ArgNameMD = false)
: MaxVersion(Max), ExtStatusMap(Map), GenKernelArgNameMD(ArgNameMD) {}

bool isAllowedToUseVersion(VersionNumber RequestedVersion) const {
return RequestedVersion <= MaxVersion;
Expand All @@ -88,15 +89,22 @@ class TranslatorOpts {

VersionNumber getMaxVersion() const { return MaxVersion; }

bool isGenArgNameMDEnabled() const { return GenKernelArgNameMD; }

void enableAllExtensions() {
#define EXT(X) ExtStatusMap[ExtensionID::X] = true;
#include "LLVMSPIRVExtensions.inc"
#undef EXT
}

void enableGenArgNameMD() { GenKernelArgNameMD = true; }

private:
// Common translation options
VersionNumber MaxVersion = VersionNumber::MaximumVersion;
ExtensionsStatusMap ExtStatusMap;
// SPIR-V to LLVM translation options
bool GenKernelArgNameMD;
};

} // namespace SPIRV
Expand Down
7 changes: 1 addition & 6 deletions lib/SPIRV/SPIRVReader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -90,11 +90,6 @@ cl::opt<bool> SPIRVEnableStepExpansion(
"spirv-expand-step", cl::init(true),
cl::desc("Enable expansion of OpenCL step and smoothstep function"));

cl::opt<bool> SPIRVGenKernelArgNameMD(
"spirv-gen-kernel-arg-name-md", cl::init(false),
cl::desc("Enable generating OpenCL kernel argument name "
"metadata"));

// Prefix for placeholder global variable name.
const char *KPlaceholderPrefix = "placeholder.";

Expand Down Expand Up @@ -2802,7 +2797,7 @@ bool SPIRVToLLVM::transKernelMetadata() {
return transOCLKernelArgTypeName(Arg);
});
// Generate metadata for kernel_arg_name
if (SPIRVGenKernelArgNameMD) {
if (BM->isGenArgNameMDEnabled()) {
addOCLKernelArgumentMetadata(Context, SPIR_MD_KERNEL_ARG_NAME, BF, F,
[=](SPIRVFunctionParameter *Arg) {
return MDString::get(*Context,
Expand Down
4 changes: 4 additions & 0 deletions lib/SPIRV/libSPIRV/SPIRVModule.h
Original file line number Diff line number Diff line change
Expand Up @@ -427,6 +427,10 @@ class SPIRVModule {
return true;
}

virtual bool isGenArgNameMDEnabled() const final {
return TranslationOpts.isGenArgNameMDEnabled();
}

// I/O functions
friend spv_ostream &operator<<(spv_ostream &O, SPIRVModule &M);
friend std::istream &operator>>(std::istream &I, SPIRVModule &M);
Expand Down
8 changes: 7 additions & 1 deletion tools/llvm-spirv/llvm-spirv.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,11 @@ static cl::list<std::string>
cl::value_desc("+SPV_extenstion1_name,-SPV_extension2_name"),
cl::ValueRequired);

static cl::opt<bool> SPIRVGenKernelArgNameMD(
"spirv-gen-kernel-arg-name-md", cl::init(false),
cl::desc("Enable generating OpenCL kernel argument name "
"metadata"));

using SPIRV::ExtensionID;

#ifdef _SPIRV_SUPPORT_TEXT_FMT
Expand Down Expand Up @@ -353,7 +358,8 @@ int main(int Ac, char **Av) {
if (0 != Ret)
return Ret;

SPIRV::TranslatorOpts Opts(MaxSPIRVVersion, ExtensionsStatus);
SPIRV::TranslatorOpts Opts(MaxSPIRVVersion, ExtensionsStatus,
SPIRVGenKernelArgNameMD);

#ifdef _SPIRV_SUPPORT_TEXT_FMT
if (ToText && (ToBinary || IsReverse || IsRegularization)) {
Expand Down

0 comments on commit 4b5307f

Please sign in to comment.