~mmach/netext73/spirv-llvm-translator-17

« back to all changes in this revision

Viewing changes to debian/patches/spirv-llvm-translator-17.0.0-intel-capability.patch

  • Committer: mmach
  • Date: 2024-01-21 14:35:20 UTC
  • Revision ID: netbit73@gmail.com-20240121143520-rit0kj2b2jlp2t1n
pat

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
diff --git a/dev-util/spirv-llvm-translator/files/spirv-llvm-translator-17.0.0-intel-capability.patch b/dev-util/spirv-llvm-translator/files/spirv-llvm-translator-17.0.0-intel-capability.patch
 
2
new file mode 100644
 
3
index 000000000000..d7839367a2a1
 
4
--- /dev/null
 
5
+++ b/dev-util/spirv-llvm-translator/files/spirv-llvm-translator-17.0.0-intel-capability.patch
 
6
@@ -0,0 +1,181 @@
 
7
+diff --git a/include/LLVMSPIRVExtensions.inc b/include/LLVMSPIRVExtensions.inc
 
8
+index eb98c7f..4e2eb0b 100644
 
9
+--- a/include/LLVMSPIRVExtensions.inc
 
10
++++ b/include/LLVMSPIRVExtensions.inc
 
11
+@@ -41,7 +41,7 @@ EXT(SPV_INTEL_variable_length_array)
 
12
+ EXT(SPV_INTEL_fp_fast_math_mode)
 
13
+ EXT(SPV_INTEL_fpga_cluster_attributes)
 
14
+ EXT(SPV_INTEL_loop_fuse)
 
15
+-EXT(SPV_INTEL_long_constant_composite)
 
16
++EXT(SPV_INTEL_long_composites)
 
17
+ EXT(SPV_INTEL_optnone)
 
18
+ EXT(SPV_INTEL_fpga_dsp_control)
 
19
+ EXT(SPV_INTEL_memory_access_aliasing)
 
20
+diff --git a/lib/SPIRV/SPIRVWriter.cpp b/lib/SPIRV/SPIRVWriter.cpp
 
21
+index 807aa0c..0946dbe 100644
 
22
+--- a/lib/SPIRV/SPIRVWriter.cpp
 
23
++++ b/lib/SPIRV/SPIRVWriter.cpp
 
24
+@@ -409,11 +409,10 @@ SPIRVType *LLVMToSPIRVBase::transType(Type *T) {
 
25
+     const size_t NumElements = ST->getNumElements();
 
26
+     size_t SPIRVStructNumElements = NumElements;
 
27
+     // In case number of elements is greater than maximum WordCount and
 
28
+-    // SPV_INTEL_long_constant_composite is not enabled, the error will be
 
29
+     // emitted by validate functionality of SPIRVTypeStruct class.
 
30
+     if (NumElements > MaxNumElements &&
 
31
+-        BM->isAllowedToUseExtension(
 
32
+-            ExtensionID::SPV_INTEL_long_constant_composite)) {
 
33
+       SPIRVStructNumElements = MaxNumElements;
 
34
+     }
 
35
 
36
+@@ -421,8 +420,7 @@ SPIRVType *LLVMToSPIRVBase::transType(Type *T) {
 
37
+     mapType(T, Struct);
 
38
 
39
+     if (NumElements > MaxNumElements &&
 
40
+-        BM->isAllowedToUseExtension(
 
41
+-            ExtensionID::SPV_INTEL_long_constant_composite)) {
 
42
+       uint64_t NumOfContinuedInstructions = NumElements / MaxNumElements - 1;
 
43
+       for (uint64_t J = 0; J < NumOfContinuedInstructions; J++) {
 
44
+         auto *Continued = BM->addTypeStructContinuedINTEL(MaxNumElements);
 
45
+@@ -1832,8 +1830,7 @@ LLVMToSPIRVBase::transValueWithoutDecoration(Value *V, SPIRVBasicBlock *BB,
 
46
+       } else
 
47
+         BVarInit = I->second;
 
48
+     } else if (Init && !isa<UndefValue>(Init)) {
 
49
+-      if (!BM->isAllowedToUseExtension(
 
50
+-              ExtensionID::SPV_INTEL_long_constant_composite)) {
 
51
+         if (auto ArrTy = dyn_cast_or_null<ArrayType>(Init->getType())) {
 
52
+           // First 3 words of OpConstantComposite encode: 1) word count &
 
53
+           // opcode, 2) Result Type and 3) Result Id. Max length of SPIRV
 
54
+diff --git a/lib/SPIRV/libSPIRV/SPIRVEntry.h b/lib/SPIRV/libSPIRV/SPIRVEntry.h
 
55
+index a3c9441..e188099 100644
 
56
+--- a/lib/SPIRV/libSPIRV/SPIRVEntry.h
 
57
++++ b/lib/SPIRV/libSPIRV/SPIRVEntry.h
 
58
+@@ -908,11 +908,11 @@ public:
 
59
+   }
 
60
 
61
+   SPIRVCapVec getRequiredCapability() const override {
 
62
+-    return getVec(CapabilityLongConstantCompositeINTEL);
 
63
+   }
 
64
 
65
+   std::optional<ExtensionID> getRequiredExtension() const override {
 
66
+-    return ExtensionID::SPV_INTEL_long_constant_composite;
 
67
+   }
 
68
 
69
+   SPIRVWord getNumElements() const { return Elements.size(); }
 
70
+diff --git a/lib/SPIRV/libSPIRV/SPIRVModule.cpp b/lib/SPIRV/libSPIRV/SPIRVModule.cpp
 
71
+index 5ac7275..d8d06f6 100644
 
72
+--- a/lib/SPIRV/libSPIRV/SPIRVModule.cpp
 
73
++++ b/lib/SPIRV/libSPIRV/SPIRVModule.cpp
 
74
+@@ -1175,10 +1175,10 @@ SPIRVValue *SPIRVModuleImpl::addCompositeConstant(
 
75
+   const int NumElements = Elements.size();
 
76
 
77
+   // In case number of elements is greater than maximum WordCount and
 
78
+-  // SPV_INTEL_long_constant_composite is not enabled, the error will be emitted
 
79
+   // by validate functionality of SPIRVCompositeConstant class.
 
80
+   if (NumElements <= MaxNumElements ||
 
81
+-      !isAllowedToUseExtension(ExtensionID::SPV_INTEL_long_constant_composite))
 
82
+     return addConstant(new SPIRVConstantComposite(this, Ty, getId(), Elements));
 
83
 
84
+   auto Start = Elements.begin();
 
85
+@@ -1213,7 +1213,7 @@ SPIRVValue *SPIRVModuleImpl::addSpecConstantComposite(
 
86
+   // SPV_INTEL_long_constant_composite is not enabled, the error will be emitted
 
87
+   // by validate functionality of SPIRVSpecConstantComposite class.
 
88
+   if (NumElements <= MaxNumElements ||
 
89
+-      !isAllowedToUseExtension(ExtensionID::SPV_INTEL_long_constant_composite))
 
90
+     return addConstant(
 
91
+         new SPIRVSpecConstantComposite(this, Ty, getId(), Elements));
 
92
 
93
+diff --git a/lib/SPIRV/libSPIRV/SPIRVNameMapEnum.h b/lib/SPIRV/libSPIRV/SPIRVNameMapEnum.h
 
94
+index d450a43..a2a0ddb 100644
 
95
+--- a/lib/SPIRV/libSPIRV/SPIRVNameMapEnum.h
 
96
++++ b/lib/SPIRV/libSPIRV/SPIRVNameMapEnum.h
 
97
+@@ -610,7 +610,7 @@ template <> inline void SPIRVMap<Capability, std::string>::init() {
 
98
+   add(CapabilityGroupNonUniformRotateKHR, "GroupNonUniformRotateKHR");
 
99
+   add(CapabilityAtomicFloat32AddEXT, "AtomicFloat32AddEXT");
 
100
+   add(CapabilityAtomicFloat64AddEXT, "AtomicFloat64AddEXT");
 
101
+-  add(CapabilityLongConstantCompositeINTEL, "LongConstantCompositeINTEL");
 
102
+   add(CapabilityOptNoneINTEL, "OptNoneINTEL");
 
103
+   add(CapabilityAtomicFloat16AddEXT, "AtomicFloat16AddEXT");
 
104
+   add(CapabilityDebugInfoModuleINTEL, "DebugInfoModuleINTEL");
 
105
+diff --git a/test/SpecConstants/long-spec-const-composite.ll b/test/SpecConstants/long-spec-const-composite.ll
 
106
+index a45c895..e943296 100644
 
107
+--- a/test/SpecConstants/long-spec-const-composite.ll
 
108
++++ b/test/SpecConstants/long-spec-const-composite.ll
 
109
+@@ -1,5 +1,5 @@
 
110
+ ; RUN: llvm-as %s -o %t.bc
 
111
+-; RUN: llvm-spirv --spirv-ext=+SPV_INTEL_long_constant_composite %t.bc -o %t.spv
 
112
++; RUN: llvm-spirv --spirv-ext=+SPV_INTEL_long_composites %t.bc -o %t.spv
 
113
+ ; RUN: llvm-spirv %t.spv --to-text -o - | FileCheck %s --check-prefix=CHECK-SPIRV
 
114
+ ; RUN: llvm-spirv -r -emit-opaque-pointers %t.spv -o %t.rev.bc
 
115
+ ; RUN: llvm-dis < %t.rev.bc | FileCheck %s --check-prefix=CHECK-LLVM
 
116
+@@ -11,8 +11,8 @@
 
117
+ 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"
 
118
+ target triple = "spir64-unknown-unknown"
 
119
 
120
+-; CHECK-SPIRV: Capability LongConstantCompositeINTEL 
 
121
+-; CHECK-SPIRV: Extension "SPV_INTEL_long_constant_composite"
 
122
++; CHECK-SPIRV: Capability LongCompositesINTEL
 
123
++; CHECK-SPIRV: Extension "SPV_INTEL_long_composites"
 
124
+ ; CHECK-SPIRV-DAG: Decorate [[First:[0-9]+]] SpecId  0
 
125
+ ; CHECK-SPIRV-DAG: Decorate [[Last:[0-9]+]] SpecId 65548
 
126
+ ; CHECK-SPIRV: TypeInt [[TInt:[0-9]+]] 8
 
127
+diff --git a/test/long-constant-array.ll b/test/long-constant-array.ll
 
128
+index 415a723..cfef59d 100644
 
129
+--- a/test/long-constant-array.ll
 
130
++++ b/test/long-constant-array.ll
 
131
+@@ -1,16 +1,16 @@
 
132
+ ; RUN: llvm-as %s -o %t.bc
 
133
+ ; RUN: not llvm-spirv %t.bc -o %t.spv 2>&1 | FileCheck %s --check-prefix=CHECK-ERROR
 
134
 
135
+-; Check that everything is fine if SPV_INTEL_long_constant_composite is enabled
 
136
+-; RUN: llvm-spirv --spirv-ext=+SPV_INTEL_long_constant_composite %t.bc -o %t.spv
 
137
++; Check that everything is fine if SPV_INTEL_long_composites is enabled
 
138
++; RUN: llvm-spirv --spirv-ext=+SPV_INTEL_long_composites %t.bc -o %t.spv
 
139
+ ; RUN: llvm-spirv %t.spv --to-text -o - | FileCheck %s --check-prefix=CHECK-SPIRV
 
140
+ ; RUN: llvm-spirv -r -emit-opaque-pointers %t.spv -o %t.rev.bc
 
141
+ ; RUN: llvm-dis < %t.rev.bc | FileCheck %s --check-prefix=CHECK-LLVM
 
142
+ ; TODO: run validator once it supports the extension
 
143
+ ; RUNx: spirv-val %t.spv
 
144
 
145
+-; CHECK-SPIRV: Capability LongConstantCompositeINTEL 
 
146
+-; CHECK-SPIRV: Extension "SPV_INTEL_long_constant_composite"
 
147
++; CHECK-SPIRV: Capability LongCompositesINTEL
 
148
++; CHECK-SPIRV: Extension "SPV_INTEL_long_composites"
 
149
+ ; CHECK-SPIRV: TypeInt [[TInt:[0-9]+]] 8
 
150
+ ; CHECK-SPIRV: Constant {{[0-9]+}} [[ArrSize:[0-9]+]] 78000
 
151
+ ; CHECK-SPIRV: TypeArray [[TArr:[0-9]+]] [[TInt]] [[ArrSize]]
 
152
+diff --git a/test/long-type-struct.ll b/test/long-type-struct.ll
 
153
+index 9b83f62..de6352a 100644
 
154
+--- a/test/long-type-struct.ll
 
155
++++ b/test/long-type-struct.ll
 
156
+@@ -1,8 +1,8 @@
 
157
+ ; RUN: llvm-as %s -o %t.bc
 
158
+-; RUN: llvm-spirv --spirv-ext=+SPV_INTEL_long_constant_composite %t.bc -o %t.spv
 
159
++; RUN: llvm-spirv --spirv-ext=+SPV_INTEL_long_composites %t.bc -o %t.spv
 
160
+ ; RUN: llvm-spirv %t.spv --to-text -o - | FileCheck %s --check-prefix=CHECK-SPIRV
 
161
+ ; RUN: llvm-spirv -r -emit-opaque-pointers %t.spv -o %t.rev.bc
 
162
+-; RUN: llvm-spirv --spirv-ext=+SPV_INTEL_long_constant_composite -spirv-text %t.rev.bc -o %t2.spt
 
163
++; RUN: llvm-spirv --spirv-ext=+SPV_INTEL_long_composites -spirv-text %t.rev.bc -o %t2.spt
 
164
+ ; RUN: FileCheck --input-file=%t2.spt %s --check-prefix=CHECK-SPIRV
 
165
+ ; RUN: llvm-dis < %t.rev.bc | FileCheck %s --check-prefix=CHECK-LLVM
 
166
+ ; TODO: run validator once it supports the extension
 
167
+@@ -10,8 +10,8 @@
 
168
 
169
+ ; RUN: not llvm-spirv %t.bc -o %t.spv 2>&1 | FileCheck %s --check-prefix=CHECK-ERROR
 
170
 
171
+-; CHECK-SPIRV: Capability LongConstantCompositeINTEL 
 
172
+-; CHECK-SPIRV: Extension "SPV_INTEL_long_constant_composite"
 
173
++; CHECK-SPIRV: Capability LongCompositesINTEL
 
174
++; CHECK-SPIRV: Extension "SPV_INTEL_long_composites"
 
175
+ ; CHECK-SPIRV: TypeInt [[TInt:[0-9]+]] 8
 
176
+ ; CHECK-SPIRV: TypePointer [[TIntPtr:[0-9]+]] 8 [[TInt]]
 
177
+ ; CHECK-SPIRV: TypeArray [[TArr:[0-9]+]]
 
178
diff --git a/dev-util/spirv-llvm-translator/spirv-llvm-translator-17.0.0.ebuild b/dev-util/spirv-llvm-translator/spirv-llvm-translator-17.0.0-r1.ebuild
 
179
index 5f258190d543..31e879a61af7 100644
 
180
--- a/dev-util/spirv-llvm-translator/spirv-llvm-translator-17.0.0.ebuild
 
181
+++ b/dev-util/spirv-llvm-translator/spirv-llvm-translator-17.0.0-r1.ebuild
 
182
@@ -1,4 +1,4 @@
 
183
-# Copyright 1999-2023 Gentoo Authors
 
184
+# Copyright 1999-2024 Gentoo Authors
 
185
 # Distributed under the terms of the GNU General Public License v2
 
186
 
 
187
 EAPI=8
 
188
@@ -35,6 +35,8 @@ BDEPEND="
 
189
        )
 
190
 "
 
191
 
 
192
+PATCHES=( "${FILESDIR}/${PN}-17.0.0-intel-capability.patch" )
 
193
+
 
194
 src_prepare() {
 
195
        append-flags -fPIC
 
196
        cmake_src_prepare