Link Here
|
|
|
1 |
From f40ed02f7de65296219a0a160118ae3234e765c5 Mon Sep 17 00:00:00 2001 |
2 |
From: Pan Xiuli <xiuli.pan@intel.com> |
3 |
Date: Fri, 17 Mar 2017 14:16:01 +0800 |
4 |
Subject: Backend: Refine LLVM version check macro |
5 |
|
6 |
LLVM 4.0 is coming, we should refine our version check to fit the |
7 |
LLVM_MAJOR_VERSION bump to 4. |
8 |
|
9 |
Signed-off-by: Pan Xiuli <xiuli.pan@intel.com> |
10 |
Reviewed-by: Yang Rong <rong.r.yang@intel.com> |
11 |
|
12 |
diff --git a/backend/src/backend/gen_program.cpp b/backend/src/backend/gen_program.cpp |
13 |
index 376342b..998e340 100644 |
14 |
--- a/backend/src/backend/gen_program.cpp |
15 |
+++ b/backend/src/backend/gen_program.cpp |
16 |
@@ -329,13 +329,13 @@ namespace gbe { |
17 |
//the first byte stands for binary_type. |
18 |
binary_content.assign(binary+1, size-1); |
19 |
llvm::StringRef llvm_bin_str(binary_content); |
20 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 9 |
21 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 39 |
22 |
llvm::LLVMContext& c = GBEGetLLVMContext(); |
23 |
#else |
24 |
llvm::LLVMContext& c = llvm::getGlobalContext(); |
25 |
#endif |
26 |
llvm::SMDiagnostic Err; |
27 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 6 |
28 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 36 |
29 |
std::unique_ptr<llvm::MemoryBuffer> memory_buffer = llvm::MemoryBuffer::getMemBuffer(llvm_bin_str, "llvm_bin_str"); |
30 |
acquireLLVMContextLock(); |
31 |
llvm::Module* module = llvm::parseIR(memory_buffer->getMemBufferRef(), Err, c).release(); |
32 |
@@ -482,14 +482,14 @@ namespace gbe { |
33 |
using namespace gbe; |
34 |
char* errMsg; |
35 |
if(((GenProgram*)dst_program)->module == NULL){ |
36 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 8 |
37 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 38 |
38 |
((GenProgram*)dst_program)->module = llvm::CloneModule((llvm::Module*)((GenProgram*)src_program)->module).release(); |
39 |
#else |
40 |
((GenProgram*)dst_program)->module = llvm::CloneModule((llvm::Module*)((GenProgram*)src_program)->module); |
41 |
#endif |
42 |
errSize = 0; |
43 |
}else{ |
44 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 9 |
45 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 39 |
46 |
// Src now will be removed automatically. So clone it. |
47 |
llvm::Module* src = llvm::CloneModule((llvm::Module*)((GenProgram*)src_program)->module).release(); |
48 |
#else |
49 |
@@ -497,9 +497,9 @@ namespace gbe { |
50 |
#endif |
51 |
llvm::Module* dst = (llvm::Module*)((GenProgram*)dst_program)->module; |
52 |
|
53 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 9 |
54 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 39 |
55 |
if (LLVMLinkModules2(wrap(dst), wrap(src))) { |
56 |
-#elif LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 |
57 |
+#elif LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 37 |
58 |
if (LLVMLinkModules(wrap(dst), wrap(src), LLVMLinkerPreserveSource_Removed, &errMsg)) { |
59 |
#else |
60 |
if (LLVMLinkModules(wrap(dst), wrap(src), LLVMLinkerPreserveSource, &errMsg)) { |
61 |
diff --git a/backend/src/backend/program.cpp b/backend/src/backend/program.cpp |
62 |
index 6b5fce0..6e8227a 100644 |
63 |
--- a/backend/src/backend/program.cpp |
64 |
+++ b/backend/src/backend/program.cpp |
65 |
@@ -115,7 +115,7 @@ namespace gbe { |
66 |
llvm::Module * cloned_module = NULL; |
67 |
bool ret = false; |
68 |
if(module){ |
69 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 8 |
70 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 38 |
71 |
cloned_module = llvm::CloneModule((llvm::Module*)module).release(); |
72 |
#else |
73 |
cloned_module = llvm::CloneModule((llvm::Module*)module); |
74 |
@@ -124,7 +124,7 @@ namespace gbe { |
75 |
bool strictMath = true; |
76 |
if (fast_relaxed_math || !OCL_STRICT_CONFORMANCE) |
77 |
strictMath = false; |
78 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 9 |
79 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 39 |
80 |
llvm::Module * linked_module = module ? llvm::CloneModule((llvm::Module*)module).release() : NULL; |
81 |
// Src now will be removed automatically. So clone it. |
82 |
if (llvmToGen(*unit, fileName, linked_module, optLevel, strictMath, OCL_PROFILING_LOG, error) == false) { |
83 |
@@ -651,7 +651,7 @@ namespace gbe { |
84 |
// The ParseCommandLineOptions used for mllvm args can not be used with multithread |
85 |
// and GVN now have a 100 inst limit on block scan. Now only pass a bigger limit |
86 |
// for each context only once, this can also fix multithread bug. |
87 |
-#if LLVM_VERSION_MINOR >= 8 |
88 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 38 |
89 |
static bool ifsetllvm = false; |
90 |
if(!ifsetllvm) { |
91 |
args.push_back("-mllvm"); |
92 |
@@ -702,7 +702,7 @@ namespace gbe { |
93 |
Diags); |
94 |
llvm::StringRef srcString(source); |
95 |
(*CI).getPreprocessorOpts().addRemappedFile("stringInput.cl", |
96 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR <= 5 |
97 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR <= 35 |
98 |
llvm::MemoryBuffer::getMemBuffer(srcString) |
99 |
#else |
100 |
llvm::MemoryBuffer::getMemBuffer(srcString).release() |
101 |
@@ -755,7 +755,7 @@ namespace gbe { |
102 |
if (!retVal) |
103 |
return false; |
104 |
|
105 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR <= 5 |
106 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR <= 35 |
107 |
llvm::Module *module = Act->takeModule(); |
108 |
#else |
109 |
llvm::Module *module = Act->takeModule().release(); |
110 |
@@ -764,7 +764,7 @@ namespace gbe { |
111 |
*out_module = module; |
112 |
|
113 |
// Dump the LLVM if requested. |
114 |
-#if (LLVM_VERSION_MAJOR == 3) && (LLVM_VERSION_MINOR < 6) |
115 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR < 36 |
116 |
if (!dumpLLVMFileName.empty()) { |
117 |
std::string err; |
118 |
llvm::raw_fd_ostream ostream (dumpLLVMFileName.c_str(), |
119 |
@@ -1123,7 +1123,7 @@ EXTEND_QUOTE: |
120 |
//FIXME: if use new allocated context to link two modules there would be context mismatch |
121 |
//for some functions, so we use global context now, need switch to new context later. |
122 |
llvm::Module * out_module; |
123 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 9 |
124 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 39 |
125 |
llvm::LLVMContext* llvm_ctx = &GBEGetLLVMContext(); |
126 |
#else |
127 |
llvm::LLVMContext* llvm_ctx = &llvm::getGlobalContext(); |
128 |
@@ -1599,7 +1599,7 @@ namespace gbe |
129 |
} |
130 |
|
131 |
~CallBackInitializer() { |
132 |
-#if (LLVM_VERSION_MAJOR == 3) && (LLVM_VERSION_MINOR > 3) |
133 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 34 |
134 |
llvm::llvm_shutdown(); |
135 |
#endif |
136 |
} |
137 |
diff --git a/backend/src/ir/function.hpp b/backend/src/ir/function.hpp |
138 |
index 5fcb14a..64d9727 100644 |
139 |
--- a/backend/src/ir/function.hpp |
140 |
+++ b/backend/src/ir/function.hpp |
141 |
@@ -186,7 +186,7 @@ namespace ir { |
142 |
|
143 |
|
144 |
// only llvm-3.6 or later has kernel_arg_base_type in metadata. |
145 |
-#if (LLVM_VERSION_MAJOR == 3) && (LLVM_VERSION_MINOR <= 5) |
146 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR <= 35 |
147 |
bool isImage1dT() const { |
148 |
return typeName.compare("image1d_t") == 0; |
149 |
} |
150 |
diff --git a/backend/src/llvm/ExpandLargeIntegers.cpp b/backend/src/llvm/ExpandLargeIntegers.cpp |
151 |
index 60740f5..8515dc1 100644 |
152 |
--- a/backend/src/llvm/ExpandLargeIntegers.cpp |
153 |
+++ b/backend/src/llvm/ExpandLargeIntegers.cpp |
154 |
@@ -93,7 +93,7 @@ |
155 |
|
156 |
using namespace llvm; |
157 |
|
158 |
-#if LLVM_VERSION_MINOR >= 5 |
159 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 35 |
160 |
#define DEBUG_TYPE "nacl-expand-ints" |
161 |
#endif |
162 |
|
163 |
@@ -766,7 +766,7 @@ static void convertInstruction(Instruction *Inst, ConversionState &State, |
164 |
bool ExpandLargeIntegers::runOnFunction(Function &F) { |
165 |
// Don't support changing the function arguments. Illegal function arguments |
166 |
// should not be generated by clang. |
167 |
-#if LLVM_VERSION_MINOR >= 5 |
168 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 35 |
169 |
for (const Argument &Arg : F.args()) |
170 |
#else |
171 |
for (const Argument &Arg : F.getArgumentList()) |
172 |
@@ -789,7 +789,7 @@ bool ExpandLargeIntegers::runOnFunction(Function &F) { |
173 |
// Only attempt to convert an instruction if its result or any of its |
174 |
// operands are illegal. |
175 |
bool ShouldConvert = shouldConvert(&I); |
176 |
-#if LLVM_VERSION_MINOR >= 5 |
177 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 35 |
178 |
for (Value *Op : I.operands()) |
179 |
ShouldConvert |= shouldConvert(Op); |
180 |
#else |
181 |
diff --git a/backend/src/llvm/llvm_bitcode_link.cpp b/backend/src/llvm/llvm_bitcode_link.cpp |
182 |
index 89d5e7c..869db89 100644 |
183 |
--- a/backend/src/llvm/llvm_bitcode_link.cpp |
184 |
+++ b/backend/src/llvm/llvm_bitcode_link.cpp |
185 |
@@ -60,7 +60,7 @@ namespace gbe |
186 |
return NULL; |
187 |
} |
188 |
|
189 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR <= 5 |
190 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR <= 35 |
191 |
oclLib = getLazyIRFileModule(FilePath, Err, ctx); |
192 |
#else |
193 |
oclLib = getLazyIRFileModule(FilePath, Err, ctx).release(); |
194 |
@@ -117,7 +117,7 @@ namespace gbe |
195 |
|
196 |
std::string ErrInfo;// = "Not Materializable"; |
197 |
if (!fromSrc && newMF->isMaterializable()) { |
198 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR <= 5 |
199 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR <= 35 |
200 |
if (newMF->Materialize(&ErrInfo)) { |
201 |
printf("Can not materialize the function: %s, because %s\n", fnName.c_str(), ErrInfo.c_str()); |
202 |
return false; |
203 |
@@ -250,7 +250,7 @@ namespace gbe |
204 |
} |
205 |
std::string ErrInfo;// = "Not Materializable"; |
206 |
if (newMF->isMaterializable()) { |
207 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR <= 5 |
208 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR <= 35 |
209 |
if (newMF->Materialize(&ErrInfo)) { |
210 |
printf("Can not materialize the function: %s, because %s\n", fnName.c_str(), ErrInfo.c_str()); |
211 |
delete clonedLib; |
212 |
@@ -287,7 +287,7 @@ namespace gbe |
213 |
* pass to extract the functions and values in Gvs from the library module. |
214 |
* After extract what we need and remove what we do not need, we use |
215 |
* materializeAll to mark the module as materialized. */ |
216 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >=8 |
217 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 38 |
218 |
/* Get all GlobalValue from module. */ |
219 |
Module::GlobalListType &GVlist = clonedLib->getGlobalList(); |
220 |
for(Module::global_iterator GVitr = GVlist.begin();GVitr != GVlist.end();++GVitr) { |
221 |
@@ -310,7 +310,7 @@ namespace gbe |
222 |
/* We use beignet's bitcode as dst because it will have a lot of |
223 |
lazy functions which will not be loaded. */ |
224 |
char* errorMsg; |
225 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 9 |
226 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 39 |
227 |
if(LLVMLinkModules2(wrap(clonedLib), wrap(mod))) { |
228 |
#else |
229 |
if(LLVMLinkModules(wrap(clonedLib), wrap(mod), LLVMLinkerDestroySource, &errorMsg)) { |
230 |
@@ -319,13 +319,13 @@ namespace gbe |
231 |
printf("Fatal Error: link the bitcode error:\n%s\n", errorMsg); |
232 |
return NULL; |
233 |
} |
234 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >=7 |
235 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 37 |
236 |
llvm::legacy::PassManager passes; |
237 |
#else |
238 |
llvm::PassManager passes; |
239 |
#endif |
240 |
|
241 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >=9 |
242 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 39 |
243 |
auto PreserveKernel = [=](const GlobalValue &GV) { |
244 |
for(size_t i = 0;i < kernels.size(); ++i) |
245 |
if(strcmp(GV.getName().data(), kernels[i])) |
246 |
diff --git a/backend/src/llvm/llvm_device_enqueue.cpp b/backend/src/llvm/llvm_device_enqueue.cpp |
247 |
index ee236de..9a0fb46 100644 |
248 |
--- a/backend/src/llvm/llvm_device_enqueue.cpp |
249 |
+++ b/backend/src/llvm/llvm_device_enqueue.cpp |
250 |
@@ -62,7 +62,7 @@ namespace gbe { |
251 |
for (Value::use_iterator iter = v->use_begin(); iter != v->use_end(); ++iter) { |
252 |
// After LLVM 3.5, use_iterator points to 'Use' instead of 'User', |
253 |
// which is more straightforward. |
254 |
-#if (LLVM_VERSION_MAJOR == 3) && (LLVM_VERSION_MINOR < 5) |
255 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR < 35 |
256 |
User *theUser = *iter; |
257 |
#else |
258 |
User *theUser = iter->getUser(); |
259 |
@@ -84,7 +84,7 @@ namespace gbe { |
260 |
|
261 |
Function* setFunctionAsKernel(Module *mod, Function *Fn) |
262 |
{ |
263 |
-#if (LLVM_VERSION_MAJOR == 3) && (LLVM_VERSION_MINOR >= 9) |
264 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 39 |
265 |
LLVMContext &Context = mod->getContext(); |
266 |
Type *intTy = IntegerType::get(mod->getContext(), 32); |
267 |
SmallVector<llvm::Metadata *, 5> kernelMDArgs; |
268 |
@@ -210,7 +210,7 @@ namespace gbe { |
269 |
} |
270 |
|
271 |
for (Value::use_iterator iter = bt->use_begin(); iter != bt->use_end(); ++iter) { |
272 |
-#if (LLVM_VERSION_MAJOR == 3) && (LLVM_VERSION_MINOR < 5) |
273 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR < 35 |
274 |
User *theUser = *iter; |
275 |
#else |
276 |
User *theUser = iter->getUser(); |
277 |
@@ -298,7 +298,7 @@ namespace gbe { |
278 |
if(AllocaInst *ai = dyn_cast<AllocaInst>(ld->getPointerOperand())) { |
279 |
Value *v = NULL; |
280 |
for (Value::use_iterator iter = ai->use_begin(); iter != ai->use_end(); ++iter) { |
281 |
-#if (LLVM_VERSION_MAJOR == 3) && (LLVM_VERSION_MINOR < 5) |
282 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR < 35 |
283 |
User *theUser = *iter; |
284 |
#else |
285 |
User *theUser = iter->getUser(); |
286 |
@@ -347,7 +347,7 @@ namespace gbe { |
287 |
if(ld) { |
288 |
Value *block = ld->getPointerOperand(); |
289 |
for (Value::use_iterator iter = block->use_begin(); iter != block->use_end(); ++iter) { |
290 |
-#if (LLVM_VERSION_MAJOR == 3) && (LLVM_VERSION_MINOR < 5) |
291 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR < 35 |
292 |
User *theUser = *iter; |
293 |
#else |
294 |
User *theUser = iter->getUser(); |
295 |
diff --git a/backend/src/llvm/llvm_gen_backend.cpp b/backend/src/llvm/llvm_gen_backend.cpp |
296 |
index 742c947..4621f6d 100644 |
297 |
--- a/backend/src/llvm/llvm_gen_backend.cpp |
298 |
+++ b/backend/src/llvm/llvm_gen_backend.cpp |
299 |
@@ -95,9 +95,9 @@ |
300 |
#define LLVM_VERSION_MINOR 0 |
301 |
#endif /* !defined(LLVM_VERSION_MINOR) */ |
302 |
|
303 |
-#if (LLVM_VERSION_MAJOR != 3) || (LLVM_VERSION_MINOR < 3) |
304 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR < 33 |
305 |
#error "Only LLVM 3.3 and newer are supported" |
306 |
-#endif /* (LLVM_VERSION_MAJOR != 3) || (LLVM_VERSION_MINOR > 4) */ |
307 |
+#endif |
308 |
|
309 |
using namespace llvm; |
310 |
|
311 |
@@ -565,7 +565,7 @@ namespace gbe |
312 |
has_errors(false), |
313 |
legacyMode(true) |
314 |
{ |
315 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >=7 |
316 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 37 |
317 |
initializeLoopInfoWrapperPassPass(*PassRegistry::getPassRegistry()); |
318 |
#else |
319 |
initializeLoopInfoPass(*PassRegistry::getPassRegistry()); |
320 |
@@ -576,7 +576,7 @@ namespace gbe |
321 |
virtual const char *getPassName() const { return "Gen Back-End"; } |
322 |
|
323 |
void getAnalysisUsage(AnalysisUsage &AU) const { |
324 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >=7 |
325 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 37 |
326 |
AU.addRequired<LoopInfoWrapperPass>(); |
327 |
#else |
328 |
AU.addRequired<LoopInfo>(); |
329 |
@@ -611,7 +611,7 @@ namespace gbe |
330 |
if (legacyMode) |
331 |
analyzePointerOrigin(F); |
332 |
|
333 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >=7 |
334 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 37 |
335 |
LI = &getAnalysis<LoopInfoWrapperPass>().getLoopInfo(); |
336 |
#else |
337 |
LI = &getAnalysis<LoopInfo>(); |
338 |
@@ -835,7 +835,7 @@ namespace gbe |
339 |
for (Value::use_iterator iter = work->use_begin(); iter != work->use_end(); ++iter) { |
340 |
// After LLVM 3.5, use_iterator points to 'Use' instead of 'User', |
341 |
// which is more straightforward. |
342 |
- #if (LLVM_VERSION_MAJOR == 3) && (LLVM_VERSION_MINOR < 5) |
343 |
+ #if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR < 35 |
344 |
User *theUser = *iter; |
345 |
#else |
346 |
User *theUser = iter->getUser(); |
347 |
@@ -1089,7 +1089,7 @@ namespace gbe |
348 |
if (predBB->getTerminator()) |
349 |
Builder2.SetInsertPoint(predBB->getTerminator()); |
350 |
|
351 |
-#if (LLVM_VERSION_MAJOR== 3 && LLVM_VERSION_MINOR < 6) |
352 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR < 36 |
353 |
// llvm 3.5 and older version don't have CreateBitOrPointerCast() define |
354 |
Type *srcTy = base->getType(); |
355 |
Type *dstTy = ptr->getType(); |
356 |
@@ -1248,7 +1248,7 @@ namespace gbe |
357 |
uint32_t ops = clKernels->getNumOperands(); |
358 |
for(uint32_t x = 0; x < ops; x++) { |
359 |
MDNode* node = clKernels->getOperand(x); |
360 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR <= 5 |
361 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR <= 35 |
362 |
Value * op = node->getOperand(0); |
363 |
#else |
364 |
auto *V = cast<ValueAsMetadata>(node->getOperand(0)); |
365 |
@@ -1272,7 +1272,7 @@ namespace gbe |
366 |
MDNode *typeNameNode = NULL; |
367 |
MDNode *typeBaseNameNode = NULL; |
368 |
MDNode *typeQualNode = NULL; |
369 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 9 |
370 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 39 |
371 |
typeNameNode = F.getMetadata("kernel_arg_type"); |
372 |
typeBaseNameNode = F.getMetadata("kernel_arg_base_type"); |
373 |
typeQualNode = F.getMetadata("kernel_arg_type_qual"); |
374 |
@@ -1298,7 +1298,7 @@ namespace gbe |
375 |
ir::FunctionArgument::InfoFromLLVM llvmInfo; |
376 |
for (Function::arg_iterator I = F.arg_begin(), E = F.arg_end(); I != E; ++I, argID++) { |
377 |
unsigned opID = argID; |
378 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR < 9 |
379 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR < 39 |
380 |
opID += 1; |
381 |
#endif |
382 |
|
383 |
@@ -1340,7 +1340,7 @@ namespace gbe |
384 |
for (Value::use_iterator iter = work->use_begin(); iter != work->use_end(); ++iter) { |
385 |
// After LLVM 3.5, use_iterator points to 'Use' instead of 'User', |
386 |
// which is more straightforward. |
387 |
- #if (LLVM_VERSION_MAJOR == 3) && (LLVM_VERSION_MINOR < 5) |
388 |
+ #if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR < 35 |
389 |
User *theUser = *iter; |
390 |
#else |
391 |
User *theUser = iter->getUser(); |
392 |
@@ -2120,7 +2120,7 @@ namespace gbe |
393 |
|
394 |
std::string functionAttributes; |
395 |
|
396 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 9 |
397 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 39 |
398 |
/* LLVM 3.9 change kernel arg info as function metadata */ |
399 |
addrSpaceNode = F.getMetadata("kernel_arg_addr_space"); |
400 |
accessQualNode = F.getMetadata("kernel_arg_access_qual"); |
401 |
@@ -2222,7 +2222,7 @@ namespace gbe |
402 |
|
403 |
if (attrName->getString() == "reqd_work_group_size") { |
404 |
GBE_ASSERT(attrNode->getNumOperands() == 4); |
405 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR <= 5 |
406 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR <= 35 |
407 |
ConstantInt *x = dyn_cast<ConstantInt>(attrNode->getOperand(1)); |
408 |
ConstantInt *y = dyn_cast<ConstantInt>(attrNode->getOperand(2)); |
409 |
ConstantInt *z = dyn_cast<ConstantInt>(attrNode->getOperand(3)); |
410 |
@@ -2264,13 +2264,13 @@ namespace gbe |
411 |
} else if (attrName->getString() == "vec_type_hint") { |
412 |
GBE_ASSERT(attrNode->getNumOperands() == 3); |
413 |
functionAttributes += attrName->getString(); |
414 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR <= 5 |
415 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR <= 35 |
416 |
Value* V = attrNode->getOperand(1); |
417 |
#else |
418 |
auto *Op1 = cast<ValueAsMetadata>(attrNode->getOperand(1)); |
419 |
Value *V = Op1 ? Op1->getValue() : NULL; |
420 |
#endif |
421 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR <= 5 |
422 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR <= 35 |
423 |
ConstantInt *sign = dyn_cast<ConstantInt>(attrNode->getOperand(2)); |
424 |
#else |
425 |
ConstantInt *sign = mdconst::extract<ConstantInt>(attrNode->getOperand(2)); |
426 |
@@ -2299,7 +2299,7 @@ namespace gbe |
427 |
functionAttributes += " "; |
428 |
} else if (attrName->getString() == "work_group_size_hint") { |
429 |
GBE_ASSERT(attrNode->getNumOperands() == 4); |
430 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR <= 5 |
431 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR <= 35 |
432 |
ConstantInt *x = dyn_cast<ConstantInt>(attrNode->getOperand(1)); |
433 |
ConstantInt *y = dyn_cast<ConstantInt>(attrNode->getOperand(2)); |
434 |
ConstantInt *z = dyn_cast<ConstantInt>(attrNode->getOperand(3)); |
435 |
@@ -2341,13 +2341,13 @@ namespace gbe |
436 |
// Insert a new register for each function argument |
437 |
for (; I != E; ++I, ++argID) { |
438 |
uint32_t opID = argID; |
439 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR < 9 |
440 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR < 39 |
441 |
opID += 1; |
442 |
#endif |
443 |
const std::string &argName = I->getName().str(); |
444 |
Type *type = I->getType(); |
445 |
if(addrSpaceNode) { |
446 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR <= 5 |
447 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR <= 35 |
448 |
llvmInfo.addrSpace = (cast<ConstantInt>(addrSpaceNode->getOperand(opID)))->getZExtValue(); |
449 |
#else |
450 |
llvmInfo.addrSpace = (mdconst::extract<ConstantInt>(addrSpaceNode->getOperand(opID)))->getZExtValue(); |
451 |
@@ -2914,7 +2914,7 @@ namespace gbe |
452 |
const Instruction *insn = NULL; |
453 |
for(Value::const_use_iterator iter = v->use_begin(); iter != v->use_end(); ++iter) { |
454 |
// After LLVM 3.5, use_iterator points to 'Use' instead of 'User', which is more straightforward. |
455 |
-#if (LLVM_VERSION_MAJOR == 3) && (LLVM_VERSION_MINOR < 5) |
456 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR < 35 |
457 |
const User *theUser = *iter; |
458 |
#else |
459 |
const User *theUser = iter->getUser(); |
460 |
diff --git a/backend/src/llvm/llvm_gen_backend.hpp b/backend/src/llvm/llvm_gen_backend.hpp |
461 |
index f1c791e..2a322ac 100644 |
462 |
--- a/backend/src/llvm/llvm_gen_backend.hpp |
463 |
+++ b/backend/src/llvm/llvm_gen_backend.hpp |
464 |
@@ -149,7 +149,7 @@ namespace gbe |
465 |
/*! Insert the time stamp for profiling. */ |
466 |
llvm::FunctionPass* createProfilingInserterPass(int profilingType, ir::Unit &unit); |
467 |
|
468 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 5 |
469 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 35 |
470 |
/* customized loop unrolling pass. */ |
471 |
llvm::LoopPass *createCustomLoopUnrollPass(); |
472 |
#endif |
473 |
diff --git a/backend/src/llvm/llvm_includes.hpp b/backend/src/llvm/llvm_includes.hpp |
474 |
index 0b80979..a242fd3 100644 |
475 |
--- a/backend/src/llvm/llvm_includes.hpp |
476 |
+++ b/backend/src/llvm/llvm_includes.hpp |
477 |
@@ -91,7 +91,7 @@ |
478 |
#include "llvm/MC/MCSubtargetInfo.h" |
479 |
#include "llvm/MC/MCSymbol.h" |
480 |
|
481 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >=5 |
482 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 35 |
483 |
#include "llvm/IR/Mangler.h" |
484 |
#include "llvm/IR/CallSite.h" |
485 |
#include "llvm/IR/CFG.h" |
486 |
@@ -111,7 +111,7 @@ |
487 |
#include "llvm/Target/Mangler.h" |
488 |
#endif |
489 |
|
490 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >=7 |
491 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 37 |
492 |
#include "llvm/Analysis/TargetLibraryInfo.h" |
493 |
#include "llvm/IR/LegacyPassManager.h" |
494 |
#else |
495 |
@@ -122,12 +122,12 @@ |
496 |
|
497 |
#include <clang/CodeGen/CodeGenAction.h> |
498 |
|
499 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >=8 |
500 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 38 |
501 |
#include "llvm/Analysis/BasicAliasAnalysis.h" |
502 |
#include "llvm/Analysis/TypeBasedAliasAnalysis.h" |
503 |
#endif |
504 |
|
505 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 9 |
506 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 39 |
507 |
#include "llvm/Transforms/IPO/FunctionAttrs.h" |
508 |
#include "llvm/Transforms/Scalar/GVN.h" |
509 |
#endif |
510 |
diff --git a/backend/src/llvm/llvm_loadstore_optimization.cpp b/backend/src/llvm/llvm_loadstore_optimization.cpp |
511 |
index e797e98..4f4639c 100644 |
512 |
--- a/backend/src/llvm/llvm_loadstore_optimization.cpp |
513 |
+++ b/backend/src/llvm/llvm_loadstore_optimization.cpp |
514 |
@@ -35,7 +35,7 @@ namespace gbe { |
515 |
GenLoadStoreOptimization() : BasicBlockPass(ID) {} |
516 |
|
517 |
void getAnalysisUsage(AnalysisUsage &AU) const { |
518 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 8 |
519 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 38 |
520 |
AU.addRequired<ScalarEvolutionWrapperPass>(); |
521 |
AU.addPreserved<ScalarEvolutionWrapperPass>(); |
522 |
#else |
523 |
@@ -46,12 +46,12 @@ namespace gbe { |
524 |
} |
525 |
|
526 |
virtual bool runOnBasicBlock(BasicBlock &BB) { |
527 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 8 |
528 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 38 |
529 |
SE = &getAnalysis<ScalarEvolutionWrapperPass>().getSE(); |
530 |
#else |
531 |
SE = &getAnalysis<ScalarEvolution>(); |
532 |
#endif |
533 |
- #if LLVM_VERSION_MINOR >= 7 |
534 |
+ #if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 37 |
535 |
TD = &BB.getModule()->getDataLayout(); |
536 |
#elif LLVM_VERSION_MINOR >= 5 |
537 |
DataLayoutPass *DLP = getAnalysisIfAvailable<DataLayoutPass>(); |
538 |
diff --git a/backend/src/llvm/llvm_passes.cpp b/backend/src/llvm/llvm_passes.cpp |
539 |
index 8f5bcc9..f414fbb 100644 |
540 |
--- a/backend/src/llvm/llvm_passes.cpp |
541 |
+++ b/backend/src/llvm/llvm_passes.cpp |
542 |
@@ -42,7 +42,7 @@ namespace gbe |
543 |
{ |
544 |
bool isKernelFunction(const llvm::Function &F) { |
545 |
bool bKernel = false; |
546 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 9 |
547 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 39 |
548 |
bKernel = F.getMetadata("kernel_arg_name") != NULL; |
549 |
#else |
550 |
const Module *module = F.getParent(); |
551 |
@@ -53,7 +53,7 @@ namespace gbe |
552 |
uint32_t ops = md.getNumOperands(); |
553 |
for(uint32_t x = 0; x < ops; x++) { |
554 |
MDNode* node = md.getOperand(x); |
555 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR <= 5 |
556 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR <= 35 |
557 |
Value * op = node->getOperand(0); |
558 |
#else |
559 |
Value * op = cast<ValueAsMetadata>(node->getOperand(0))->getValue(); |
560 |
@@ -74,7 +74,7 @@ namespace gbe |
561 |
if(ops > 0) { |
562 |
uint32_t major = 0, minor = 0; |
563 |
MDNode* node = version->getOperand(0); |
564 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 6 |
565 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 36 |
566 |
major = mdconst::extract<ConstantInt>(node->getOperand(0))->getZExtValue(); |
567 |
minor = mdconst::extract<ConstantInt>(node->getOperand(1))->getZExtValue(); |
568 |
#else |
569 |
diff --git a/backend/src/llvm/llvm_profiling.cpp b/backend/src/llvm/llvm_profiling.cpp |
570 |
index 734c69d..bc16951 100644 |
571 |
--- a/backend/src/llvm/llvm_profiling.cpp |
572 |
+++ b/backend/src/llvm/llvm_profiling.cpp |
573 |
@@ -34,7 +34,7 @@ |
574 |
#include "llvm/Pass.h" |
575 |
#include "llvm/IR/IRBuilder.h" |
576 |
|
577 |
-#if LLVM_VERSION_MINOR >= 5 |
578 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 35 |
579 |
#include "llvm/IR/CallSite.h" |
580 |
#include "llvm/IR/CFG.h" |
581 |
#else |
582 |
diff --git a/backend/src/llvm/llvm_sampler_fix.cpp b/backend/src/llvm/llvm_sampler_fix.cpp |
583 |
index de7ebdb..2e8bcf9 100644 |
584 |
--- a/backend/src/llvm/llvm_sampler_fix.cpp |
585 |
+++ b/backend/src/llvm/llvm_sampler_fix.cpp |
586 |
@@ -33,7 +33,7 @@ namespace gbe { |
587 |
class SamplerFix : public FunctionPass { |
588 |
public: |
589 |
SamplerFix() : FunctionPass(ID) { |
590 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 5 |
591 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 35 |
592 |
initializeDominatorTreeWrapperPassPass(*PassRegistry::getPassRegistry()); |
593 |
#else |
594 |
initializeDominatorTreePass(*PassRegistry::getPassRegistry()); |
595 |
diff --git a/backend/src/llvm/llvm_scalarize.cpp b/backend/src/llvm/llvm_scalarize.cpp |
596 |
index 329e3a9..be3d549 100644 |
597 |
--- a/backend/src/llvm/llvm_scalarize.cpp |
598 |
+++ b/backend/src/llvm/llvm_scalarize.cpp |
599 |
@@ -96,7 +96,7 @@ namespace gbe { |
600 |
|
601 |
Scalarize() : FunctionPass(ID) |
602 |
{ |
603 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 5 |
604 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 35 |
605 |
initializeDominatorTreeWrapperPassPass(*PassRegistry::getPassRegistry()); |
606 |
#else |
607 |
initializeDominatorTreePass(*PassRegistry::getPassRegistry()); |
608 |
diff --git a/backend/src/llvm/llvm_to_gen.cpp b/backend/src/llvm/llvm_to_gen.cpp |
609 |
index bef4df1..9b3b1f4 100644 |
610 |
--- a/backend/src/llvm/llvm_to_gen.cpp |
611 |
+++ b/backend/src/llvm/llvm_to_gen.cpp |
612 |
@@ -46,14 +46,14 @@ namespace gbe |
613 |
BVAR(OCL_OUTPUT_CFG_GEN_IR, false); |
614 |
using namespace llvm; |
615 |
|
616 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 9 |
617 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 39 |
618 |
llvm::LLVMContext& GBEGetLLVMContext() { |
619 |
static llvm::LLVMContext GBEContext; |
620 |
return GBEContext; |
621 |
} |
622 |
#endif |
623 |
|
624 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 |
625 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 37 |
626 |
#define TARGETLIBRARY TargetLibraryInfoImpl |
627 |
#else |
628 |
#define TARGETLIBRARY TargetLibraryInfo |
629 |
@@ -61,32 +61,32 @@ namespace gbe |
630 |
|
631 |
void runFuntionPass(Module &mod, TARGETLIBRARY *libraryInfo, const DataLayout &DL) |
632 |
{ |
633 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 |
634 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 37 |
635 |
legacy::FunctionPassManager FPM(&mod); |
636 |
#else |
637 |
FunctionPassManager FPM(&mod); |
638 |
#endif |
639 |
|
640 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 |
641 |
-#elif LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 6 |
642 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 37 |
643 |
+#elif LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 36 |
644 |
FPM.add(new DataLayoutPass()); |
645 |
-#elif LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR == 5 |
646 |
+#elif LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR == 35 |
647 |
FPM.add(new DataLayoutPass(DL)); |
648 |
#else |
649 |
FPM.add(new DataLayout(DL)); |
650 |
#endif |
651 |
|
652 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >=5 |
653 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 35 |
654 |
FPM.add(createVerifierPass(true)); |
655 |
#else |
656 |
FPM.add(createVerifierPass()); |
657 |
#endif |
658 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 |
659 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 37 |
660 |
FPM.add(new TargetLibraryInfoWrapperPass(*libraryInfo)); |
661 |
#else |
662 |
FPM.add(new TargetLibraryInfo(*libraryInfo)); |
663 |
#endif |
664 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 8 |
665 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 38 |
666 |
FPM.add(createTypeBasedAAWrapperPass()); |
667 |
FPM.add(createBasicAAWrapperPass()); |
668 |
#else |
669 |
@@ -108,27 +108,27 @@ namespace gbe |
670 |
|
671 |
void runModulePass(Module &mod, TARGETLIBRARY *libraryInfo, const DataLayout &DL, int optLevel, bool strictMath) |
672 |
{ |
673 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 |
674 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 37 |
675 |
legacy::PassManager MPM; |
676 |
#else |
677 |
PassManager MPM; |
678 |
#endif |
679 |
|
680 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 |
681 |
-#elif LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 6 |
682 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 37 |
683 |
+#elif LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 36 |
684 |
MPM.add(new DataLayoutPass()); |
685 |
-#elif LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR == 5 |
686 |
+#elif LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR == 35 |
687 |
MPM.add(new DataLayoutPass(DL)); |
688 |
#else |
689 |
MPM.add(new DataLayout(DL)); |
690 |
#endif |
691 |
|
692 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 |
693 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 37 |
694 |
MPM.add(new TargetLibraryInfoWrapperPass(*libraryInfo)); |
695 |
#else |
696 |
MPM.add(new TargetLibraryInfo(*libraryInfo)); |
697 |
#endif |
698 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 8 |
699 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 38 |
700 |
MPM.add(createTypeBasedAAWrapperPass()); |
701 |
MPM.add(createBasicAAWrapperPass()); |
702 |
#else |
703 |
@@ -149,9 +149,9 @@ namespace gbe |
704 |
MPM.add(createInstructionCombiningPass());// Clean up after IPCP & DAE |
705 |
MPM.add(createCFGSimplificationPass()); // Clean up after IPCP & DAE |
706 |
MPM.add(createPruneEHPass()); // Remove dead EH info |
707 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 9 |
708 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 39 |
709 |
MPM.add(createPostOrderFunctionAttrsLegacyPass()); |
710 |
-#elif LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 8 |
711 |
+#elif LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 38 |
712 |
MPM.add(createPostOrderFunctionAttrsPass()); // Set readonly/readnone attrs |
713 |
#else |
714 |
MPM.add(createFunctionAttrsPass()); // Set readonly/readnone attrs |
715 |
@@ -159,7 +159,7 @@ namespace gbe |
716 |
|
717 |
//MPM.add(createScalarReplAggregatesPass(64, true, -1, -1, 64)) |
718 |
if(optLevel > 0) |
719 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 8 |
720 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 38 |
721 |
MPM.add(createSROAPass()); |
722 |
#else |
723 |
MPM.add(createSROAPass(/*RequiresDomTree*/ false)); |
724 |
@@ -182,14 +182,14 @@ namespace gbe |
725 |
MPM.add(createLoopDeletionPass()); // Delete dead loops |
726 |
MPM.add(createLoopUnrollPass(640)); //1024, 32, 1024, 512)); //Unroll loops |
727 |
if(optLevel > 0) { |
728 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 8 |
729 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 38 |
730 |
MPM.add(createSROAPass()); |
731 |
#else |
732 |
MPM.add(createSROAPass(/*RequiresDomTree*/ false)); |
733 |
#endif |
734 |
MPM.add(createGVNPass()); // Remove redundancies |
735 |
} |
736 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 5 |
737 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 35 |
738 |
// FIXME Workaround: we find that CustomLoopUnroll may increase register pressure greatly, |
739 |
// and it may even make som cl kernel cannot compile because of limited scratch memory for spill. |
740 |
// As we observe this under strict math. So we disable CustomLoopUnroll if strict math is enabled. |
741 |
@@ -199,7 +199,7 @@ namespace gbe |
742 |
#endif |
743 |
MPM.add(createLoopUnrollPass()); //1024, 32, 1024, 512)); //Unroll loops |
744 |
if(optLevel > 0) { |
745 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 8 |
746 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 38 |
747 |
MPM.add(createSROAPass()); |
748 |
#else |
749 |
MPM.add(createSROAPass(/*RequiresDomTree*/ false)); |
750 |
@@ -230,7 +230,7 @@ namespace gbe |
751 |
} |
752 |
|
753 |
|
754 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 |
755 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 37 |
756 |
#define OUTPUT_BITCODE(STAGE, MOD) do { \ |
757 |
legacy::PassManager passes__; \ |
758 |
if (OCL_OUTPUT_LLVM_##STAGE) { \ |
759 |
@@ -238,7 +238,7 @@ namespace gbe |
760 |
passes__.run(MOD); \ |
761 |
} \ |
762 |
}while(0) |
763 |
-#elif LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 5 |
764 |
+#elif LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 35 |
765 |
#define OUTPUT_BITCODE(STAGE, MOD) do { \ |
766 |
PassManager passes__; \ |
767 |
if (OCL_OUTPUT_LLVM_##STAGE) { \ |
768 |
@@ -303,12 +303,12 @@ namespace gbe |
769 |
if (module) { |
770 |
cl_mod = reinterpret_cast<Module*>(const_cast<void*>(module)); |
771 |
} else if (fileName){ |
772 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 9 |
773 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 39 |
774 |
llvm::LLVMContext& c = GBEGetLLVMContext(); |
775 |
#else |
776 |
llvm::LLVMContext& c = llvm::getGlobalContext(); |
777 |
#endif |
778 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 6 |
779 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 36 |
780 |
cl_mod = parseIRFile(fileName, Err, c).release(); |
781 |
#else |
782 |
cl_mod = ParseIRFile(fileName, Err, c); |
783 |
@@ -318,7 +318,7 @@ namespace gbe |
784 |
if (!cl_mod) return false; |
785 |
|
786 |
OUTPUT_BITCODE(BEFORE_LINK, (*cl_mod)); |
787 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 |
788 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 37 |
789 |
legacy::PassManager passes__; |
790 |
#else |
791 |
PassManager passes__; |
792 |
@@ -346,7 +346,7 @@ namespace gbe |
793 |
gbeDiagnosticContext dc; |
794 |
mod.getContext().setDiagnosticHandler(&gbeDiagnosticHandler,&dc); |
795 |
|
796 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 |
797 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 37 |
798 |
mod.setDataLayout(DL); |
799 |
#endif |
800 |
Triple TargetTriple(mod.getTargetTriple()); |
801 |
@@ -357,15 +357,15 @@ namespace gbe |
802 |
|
803 |
runFuntionPass(mod, libraryInfo, DL); |
804 |
runModulePass(mod, libraryInfo, DL, optLevel, strictMath); |
805 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 |
806 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 37 |
807 |
legacy::PassManager passes; |
808 |
#else |
809 |
PassManager passes; |
810 |
#endif |
811 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 |
812 |
-#elif LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 6 |
813 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 37 |
814 |
+#elif LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 36 |
815 |
passes.add(new DataLayoutPass()); |
816 |
-#elif LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR == 5 |
817 |
+#elif LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR == 35 |
818 |
passes.add(new DataLayoutPass(DL)); |
819 |
#else |
820 |
passes.add(new DataLayout(DL)); |
821 |
@@ -374,7 +374,7 @@ namespace gbe |
822 |
passes.add(createIntrinsicLoweringPass()); |
823 |
passes.add(createStripAttributesPass()); // Strip unsupported attributes and calling conventions. |
824 |
passes.add(createFunctionInliningPass(20000)); |
825 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7 |
826 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 37 |
827 |
passes.add(createSROAPass()); |
828 |
#else |
829 |
passes.add(createScalarReplAggregatesPass(64, true, -1, -1, 64)); |
830 |
diff --git a/backend/src/llvm/llvm_to_gen.hpp b/backend/src/llvm/llvm_to_gen.hpp |
831 |
index d3928c6..9025852 100644 |
832 |
--- a/backend/src/llvm/llvm_to_gen.hpp |
833 |
+++ b/backend/src/llvm/llvm_to_gen.hpp |
834 |
@@ -23,7 +23,7 @@ |
835 |
*/ |
836 |
#ifndef __GBE_IR_LLVM_TO_GEN_HPP__ |
837 |
#define __GBE_IR_LLVM_TO_GEN_HPP__ |
838 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 9 |
839 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 39 |
840 |
#include "llvm/IR/LLVMContext.h" |
841 |
#endif |
842 |
|
843 |
@@ -37,7 +37,7 @@ namespace gbe { |
844 |
optLevel 0 equal to clang -O1 and 1 equal to clang -O2*/ |
845 |
bool llvmToGen(ir::Unit &unit, const char *fileName, const void* module, |
846 |
int optLevel, bool strictMath, int profiling, std::string &errors); |
847 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 9 |
848 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 39 |
849 |
extern llvm::LLVMContext& GBEGetLLVMContext(); |
850 |
#endif |
851 |
|
852 |
diff --git a/backend/src/llvm/llvm_unroll.cpp b/backend/src/llvm/llvm_unroll.cpp |
853 |
index e24dc4f..bfd3bbe 100644 |
854 |
--- a/backend/src/llvm/llvm_unroll.cpp |
855 |
+++ b/backend/src/llvm/llvm_unroll.cpp |
856 |
@@ -16,7 +16,7 @@ |
857 |
*/ |
858 |
|
859 |
#include "llvm/Config/llvm-config.h" |
860 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 5 |
861 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 35 |
862 |
#include <set> |
863 |
|
864 |
#include "llvm_includes.hpp" |
865 |
@@ -36,7 +36,7 @@ namespace gbe { |
866 |
LoopPass(ID) {} |
867 |
|
868 |
void getAnalysisUsage(AnalysisUsage &AU) const { |
869 |
-#if (LLVM_VERSION_MAJOR == 3) && (LLVM_VERSION_MINOR >= 7) |
870 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 37 |
871 |
AU.addRequired<LoopInfoWrapperPass>(); |
872 |
AU.addPreserved<LoopInfoWrapperPass>(); |
873 |
#else |
874 |
@@ -47,7 +47,7 @@ namespace gbe { |
875 |
AU.addPreservedID(LoopSimplifyID); |
876 |
AU.addRequiredID(LCSSAID); |
877 |
AU.addPreservedID(LCSSAID); |
878 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 8 |
879 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 38 |
880 |
AU.addRequired<ScalarEvolutionWrapperPass>(); |
881 |
AU.addPreserved<ScalarEvolutionWrapperPass>(); |
882 |
#else |
883 |
@@ -91,7 +91,7 @@ namespace gbe { |
884 |
assert(MD->getNumOperands() == 2 && |
885 |
"Unroll count hint metadata should have two operands."); |
886 |
unsigned Count; |
887 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 6 |
888 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 36 |
889 |
Count = mdconst::extract<ConstantInt>(MD->getOperand(1))->getZExtValue(); |
890 |
#else |
891 |
Count = cast<ConstantInt>(MD->getOperand(1))->getZExtValue(); |
892 |
@@ -105,7 +105,7 @@ namespace gbe { |
893 |
void setUnrollID(Loop *L, bool enable) { |
894 |
assert(enable); |
895 |
LLVMContext &Context = L->getHeader()->getContext(); |
896 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 6 |
897 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 36 |
898 |
SmallVector<Metadata *, 2> forceUnroll; |
899 |
forceUnroll.push_back(MDString::get(Context, "llvm.loop.unroll.enable")); |
900 |
MDNode *forceUnrollNode = MDNode::get(Context, forceUnroll); |
901 |
@@ -169,7 +169,7 @@ namespace gbe { |
902 |
// be unrolled. |
903 |
bool handleParentLoops(Loop *L, LPPassManager &LPM) { |
904 |
Loop *currL = L; |
905 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 8 |
906 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 38 |
907 |
ScalarEvolution *SE = &getAnalysis<ScalarEvolutionWrapperPass>().getSE(); |
908 |
LoopInfo &loopInfo = getAnalysis<LoopInfoWrapperPass>().getLoopInfo(); |
909 |
#else |
910 |
@@ -205,7 +205,7 @@ namespace gbe { |
911 |
if (parentTripCount != 0 && currTripCount * parentTripCount > 32) { |
912 |
//Don't change the unrollID if doesn't force unroll. |
913 |
//setUnrollID(parentL, false); |
914 |
-#if LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 8 |
915 |
+#if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 38 |
916 |
loopInfo.markAsRemoved(parentL); |
917 |
#else |
918 |
LPM.deleteLoopFromQueue(parentL); |
919 |
-- |
920 |
cgit v0.10.2 |
921 |
|