Skip to content

Commit 5fd4877

Browse files
vmaksimosys-ce-bb
authored andcommitted
Support both legacy and Khronos version of global variable extensions (#2228)
This is done to provide smooth drivers transition to official extensions. Also updated tests for new extensions to use new tokens after KhronosGroup/SPIRV-Headers@cca08c6 Original commit: KhronosGroup/SPIRV-LLVM-Translator@32786ff
1 parent 20388a8 commit 5fd4877

File tree

13 files changed

+261
-47
lines changed

13 files changed

+261
-47
lines changed

llvm-spirv/include/LLVMSPIRVExtensions.inc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ EXT(SPV_INTEL_arithmetic_fence)
5555
EXT(SPV_INTEL_bfloat16_conversion)
5656
EXT(SPV_INTEL_joint_matrix)
5757
EXT(SPV_INTEL_hw_thread_queries)
58+
EXT(SPV_INTEL_global_variable_decorations)
5859
EXT(SPV_INTEL_global_variable_host_access)
5960
EXT(SPV_INTEL_global_variable_fpga_decorations)
6061
EXT(SPV_INTEL_complex_float_mul_div)

llvm-spirv/lib/SPIRV/SPIRVReader.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3849,6 +3849,7 @@ transDecorationsToMetadataList(llvm::LLVMContext *Context,
38493849
OPs.push_back(LinkTypeMD);
38503850
break;
38513851
}
3852+
case spv::internal::DecorationHostAccessINTEL:
38523853
case DecorationHostAccessINTEL: {
38533854
const auto *const HostAccDeco =
38543855
static_cast<const SPIRVDecorateHostAccessINTEL *>(Deco);

llvm-spirv/lib/SPIRV/SPIRVWriter.cpp

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2663,6 +2663,7 @@ static void transMetadataDecorations(Metadata *MD, SPIRVEntry *Target) {
26632663
break;
26642664
}
26652665

2666+
case spv::internal::DecorationHostAccessINTEL:
26662667
case DecorationHostAccessINTEL: {
26672668
checkIsGlobalVar(Target, DecoKind);
26682669

@@ -2682,11 +2683,16 @@ static void transMetadataDecorations(Metadata *MD, SPIRVEntry *Target) {
26822683
Name, SPIRVEC_InvalidLlvmModule,
26832684
"HostAccessINTEL requires second extra operand to be a string");
26842685

2685-
Target->addDecorate(
2686-
new SPIRVDecorateHostAccessINTEL(Target, Q, Name->getString().str()));
2686+
if (DecoKind == DecorationHostAccessINTEL)
2687+
Target->addDecorate(new SPIRVDecorateHostAccessINTEL(
2688+
Target, Q, Name->getString().str()));
2689+
else
2690+
Target->addDecorate(new SPIRVDecorateHostAccessINTELLegacy(
2691+
Target, Q, Name->getString().str()));
26872692
break;
26882693
}
26892694

2695+
case spv::internal::DecorationInitModeINTEL:
26902696
case DecorationInitModeINTEL: {
26912697
checkIsGlobalVar(Target, DecoKind);
26922698
ErrLog.checkError(static_cast<SPIRVVariable *>(Target)->getInitializer(),
@@ -2703,10 +2709,26 @@ static void transMetadataDecorations(Metadata *MD, SPIRVEntry *Target) {
27032709
InitializationModeQualifier Q =
27042710
static_cast<InitializationModeQualifier>(Trigger->getZExtValue());
27052711

2706-
Target->addDecorate(new SPIRVDecorateInitModeINTEL(Target, Q));
2712+
if (DecoKind == DecorationInitModeINTEL)
2713+
Target->addDecorate(new SPIRVDecorateInitModeINTEL(Target, Q));
2714+
else
2715+
Target->addDecorate(new SPIRVDecorateInitModeINTELLegacy(Target, Q));
27072716

27082717
break;
27092718
}
2719+
case spv::internal::DecorationImplementInCSRINTEL: {
2720+
checkIsGlobalVar(Target, DecoKind);
2721+
ErrLog.checkError(NumOperands == 2, SPIRVEC_InvalidLlvmModule,
2722+
"ImplementInCSRINTEL requires exactly 1 extra operand");
2723+
auto *Value = mdconst::dyn_extract<ConstantInt>(DecoMD->getOperand(1));
2724+
ErrLog.checkError(
2725+
Value, SPIRVEC_InvalidLlvmModule,
2726+
"ImplementInCSRINTEL requires extra operand to be an integer");
2727+
2728+
Target->addDecorate(
2729+
new SPIRVDecorateImplementInCSRINTEL(Target, Value->getZExtValue()));
2730+
break;
2731+
}
27102732
case DecorationImplementInRegisterMapINTEL: {
27112733
checkIsGlobalVar(Target, DecoKind);
27122734
ErrLog.checkError(

llvm-spirv/lib/SPIRV/libSPIRV/SPIRVDecorate.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,8 @@ void SPIRVDecorate::encode(spv_ostream &O) const {
126126
break;
127127
case internal::DecorationFuncParamDescINTEL:
128128
SPIRVDecorateFuncParamDescAttr::encodeLiterals(Encoder, Literals);
129+
case internal::DecorationHostAccessINTEL:
130+
SPIRVDecorateHostAccessINTELLegacy::encodeLiterals(Encoder, Literals);
129131
break;
130132
case DecorationHostAccessINTEL:
131133
SPIRVDecorateHostAccessINTEL::encodeLiterals(Encoder, Literals);
@@ -161,6 +163,8 @@ void SPIRVDecorate::decode(std::istream &I) {
161163
break;
162164
case internal::DecorationFuncParamDescINTEL:
163165
SPIRVDecorateFuncParamDescAttr::decodeLiterals(Decoder, Literals);
166+
case internal::DecorationHostAccessINTEL:
167+
SPIRVDecorateHostAccessINTELLegacy::decodeLiterals(Decoder, Literals);
164168
break;
165169
case DecorationHostAccessINTEL:
166170
SPIRVDecorateHostAccessINTEL::decodeLiterals(Decoder, Literals);

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

Lines changed: 106 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,10 @@ class SPIRVDecorate : public SPIRVDecorateGeneric {
187187
return ExtensionID::SPV_INTEL_fpga_invocation_pipelining_attributes;
188188
case internal::DecorationRuntimeAlignedINTEL:
189189
return ExtensionID::SPV_INTEL_runtime_aligned;
190+
case internal::DecorationHostAccessINTEL:
191+
case internal::DecorationInitModeINTEL:
192+
case internal::DecorationImplementInCSRINTEL:
193+
return ExtensionID::SPV_INTEL_global_variable_decorations;
190194
case DecorationInitModeINTEL:
191195
case DecorationImplementInRegisterMapINTEL:
192196
return ExtensionID::SPV_INTEL_global_variable_fpga_decorations;
@@ -744,13 +748,13 @@ class SPIRVDecoratePipelineEnableINTEL : public SPIRVDecorate {
744748
: SPIRVDecorate(spv::DecorationPipelineEnableINTEL, TheTarget, Enable) {}
745749
};
746750

747-
class SPIRVDecorateHostAccessINTEL : public SPIRVDecorate {
751+
class SPIRVDecorateHostAccessINTELBase : public SPIRVDecorate {
748752
public:
749753
// Complete constructor for SPIRVHostAccessINTEL
750-
SPIRVDecorateHostAccessINTEL(SPIRVEntry *TheTarget,
751-
HostAccessQualifier AccessMode,
752-
const std::string &VarName)
753-
: SPIRVDecorate(DecorationHostAccessINTEL, TheTarget) {
754+
SPIRVDecorateHostAccessINTELBase(Decoration D, SPIRVEntry *TheTarget,
755+
HostAccessQualifier AccessMode,
756+
const std::string &VarName)
757+
: SPIRVDecorate(D, TheTarget) {
754758
Literals.push_back(AccessMode);
755759
for (auto &I : getVec(VarName))
756760
Literals.push_back(I);
@@ -761,7 +765,15 @@ class SPIRVDecorateHostAccessINTEL : public SPIRVDecorate {
761765
std::string getVarName() const {
762766
return getString(Literals.cbegin() + 1, Literals.cend());
763767
}
768+
};
764769

770+
class SPIRVDecorateHostAccessINTEL : public SPIRVDecorateHostAccessINTELBase {
771+
public:
772+
SPIRVDecorateHostAccessINTEL(SPIRVEntry *TheTarget,
773+
HostAccessQualifier AccessMode,
774+
const std::string &VarName)
775+
: SPIRVDecorateHostAccessINTELBase(DecorationHostAccessINTEL, TheTarget,
776+
AccessMode, VarName) {}
765777
static void encodeLiterals(SPIRVEncoder &Encoder,
766778
const std::vector<SPIRVWord> &Literals) {
767779
#ifdef _SPIRV_SUPPORT_TEXT_FMT
@@ -792,15 +804,62 @@ class SPIRVDecorateHostAccessINTEL : public SPIRVDecorate {
792804
}
793805
};
794806

795-
class SPIRVDecorateInitModeINTEL : public SPIRVDecorate {
807+
class SPIRVDecorateHostAccessINTELLegacy
808+
: public SPIRVDecorateHostAccessINTELBase {
809+
public:
810+
SPIRVDecorateHostAccessINTELLegacy(SPIRVEntry *TheTarget,
811+
HostAccessQualifier AccessMode,
812+
const std::string &VarName)
813+
: SPIRVDecorateHostAccessINTELBase(internal::DecorationHostAccessINTEL,
814+
TheTarget, AccessMode, VarName) {}
815+
static void encodeLiterals(SPIRVEncoder &Encoder,
816+
const std::vector<SPIRVWord> &Literals) {
817+
#ifdef _SPIRV_SUPPORT_TEXT_FMT
818+
if (SPIRVUseTextFormat) {
819+
Encoder << Literals.front();
820+
std::string Name = getString(Literals.cbegin() + 1, Literals.cend());
821+
Encoder << Name;
822+
} else
823+
#endif
824+
Encoder << Literals;
825+
}
826+
827+
static void decodeLiterals(SPIRVDecoder &Decoder,
828+
std::vector<SPIRVWord> &Literals) {
829+
#ifdef _SPIRV_SUPPORT_TEXT_FMT
830+
if (SPIRVUseTextFormat) {
831+
SPIRVWord Mode;
832+
Decoder >> Mode;
833+
std::string Name;
834+
Decoder >> Name;
835+
Literals.front() = Mode;
836+
std::copy_n(getVec(Name).begin(), Literals.size() - 1,
837+
Literals.begin() + 1);
838+
839+
} else
840+
#endif
841+
Decoder >> Literals;
842+
}
843+
};
844+
845+
class SPIRVDecorateInitModeINTELBase : public SPIRVDecorate {
796846
public:
797847
// Complete constructor for SPIRVInitModeINTEL
798-
SPIRVDecorateInitModeINTEL(SPIRVEntry *TheTarget,
799-
InitializationModeQualifier Trigger)
800-
: SPIRVDecorate(DecorationInitModeINTEL, TheTarget) {
848+
SPIRVDecorateInitModeINTELBase(Decoration D, SPIRVEntry *TheTarget,
849+
InitializationModeQualifier Trigger)
850+
: SPIRVDecorate(D, TheTarget) {
801851
Literals.push_back(Trigger);
802852
WordCount += Literals.size();
803853
}
854+
};
855+
856+
class SPIRVDecorateInitModeINTEL : public SPIRVDecorateInitModeINTELBase {
857+
public:
858+
SPIRVDecorateInitModeINTEL(SPIRVEntry *TheTarget,
859+
InitializationModeQualifier Trigger)
860+
: SPIRVDecorateInitModeINTELBase(DecorationInitModeINTEL, TheTarget,
861+
Trigger) {}
862+
804863
static void encodeLiterals(SPIRVEncoder &Encoder,
805864
const std::vector<SPIRVWord> &Literals) {
806865
#ifdef _SPIRV_SUPPORT_TEXT_FMT
@@ -824,6 +883,44 @@ class SPIRVDecorateInitModeINTEL : public SPIRVDecorate {
824883
}
825884
};
826885

886+
class SPIRVDecorateInitModeINTELLegacy : public SPIRVDecorateInitModeINTELBase {
887+
public:
888+
SPIRVDecorateInitModeINTELLegacy(SPIRVEntry *TheTarget,
889+
InitializationModeQualifier Trigger)
890+
: SPIRVDecorateInitModeINTELBase(internal::DecorationInitModeINTEL,
891+
TheTarget, Trigger) {}
892+
893+
static void encodeLiterals(SPIRVEncoder &Encoder,
894+
const std::vector<SPIRVWord> &Literals) {
895+
#ifdef _SPIRV_SUPPORT_TEXT_FMT
896+
if (SPIRVUseTextFormat) {
897+
Encoder << Literals.back();
898+
} else
899+
#endif
900+
Encoder << Literals;
901+
}
902+
903+
static void decodeLiterals(SPIRVDecoder &Decoder,
904+
std::vector<SPIRVWord> &Literals) {
905+
#ifdef _SPIRV_SUPPORT_TEXT_FMT
906+
if (SPIRVUseTextFormat) {
907+
SPIRVWord Q;
908+
Decoder >> Q;
909+
Literals.back() = Q;
910+
} else
911+
#endif
912+
Decoder >> Literals;
913+
}
914+
};
915+
916+
class SPIRVDecorateImplementInCSRINTEL : public SPIRVDecorate {
917+
public:
918+
// Complete constructor for SPIRVImplementInCSRINTEL
919+
SPIRVDecorateImplementInCSRINTEL(SPIRVEntry *TheTarget, SPIRVWord Value)
920+
: SPIRVDecorate(spv::internal::DecorationImplementInCSRINTEL, TheTarget,
921+
Value) {}
922+
};
923+
827924
class SPIRVDecorateImplementInRegisterMapINTEL : public SPIRVDecorate {
828925
public:
829926
// Complete constructor for SPIRVImplementInCSRINTEL

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -476,6 +476,12 @@ template <> inline void SPIRVMap<Decoration, SPIRVCapVec>::init() {
476476
{CapabilityFPGAInvocationPipeliningAttributesINTEL});
477477
ADD_VEC_INIT(internal::DecorationRuntimeAlignedINTEL,
478478
{CapabilityRuntimeAlignedAttributeINTEL});
479+
ADD_VEC_INIT(internal::DecorationHostAccessINTEL,
480+
{internal::CapabilityGlobalVariableDecorationsINTEL});
481+
ADD_VEC_INIT(internal::DecorationInitModeINTEL,
482+
{internal::CapabilityGlobalVariableDecorationsINTEL});
483+
ADD_VEC_INIT(internal::DecorationImplementInCSRINTEL,
484+
{internal::CapabilityGlobalVariableDecorationsINTEL});
479485
ADD_VEC_INIT(DecorationHostAccessINTEL,
480486
{CapabilityGlobalVariableHostAccessINTEL});
481487
ADD_VEC_INIT(DecorationInitModeINTEL,

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,9 @@ template <> inline void SPIRVMap<Decoration, std::string>::init() {
225225
add(internal::DecorationFuncParamDescINTEL, "FuncParamDescINTEL");
226226
add(internal::DecorationCallableFunctionINTEL, "CallableFunctionINTEL");
227227
add(internal::DecorationRuntimeAlignedINTEL, "RuntimeAlignedINTEL");
228+
add(internal::DecorationHostAccessINTEL, "HostAccessINTEL");
229+
add(internal::DecorationInitModeINTEL, "InitModeINTEL");
230+
add(internal::DecorationImplementInCSRINTEL, "ImplementInCSRINTEL");
228231
add(internal::DecorationArgumentAttributeINTEL, "ArgumentAttributeINTEL");
229232
add(internal::DecorationCacheControlLoadINTEL, "CacheControlLoadINTEL");
230233
add(internal::DecorationCacheControlStoreINTEL, "CacheControlStoreINTEL");
@@ -656,6 +659,8 @@ template <> inline void SPIRVMap<Capability, std::string>::init() {
656659
add(internal::CapabilityBfloat16ConversionINTEL, "Bfloat16ConversionINTEL");
657660
add(internal::CapabilityJointMatrixINTEL, "JointMatrixINTEL");
658661
add(internal::CapabilityHWThreadQueryINTEL, "HWThreadQueryINTEL");
662+
add(internal::CapabilityGlobalVariableDecorationsINTEL,
663+
"GlobalVariableDecorationsINTEL");
659664
add(internal::CapabilityComplexFloatMulDivINTEL, "ComplexFloatMulDivINTEL");
660665
add(internal::CapabilityMaskedGatherScatterINTEL, "MaskedGatherScatterINTEL");
661666
add(internal::CapabilityTensorFloat32RoundingINTEL,

llvm-spirv/lib/SPIRV/libSPIRV/spirv_internal.hpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,9 @@ enum InternalOp {
8686
enum InternalDecoration {
8787
IDecRuntimeAlignedINTEL = 5940,
8888
IDecCallableFunctionINTEL = 6087,
89+
IDecHostAccessINTEL = 6147,
90+
IDecInitModeINTEL = 6148,
91+
IDecImplementInCSRINTEL = 6149,
8992
IDecArgumentAttributeINTEL = 6409,
9093
IDecCacheControlLoadINTEL = 6442,
9194
IDecCacheControlStoreINTEL = 6443,
@@ -254,6 +257,12 @@ constexpr Decoration DecorationCallableFunctionINTEL =
254257
static_cast<Decoration>(IDecCallableFunctionINTEL);
255258
constexpr Decoration DecorationRuntimeAlignedINTEL =
256259
static_cast<Decoration>(IDecRuntimeAlignedINTEL);
260+
constexpr Decoration DecorationHostAccessINTEL =
261+
static_cast<Decoration>(IDecHostAccessINTEL);
262+
constexpr Decoration DecorationInitModeINTEL =
263+
static_cast<Decoration>(IDecInitModeINTEL);
264+
constexpr Decoration DecorationImplementInCSRINTEL =
265+
static_cast<Decoration>(IDecImplementInCSRINTEL);
257266
constexpr Decoration DecorationArgumentAttributeINTEL =
258267
static_cast<Decoration>(IDecArgumentAttributeINTEL);
259268
constexpr Decoration DecorationFuncParamKindINTEL =

llvm-spirv/spirv-headers-tag.conf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
88bc5e321c2839707df8b1ab534e243e00744177
1+
cca08c63cefa129d082abca0302adcb81610b465
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
; RUN: llvm-as %s -o %t.bc
2+
; RUN: llvm-spirv %t.bc --spirv-ext=+SPV_INTEL_global_variable_decorations -o %t.spv
3+
; RUN: llvm-spirv %t.spv -to-text -o %t.spt
4+
; RUN: FileCheck < %t.spt %s --check-prefix=CHECK-SPIRV
5+
6+
; RUN: llvm-spirv -r %t.spv --spirv-target-env=SPV-IR -o %t.rev.bc
7+
; RUN: llvm-dis %t.rev.bc
8+
; RUN: FileCheck < %t.rev.ll %s --check-prefix=CHECK-SPV-IR
9+
10+
; RUN: llvm-spirv -r %t.spv -o %t.rev.bc
11+
; RUN: llvm-dis %t.rev.bc
12+
; RUN: FileCheck < %t.rev.ll %s --check-prefix=CHECK-LLVM
13+
14+
; Expected to fail - the decorations require enabled extension to be translated.
15+
; RUN: not llvm-spirv %t.bc -o %t.spv
16+
17+
target datalayout = "e-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-n8:16:32:64"
18+
target triple = "spir64-unknown-unknown"
19+
20+
@int_var = addrspace(1) global i32 42, !spirv.Decorations !1
21+
@float_var = addrspace(1) global float 1.0, !spirv.Decorations !6
22+
@bool_var = addrspace(1) global i1 0, !spirv.Decorations !9
23+
24+
; CHECK-SPIRV: Capability GlobalVariableDecorationsINTEL
25+
; CHECK-SPIRV: Extension "SPV_INTEL_global_variable_decorations"
26+
; CHECK-SPIRV: Decorate [[#INT_VAR_ID:]] HostAccessINTEL 1 "IntVarName"
27+
; CHECK-SPIRV: Decorate [[#INT_VAR_ID]] ImplementInCSRINTEL 1
28+
; CHECK-SPIRV: Decorate [[#INT_VAR_ID]] InitModeINTEL 0
29+
30+
; CHECK-SPIRV: Decorate [[#FLOAT_VAR_ID:]] ImplementInCSRINTEL 1
31+
; CHECK-SPIRV: Decorate [[#FLOAT_VAR_ID]] InitModeINTEL 1
32+
33+
; CHECK-SPIRV: Decorate [[#BOOL_VAR_ID:]] HostAccessINTEL 3 "BoolVarName"
34+
; CHECK-SPIRV: Decorate [[#BOOL_VAR_ID]] ImplementInCSRINTEL 0
35+
; CHECK-SPIRV: Decorate [[#BOOL_VAR_ID]] InitModeINTEL 0
36+
37+
; 5 is a global storage
38+
; CHECK-SPIRV: Variable [[#]] [[#INT_VAR_ID]] 5
39+
; CHECK-SPIRV: Variable [[#]] [[#FLOAT_VAR_ID]] 5
40+
; CHECK-SPIRV: Variable [[#]] [[#BOOL_VAR_ID]] 5
41+
42+
!1 = !{!2, !3, !4}
43+
!2 = !{i32 6147, i32 1, !"IntVarName"} ; HostAccessINTEL 1 "IntVarName"
44+
!3 = !{i32 6149, i1 true} ; ImplementInCSRINTEL = true
45+
!4 = !{i32 6148, i32 0} ; InitModeINTEL = 0
46+
!5 = !{i32 6148, i32 1} ; InitModeINTEL = 1
47+
!6 = !{!3, !5}
48+
!7 = !{i32 6147, i32 3, !"BoolVarName"} ; HostAccessINTEL 3 "BoolVarName"
49+
!8 = !{i32 6149, i1 false} ; ImplementInCSRINTEL = false
50+
!9 = !{!7, !8, !4}
51+
52+
; CHECK-SPV-IR: @int_var = addrspace(1) global i32 42, !spirv.Decorations ![[#INT_VAR_DEC:]]
53+
; CHECK-SPV-IR: @float_var = addrspace(1) global float 1.000000e+00, !spirv.Decorations ![[#FLOAT_VAR_DEC:]]
54+
; CHECK-SPV-IR: @bool_var = addrspace(1) global i1 false, !spirv.Decorations ![[#BOOL_VAR_DEC:]]
55+
56+
; CHECK-SPV-IR: ![[#INT_VAR_DEC]] = !{![[#]], ![[#MD_HOST_ACCESS_INTVAR:]], ![[#MD_INIT_0:]], ![[#MD_CSR_1:]]}
57+
; CHECK-SPV-IR: ![[#MD_HOST_ACCESS_INTVAR]] = !{i32 6147, i32 1, !"IntVarName"}
58+
; CHECK-SPV-IR: ![[#MD_INIT_0]] = !{i32 6148, i32 0}
59+
; CHECK-SPV-IR: ![[#MD_CSR_1]] = !{i32 6149, i32 1}
60+
; CHECK-SPV-IR: ![[#FLOAT_VAR_DEC]] = !{![[#]], ![[#MD_INIT_1:]], ![[#MD_CSR_1]]}
61+
; CHECK-SPV-IR: ![[#MD_INIT_1]] = !{i32 6148, i32 1}
62+
; CHECK-SPV-IR: ![[#BOOL_VAR_DEC]] = !{![[#]], ![[#MD_HOST_ACCESS_BOOLVAR:]], ![[#MD_INIT_0]], ![[#MD_CSR_0:]]}
63+
; CHECK-SPV-IR: ![[#MD_HOST_ACCESS_BOOLVAR]] = !{i32 6147, i32 3, !"BoolVarName"}
64+
; CHECK-SPV-IR: ![[#MD_CSR_0]] = !{i32 6149, i32 0}
65+
66+
67+
; CHECK-LLVM-NOT: @int_var = {{.*}}, !spirv.Decorations ![[#]]
68+
; CHECK-LLVM-NOT: @float_var = {{.*}}, !spirv.Decorations ![[#]]
69+
; CHECK-LLVM-NOT: @bool_var = {{.*}}, !spirv.Decorations ![[#]]
70+
71+
; CHECK-LLVM: @int_var = addrspace(1) global i32 42
72+
; CHECK-LLVM: @float_var = addrspace(1) global float 1.000000e+00
73+
; CHECK-LLVM: @bool_var = addrspace(1) global i1 false

0 commit comments

Comments
 (0)