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

« back to all changes in this revision

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