Skip to content

Commit ece2867

Browse files
authored
Incorporate SPV_KHR_non_semantic_info into SPIR-V 1.6 (#2532)
1 parent 3e64932 commit ece2867

6 files changed

+52
-11
lines changed

lib/SPIRV/LLVMToSPIRVDbgTran.cpp

+7-2
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,13 @@ void LLVMToSPIRVDbgTran::transDebugMetadata() {
5353
if (DIF.compile_unit_count() == 0)
5454
return;
5555

56+
if (isNonSemanticDebugInfo()) {
57+
if (!BM->isAllowedToUseVersion(VersionNumber::SPIRV_1_6))
58+
BM->addExtension(SPIRV::ExtensionID::SPV_KHR_non_semantic_info);
59+
else
60+
BM->setMinSPIRVVersion(VersionNumber::SPIRV_1_6);
61+
}
62+
5663
for (DICompileUnit *CU : DIF.compile_units()) {
5764
transDbgEntry(CU);
5865
for (DIImportedEntity *IE : CU->getImportedEntities())
@@ -286,8 +293,6 @@ SPIRVEntry *LLVMToSPIRVDbgTran::transDbgEntryImpl(const MDNode *MDN) {
286293
if (!MDN)
287294
return BM->addDebugInfo(SPIRVDebug::DebugInfoNone, getVoidTy(),
288295
SPIRVWordVec());
289-
if (isNonSemanticDebugInfo())
290-
BM->addExtension(SPIRV::ExtensionID::SPV_KHR_non_semantic_info);
291296
if (const DINode *DIEntry = dyn_cast<DINode>(MDN)) {
292297
switch (DIEntry->getTag()) {
293298
// Types

lib/SPIRV/SPIRVWriter.cpp

+4-1
Original file line numberDiff line numberDiff line change
@@ -1196,7 +1196,10 @@ void LLVMToSPIRVBase::transAuxDataInst(SPIRVFunction *BF, Function *F) {
11961196
auto *BM = BF->getModule();
11971197
if (!BM->preserveAuxData())
11981198
return;
1199-
BM->addExtension(SPIRV::ExtensionID::SPV_KHR_non_semantic_info);
1199+
if (!BM->isAllowedToUseVersion(VersionNumber::SPIRV_1_6))
1200+
BM->addExtension(SPIRV::ExtensionID::SPV_KHR_non_semantic_info);
1201+
else
1202+
BM->setMinSPIRVVersion(VersionNumber::SPIRV_1_6);
12001203
const auto &FnAttrs = F->getAttributes().getFnAttrs();
12011204
for (const auto &Attr : FnAttrs) {
12021205
std::vector<SPIRVWord> Ops;

lib/SPIRV/libSPIRV/SPIRVInstruction.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -1920,7 +1920,8 @@ class SPIRVExtInst : public SPIRVFunctionCallGeneric<OpExtInst, 5> {
19201920
}
19211921

19221922
std::optional<ExtensionID> getRequiredExtension() const override {
1923-
if (SPIRVBuiltinSetNameMap::map(ExtSetKind).find("NonSemantic.") == 0)
1923+
if (SPIRVBuiltinSetNameMap::map(ExtSetKind).find("NonSemantic.") == 0 &&
1924+
!Module->isAllowedToUseVersion(VersionNumber::SPIRV_1_6))
19241925
return ExtensionID::SPV_KHR_non_semantic_info;
19251926
return {};
19261927
}

test/extensions/KHR/SPV_KHR_non_semantic_info/preserve-all-function-attributes-attrkind.ll

+11-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,19 @@
11
; RUN: llvm-as < %s -o %t.bc
2-
; RUN: llvm-spirv %t.bc -spirv-text --spirv-preserve-auxdata -o - | FileCheck %s --check-prefix=CHECK-SPIRV
2+
; RUN: llvm-spirv %t.bc -spirv-text --spirv-preserve-auxdata --spirv-max-version=1.5 -o - | FileCheck %s --check-prefixes=CHECK-SPIRV,CHECK-SPIRV-EXT
33
; RUN: llvm-spirv %t.bc -o %t.spv --spirv-preserve-auxdata
44
; RUN: llvm-spirv -r --spirv-preserve-auxdata %t.spv -o %t.rev.bc
55
; RUN: llvm-dis %t.rev.bc -o - | FileCheck %s --check-prefix=CHECK-LLVM
66

7-
; CHECK-SPIRV: Extension "SPV_KHR_non_semantic_info"
7+
; RUN: llvm-spirv %t.bc -spirv-text --spirv-preserve-auxdata -o - | FileCheck %s --check-prefixes=CHECK-SPIRV,CHECK-SPIRV-NOEXT
8+
; RUN: llvm-spirv %t.bc -o %t.spv --spirv-preserve-auxdata
9+
; RUN: llvm-spirv -r --spirv-preserve-auxdata %t.spv -o %t.rev.bc
10+
; RUN: llvm-dis %t.rev.bc -o - | FileCheck %s --check-prefix=CHECK-LLVM
11+
12+
; Check SPIR-V versions in a format magic number + version
13+
; CHECK-SPIRV-EXT: 119734787 65536
14+
; CHECK-SPIRV-EXT: Extension "SPV_KHR_non_semantic_info"
15+
; CHECK-SPIRV-NOEXT: 119734787 67072
16+
817
; CHECK-SPIRV: ExtInstImport [[#Import:]] "NonSemantic.AuxData"
918

1019
; CHECK-SPIRV: String [[#Attr0:]] "nounwind"

test/extensions/KHR/SPV_KHR_non_semantic_info/preserve-all-function-attributes.ll

+15-3
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,25 @@
11
; RUN: llvm-as < %s -o %t.bc
2-
; RUN: llvm-spirv %t.bc -spirv-text --spirv-preserve-auxdata -o - | FileCheck %s --check-prefix=CHECK-SPIRV
3-
; RUN: not llvm-spirv %t.bc -spirv-text --spirv-preserve-auxdata --spirv-ext=-SPV_KHR_non_semantic_info -o - 2>&1 | FileCheck %s --check-prefix=CHECK-SPIRV-EXT-DISABLED
2+
; RUN: llvm-spirv %t.bc -spirv-text --spirv-preserve-auxdata --spirv-max-version=1.5 -o - | FileCheck %s --check-prefixes=CHECK-SPIRV,CHECK-SPIRV-EXT
3+
; RUN: not llvm-spirv %t.bc -spirv-text --spirv-preserve-auxdata --spirv-max-version=1.5 --spirv-ext=-SPV_KHR_non_semantic_info -o - 2>&1 | FileCheck %s --check-prefix=CHECK-SPIRV-EXT-DISABLED
4+
; RUN: llvm-spirv %t.bc -o %t.spv --spirv-preserve-auxdata --spirv-max-version=1.5
5+
; RUN: llvm-spirv -r --spirv-preserve-auxdata %t.spv -o %t.rev.bc
6+
; RUN: llvm-dis %t.rev.bc -o - | FileCheck %s --check-prefix=CHECK-LLVM
7+
; RUN: llvm-spirv -r %t.spv -o %t.rev.without.bc
8+
; RUN: llvm-dis %t.rev.without.bc -o - | FileCheck %s --implicit-check-not="{{foo|bar|baz}}"
9+
10+
; RUN: llvm-spirv %t.bc -spirv-text --spirv-preserve-auxdata -o - | FileCheck %s --check-prefixes=CHECK-SPIRV,CHECK-SPIRV-NOEXT
11+
; RUN: llvm-spirv %t.bc -spirv-text --spirv-preserve-auxdata --spirv-ext=+SPV_KHR_non_semantic_info -o - | FileCheck %s --check-prefixes=CHECK-SPIRV,CHECK-SPIRV-NOEXT
412
; RUN: llvm-spirv %t.bc -o %t.spv --spirv-preserve-auxdata
513
; RUN: llvm-spirv -r --spirv-preserve-auxdata %t.spv -o %t.rev.bc
614
; RUN: llvm-dis %t.rev.bc -o - | FileCheck %s --check-prefix=CHECK-LLVM
715
; RUN: llvm-spirv -r %t.spv -o %t.rev.without.bc
816
; RUN: llvm-dis %t.rev.without.bc -o - | FileCheck %s --implicit-check-not="{{foo|bar|baz}}"
917

10-
; CHECK-SPIRV: Extension "SPV_KHR_non_semantic_info"
18+
; Check SPIR-V versions in a format magic number + version
19+
; CHECK-SPIRV-EXT: 119734787 65536
20+
; CHECK-SPIRV-EXT: Extension "SPV_KHR_non_semantic_info"
21+
; CHECK-SPIRV-NOEXT: 119734787 67072
22+
1123
; CHECK-SPIRV: ExtInstImport [[#Import:]] "NonSemantic.AuxData"
1224

1325
; CHECK-SPIRV: String [[#Attr0:]] "foo"

test/extensions/KHR/SPV_KHR_non_semantic_info/preserve-all-function-metadata.ll

+13-2
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,23 @@
11
; RUN: llvm-as < %s -o %t.bc
2-
; RUN: llvm-spirv %t.bc -spirv-text --spirv-preserve-auxdata -o - | FileCheck %s --check-prefix=CHECK-SPIRV
2+
; RUN: llvm-spirv %t.bc -spirv-text --spirv-preserve-auxdata --spirv-max-version=1.5 -o - | FileCheck %s --check-prefixes=CHECK-SPIRV,CHECK-SPIRV-EXT
3+
; RUN: llvm-spirv %t.bc -o %t.spv --spirv-preserve-auxdata --spirv-max-version=1.5
4+
; RUN: llvm-spirv -r --spirv-preserve-auxdata %t.spv -o %t.rev.bc
5+
; RUN: llvm-dis %t.rev.bc -o - | FileCheck %s --check-prefix=CHECK-LLVM
6+
; RUN: llvm-spirv -r %t.spv -o %t.rev.without.bc
7+
; RUN: llvm-dis %t.rev.without.bc -o - | FileCheck %s --implicit-check-not="{{foo|bar|baz}}"
8+
9+
; RUN: llvm-spirv %t.bc -spirv-text --spirv-preserve-auxdata -o - | FileCheck %s --check-prefixes=CHECK-SPIRV,CHECK-SPIRV-NOEXT
310
; RUN: llvm-spirv %t.bc -o %t.spv --spirv-preserve-auxdata
411
; RUN: llvm-spirv -r --spirv-preserve-auxdata %t.spv -o %t.rev.bc
512
; RUN: llvm-dis %t.rev.bc -o - | FileCheck %s --check-prefix=CHECK-LLVM
613
; RUN: llvm-spirv -r %t.spv -o %t.rev.without.bc
714
; RUN: llvm-dis %t.rev.without.bc -o - | FileCheck %s --implicit-check-not="{{foo|bar|baz}}"
815

9-
; CHECK-SPIRV: Extension "SPV_KHR_non_semantic_info"
16+
; Check SPIR-V versions in a format magic number + version
17+
; CHECK-SPIRV-EXT: 119734787 65536
18+
; CHECK-SPIRV-EXT: Extension "SPV_KHR_non_semantic_info"
19+
; CHECK-SPIRV-NOEXT: 119734787 67072
20+
1021
; CHECK-SPIRV: ExtInstImport [[#Import:]] "NonSemantic.AuxData"
1122

1223
; CHECK-SPIRV: String [[#MD0Name:]] "foo"

0 commit comments

Comments
 (0)