1- From edc51a3da117861a7884162ac9646e4b1a9d6a0e Mon Sep 17 00:00:00 2001
1+ From 794c7d32e521060190bbfca7c52f0bb4fa49f2f2 Mon Sep 17 00:00:00 2001
22From: haonanya <
[email protected] >
33Date: Mon, 19 Jul 2021 10:14:20 +0800
44Subject: [PATCH] Add support for cl_ext_float_atomics in SPIRVWriter
@@ -79,7 +79,7 @@ index e30aa5be..98d4289e 100644
7979 &Attrs);
8080 }
8181diff --git a/lib/SPIRV/OCLUtil.cpp b/lib/SPIRV/OCLUtil.cpp
82- index c7232623..ecb97119 100644
82+ index 992f173f..539c196c 100644
8383--- a/lib/SPIRV/OCLUtil.cpp
8484+++ b/lib/SPIRV/OCLUtil.cpp
8585@@ -120,29 +120,32 @@ size_t getSPIRVAtomicBuiltinNumMemoryOrderArgs(Op OC) {
@@ -124,12 +124,12 @@ index c7232623..ecb97119 100644
124124 }
125125
126126diff --git a/lib/SPIRV/SPIRVToOCL.h b/lib/SPIRV/SPIRVToOCL.h
127- index ddeec0b6..006fb0b1 100644
127+ index 746a7acf..af8dade9 100644
128128--- a/lib/SPIRV/SPIRVToOCL.h
129129+++ b/lib/SPIRV/SPIRVToOCL.h
130- @@ -178 ,6 +178 ,9 @@ public:
131- /// using separate maps for OpenCL 1.2 and OpenCL 2.0
132- virtual Instruction *mutateAtomicName(CallInst *CI, Op OC) = 0 ;
130+ @@ -208 ,6 +208 ,9 @@ public:
131+
132+ void translateOpaqueTypes() ;
133133
134134+ // Transform FP atomic opcode to corresponding OpenCL function name
135135+ virtual std::string mapFPAtomicName(Op OC) = 0;
@@ -138,7 +138,7 @@ index ddeec0b6..006fb0b1 100644
138138 /// Transform uniform group opcode to corresponding OpenCL function name,
139139 /// example: GroupIAdd(Reduce) => group_iadd => work_group_reduce_add |
140140diff --git a/lib/SPIRV/SPIRVToOCL12.cpp b/lib/SPIRV/SPIRVToOCL12.cpp
141- index afddd596..d7f00de3 100644
141+ index 1a62c6b8..dc0ba9cc 100644
142142--- a/lib/SPIRV/SPIRVToOCL12.cpp
143143+++ b/lib/SPIRV/SPIRVToOCL12.cpp
144144@@ -104,6 +104,9 @@ public:
@@ -151,7 +151,7 @@ index afddd596..d7f00de3 100644
151151 static char ID;
152152 };
153153
154- @@ -338 ,6 +341 ,21 @@ Instruction *SPIRVToOCL12::visitCallSPIRVAtomicBuiltin(CallInst *CI, Op OC) {
154+ @@ -344 ,6 +347 ,21 @@ Instruction *SPIRVToOCL12::visitCallSPIRVAtomicBuiltin(CallInst *CI, Op OC) {
155155 return NewCI;
156156 }
157157
@@ -173,7 +173,7 @@ index afddd596..d7f00de3 100644
173173 Instruction *SPIRVToOCL12::mutateAtomicName(CallInst *CI, Op OC) {
174174 AttributeList Attrs = CI->getCalledFunction()->getAttributes();
175175 return mutateCallInstOCL(
176- @@ -351 ,6 +369 ,9 @@ Instruction *SPIRVToOCL12::mutateAtomicName(CallInst *CI, Op OC) {
176+ @@ -357 ,6 +375 ,9 @@ Instruction *SPIRVToOCL12::mutateAtomicName(CallInst *CI, Op OC) {
177177 std::string SPIRVToOCL12::mapAtomicName(Op OC, Type *Ty) {
178178 std::string Prefix = Ty->isIntegerTy(64) ? kOCLBuiltinName::AtomPrefix
179179 : kOCLBuiltinName::AtomicPrefix;
@@ -184,7 +184,7 @@ index afddd596..d7f00de3 100644
184184 }
185185
186186diff --git a/lib/SPIRV/SPIRVToOCL20.cpp b/lib/SPIRV/SPIRVToOCL20.cpp
187- index d829ff42..01d088e9 100644
187+ index 8c437858..0033b853 100644
188188--- a/lib/SPIRV/SPIRVToOCL20.cpp
189189+++ b/lib/SPIRV/SPIRVToOCL20.cpp
190190@@ -82,6 +82,9 @@ public:
@@ -197,7 +197,7 @@ index d829ff42..01d088e9 100644
197197 static char ID;
198198 };
199199
200- @@ -144 ,11 +147 ,29 @@ void SPIRVToOCL20::visitCallSPIRVControlBarrier(CallInst *CI) {
200+ @@ -150 ,11 +153 ,29 @@ void SPIRVToOCL20::visitCallSPIRVControlBarrier(CallInst *CI) {
201201 &Attrs);
202202 }
203203
@@ -227,7 +227,7 @@ index d829ff42..01d088e9 100644
227227 return OCLSPIRVBuiltinMap::rmap(OC);
228228 },
229229 &Attrs);
230- @@ -215 ,7 +236 ,12 @@ CallInst *SPIRVToOCL20::mutateCommonAtomicArguments(CallInst *CI, Op OC) {
230+ @@ -221 ,7 +242 ,12 @@ CallInst *SPIRVToOCL20::mutateCommonAtomicArguments(CallInst *CI, Op OC) {
231231 }
232232 }
233233 auto Ptr = findFirstPtr(Args);
@@ -1139,5 +1139,5 @@ index b8ec5b89..f8d159fe 100644
11391139- d = atomic_fetch_max_explicit(pp, val, order);
11401140 }
11411141- -
1142- 2.18 .1
1142+ 2.17 .1
11431143
0 commit comments