1
- From edc51a3da117861a7884162ac9646e4b1a9d6a0e Mon Sep 17 00:00:00 2001
1
+ From 794c7d32e521060190bbfca7c52f0bb4fa49f2f2 Mon Sep 17 00:00:00 2001
2
2
From: haonanya <
[email protected] >
3
3
Date: Mon, 19 Jul 2021 10:14:20 +0800
4
4
Subject: [PATCH] Add support for cl_ext_float_atomics in SPIRVWriter
@@ -79,7 +79,7 @@ index e30aa5be..98d4289e 100644
79
79
&Attrs);
80
80
}
81
81
diff --git a/lib/SPIRV/OCLUtil.cpp b/lib/SPIRV/OCLUtil.cpp
82
- index c7232623..ecb97119 100644
82
+ index 992f173f..539c196c 100644
83
83
--- a/lib/SPIRV/OCLUtil.cpp
84
84
+++ b/lib/SPIRV/OCLUtil.cpp
85
85
@@ -120,29 +120,32 @@ size_t getSPIRVAtomicBuiltinNumMemoryOrderArgs(Op OC) {
@@ -124,12 +124,12 @@ index c7232623..ecb97119 100644
124
124
}
125
125
126
126
diff --git a/lib/SPIRV/SPIRVToOCL.h b/lib/SPIRV/SPIRVToOCL.h
127
- index ddeec0b6..006fb0b1 100644
127
+ index 746a7acf..af8dade9 100644
128
128
--- a/lib/SPIRV/SPIRVToOCL.h
129
129
+++ 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() ;
133
133
134
134
+ // Transform FP atomic opcode to corresponding OpenCL function name
135
135
+ virtual std::string mapFPAtomicName(Op OC) = 0;
@@ -138,7 +138,7 @@ index ddeec0b6..006fb0b1 100644
138
138
/// Transform uniform group opcode to corresponding OpenCL function name,
139
139
/// example: GroupIAdd(Reduce) => group_iadd => work_group_reduce_add |
140
140
diff --git a/lib/SPIRV/SPIRVToOCL12.cpp b/lib/SPIRV/SPIRVToOCL12.cpp
141
- index afddd596..d7f00de3 100644
141
+ index 1a62c6b8..dc0ba9cc 100644
142
142
--- a/lib/SPIRV/SPIRVToOCL12.cpp
143
143
+++ b/lib/SPIRV/SPIRVToOCL12.cpp
144
144
@@ -104,6 +104,9 @@ public:
@@ -151,7 +151,7 @@ index afddd596..d7f00de3 100644
151
151
static char ID;
152
152
};
153
153
154
- @@ -338 ,6 +341 ,21 @@ Instruction *SPIRVToOCL12::visitCallSPIRVAtomicBuiltin(CallInst *CI, Op OC) {
154
+ @@ -344 ,6 +347 ,21 @@ Instruction *SPIRVToOCL12::visitCallSPIRVAtomicBuiltin(CallInst *CI, Op OC) {
155
155
return NewCI;
156
156
}
157
157
@@ -173,7 +173,7 @@ index afddd596..d7f00de3 100644
173
173
Instruction *SPIRVToOCL12::mutateAtomicName(CallInst *CI, Op OC) {
174
174
AttributeList Attrs = CI->getCalledFunction()->getAttributes();
175
175
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) {
177
177
std::string SPIRVToOCL12::mapAtomicName(Op OC, Type *Ty) {
178
178
std::string Prefix = Ty->isIntegerTy(64) ? kOCLBuiltinName::AtomPrefix
179
179
: kOCLBuiltinName::AtomicPrefix;
@@ -184,7 +184,7 @@ index afddd596..d7f00de3 100644
184
184
}
185
185
186
186
diff --git a/lib/SPIRV/SPIRVToOCL20.cpp b/lib/SPIRV/SPIRVToOCL20.cpp
187
- index d829ff42..01d088e9 100644
187
+ index 8c437858..0033b853 100644
188
188
--- a/lib/SPIRV/SPIRVToOCL20.cpp
189
189
+++ b/lib/SPIRV/SPIRVToOCL20.cpp
190
190
@@ -82,6 +82,9 @@ public:
@@ -197,7 +197,7 @@ index d829ff42..01d088e9 100644
197
197
static char ID;
198
198
};
199
199
200
- @@ -144 ,11 +147 ,29 @@ void SPIRVToOCL20::visitCallSPIRVControlBarrier(CallInst *CI) {
200
+ @@ -150 ,11 +153 ,29 @@ void SPIRVToOCL20::visitCallSPIRVControlBarrier(CallInst *CI) {
201
201
&Attrs);
202
202
}
203
203
@@ -227,7 +227,7 @@ index d829ff42..01d088e9 100644
227
227
return OCLSPIRVBuiltinMap::rmap(OC);
228
228
},
229
229
&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) {
231
231
}
232
232
}
233
233
auto Ptr = findFirstPtr(Args);
@@ -1139,5 +1139,5 @@ index b8ec5b89..f8d159fe 100644
1139
1139
- d = atomic_fetch_max_explicit(pp, val, order);
1140
1140
}
1141
1141
- -
1142
- 2.18 .1
1142
+ 2.17 .1
1143
1143
0 commit comments