Skip to content

Commit 7325e1c

Browse files
vmaksimosys-ce-bb
authored andcommitted
Incorporate SPV_KHR_non_semantic_info into SPIR-V 1.6 (#2532)
Original commit: KhronosGroup/SPIRV-LLVM-Translator@ece2867d5c97d07
1 parent d493496 commit 7325e1c

File tree

6 files changed

+52
-11
lines changed

6 files changed

+52
-11
lines changed

llvm-spirv/lib/SPIRV/LLVMToSPIRVDbgTran.cpp

Lines changed: 7 additions & 2 deletions
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

llvm-spirv/lib/SPIRV/SPIRVWriter.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1212,7 +1212,10 @@ void LLVMToSPIRVBase::transAuxDataInst(SPIRVFunction *BF, Function *F) {
12121212
auto *BM = BF->getModule();
12131213
if (!BM->preserveAuxData())
12141214
return;
1215-
BM->addExtension(SPIRV::ExtensionID::SPV_KHR_non_semantic_info);
1215+
if (!BM->isAllowedToUseVersion(VersionNumber::SPIRV_1_6))
1216+
BM->addExtension(SPIRV::ExtensionID::SPV_KHR_non_semantic_info);
1217+
else
1218+
BM->setMinSPIRVVersion(VersionNumber::SPIRV_1_6);
12161219
const auto &FnAttrs = F->getAttributes().getFnAttrs();
12171220
for (const auto &Attr : FnAttrs) {
12181221
std::vector<SPIRVWord> Ops;

llvm-spirv/lib/SPIRV/libSPIRV/SPIRVInstruction.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1911,7 +1911,8 @@ class SPIRVExtInst : public SPIRVFunctionCallGeneric<OpExtInst, 5> {
19111911
}
19121912

19131913
std::optional<ExtensionID> getRequiredExtension() const override {
1914-
if (SPIRVBuiltinSetNameMap::map(ExtSetKind).find("NonSemantic.") == 0)
1914+
if (SPIRVBuiltinSetNameMap::map(ExtSetKind).find("NonSemantic.") == 0 &&
1915+
!Module->isAllowedToUseVersion(VersionNumber::SPIRV_1_6))
19151916
return ExtensionID::SPV_KHR_non_semantic_info;
19161917
return {};
19171918
}

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

Lines changed: 11 additions & 2 deletions
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"

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

Lines changed: 15 additions & 3 deletions
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"

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

Lines changed: 13 additions & 2 deletions
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)