30
30
#include " llvm/Support/raw_ostream.h"
31
31
#include " llvm/Transforms/IPO.h"
32
32
#include " llvm/Transforms/IPO/PassManagerBuilder.h"
33
- #include " llvm/Transforms/Tapir/CilkABI.h"
34
33
35
34
#include " Halide/Halide.h"
36
35
47
46
#error LLVM_VERSION_MAJOR not set
48
47
#endif
49
48
49
+ #ifdef TAPIR_VERSION_MAJOR
50
+ #include " llvm/Transforms/Tapir/CilkABI.h"
51
+ #endif
52
+
50
53
using namespace Halide ;
51
54
52
55
namespace tc {
@@ -328,7 +331,9 @@ class CodeGen_TC : public Halide::Internal::CodeGen_X86 {
328
331
329
332
llvm::PassManagerBuilder b;
330
333
b.OptLevel = kOptLevel ;
334
+ #ifdef TAPIR_VERSION_MAJOR
331
335
b.tapirTarget = new llvm::CilkABI ();
336
+ #endif
332
337
b.Inliner = llvm::createFunctionInliningPass (b.OptLevel , 0 , false );
333
338
b.LoopVectorize = true ;
334
339
b.SLPVectorize = true ;
@@ -515,13 +520,16 @@ class LLVMCodegen {
515
520
bool parallel = false ;
516
521
517
522
llvm::Value* SyncRegion = nullptr ;
523
+
524
+ #ifdef TAPIR_VERSION_MAJOR
518
525
if (parallel) {
519
526
SyncRegion = halide_cg.get_builder ().CreateCall (
520
527
llvm::Intrinsic::getDeclaration (
521
528
function->getParent (), llvm::Intrinsic::syncregion_start),
522
529
{},
523
530
" syncreg" );
524
531
}
532
+ #endif
525
533
526
534
halide_cg.get_builder ().CreateBr (headerBB);
527
535
@@ -571,18 +579,22 @@ class LLVMCodegen {
571
579
{
572
580
halide_cg.get_builder ().SetInsertPoint (loopBodyBB);
573
581
582
+ #ifdef TAPIR_VERSION_MAJOR
574
583
if (parallel) {
575
584
auto * detachedBB =
576
585
llvm::BasicBlock::Create (llvmCtx, " det.achd" , function);
577
586
halide_cg.get_builder ().CreateDetach (
578
587
detachedBB, loopLatchBB, SyncRegion);
579
588
halide_cg.get_builder ().SetInsertPoint (detachedBB);
580
589
}
590
+ #endif
581
591
auto * currentBB = emitAst (node.for_get_body ());
582
592
halide_cg.get_builder ().SetInsertPoint (currentBB);
583
593
584
594
if (parallel) {
595
+ #ifdef TAPIR_VERSION_MAJOR
585
596
halide_cg.get_builder ().CreateReattach (loopLatchBB, SyncRegion);
597
+ #endif
586
598
} else {
587
599
halide_cg.get_builder ().CreateBr (loopLatchBB);
588
600
}
@@ -601,11 +613,13 @@ class LLVMCodegen {
601
613
602
614
halide_cg.get_builder ().SetInsertPoint (loopExitBB);
603
615
halide_cg.sym_pop (node.for_get_iterator ().get_id ().get_name ());
616
+ #ifdef TAPIR_VERSION_MAJOR
604
617
if (parallel) {
605
618
auto * syncBB = llvm::BasicBlock::Create (llvmCtx, " synced" , function);
606
619
halide_cg.get_builder ().CreateSync (syncBB, SyncRegion);
607
620
halide_cg.get_builder ().SetInsertPoint (syncBB);
608
621
}
622
+ #endif
609
623
return halide_cg.get_builder ().GetInsertBlock ();
610
624
}
611
625
0 commit comments