Skip to content
This repository was archived by the owner on Apr 28, 2023. It is now read-only.

Commit 7b80791

Browse files
authored
Merge pull request #139 from facebookresearch/vanilla
Patch for vanilla LLVM
2 parents 4ad6e88 + 18e6f37 commit 7b80791

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

src/core/polyhedral/codegen_llvm.cc

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
#include "llvm/Support/raw_ostream.h"
3131
#include "llvm/Transforms/IPO.h"
3232
#include "llvm/Transforms/IPO/PassManagerBuilder.h"
33-
#include "llvm/Transforms/Tapir/CilkABI.h"
3433

3534
#include "Halide/Halide.h"
3635

@@ -47,6 +46,10 @@
4746
#error LLVM_VERSION_MAJOR not set
4847
#endif
4948

49+
#ifdef TAPIR_VERSION_MAJOR
50+
#include "llvm/Transforms/Tapir/CilkABI.h"
51+
#endif
52+
5053
using namespace Halide;
5154

5255
namespace tc {
@@ -328,7 +331,9 @@ class CodeGen_TC : public Halide::Internal::CodeGen_X86 {
328331

329332
llvm::PassManagerBuilder b;
330333
b.OptLevel = kOptLevel;
334+
#ifdef TAPIR_VERSION_MAJOR
331335
b.tapirTarget = new llvm::CilkABI();
336+
#endif
332337
b.Inliner = llvm::createFunctionInliningPass(b.OptLevel, 0, false);
333338
b.LoopVectorize = true;
334339
b.SLPVectorize = true;
@@ -515,13 +520,16 @@ class LLVMCodegen {
515520
bool parallel = false;
516521

517522
llvm::Value* SyncRegion = nullptr;
523+
524+
#ifdef TAPIR_VERSION_MAJOR
518525
if (parallel) {
519526
SyncRegion = halide_cg.get_builder().CreateCall(
520527
llvm::Intrinsic::getDeclaration(
521528
function->getParent(), llvm::Intrinsic::syncregion_start),
522529
{},
523530
"syncreg");
524531
}
532+
#endif
525533

526534
halide_cg.get_builder().CreateBr(headerBB);
527535

@@ -571,18 +579,22 @@ class LLVMCodegen {
571579
{
572580
halide_cg.get_builder().SetInsertPoint(loopBodyBB);
573581

582+
#ifdef TAPIR_VERSION_MAJOR
574583
if (parallel) {
575584
auto* detachedBB =
576585
llvm::BasicBlock::Create(llvmCtx, "det.achd", function);
577586
halide_cg.get_builder().CreateDetach(
578587
detachedBB, loopLatchBB, SyncRegion);
579588
halide_cg.get_builder().SetInsertPoint(detachedBB);
580589
}
590+
#endif
581591
auto* currentBB = emitAst(node.for_get_body());
582592
halide_cg.get_builder().SetInsertPoint(currentBB);
583593

584594
if (parallel) {
595+
#ifdef TAPIR_VERSION_MAJOR
585596
halide_cg.get_builder().CreateReattach(loopLatchBB, SyncRegion);
597+
#endif
586598
} else {
587599
halide_cg.get_builder().CreateBr(loopLatchBB);
588600
}
@@ -601,11 +613,13 @@ class LLVMCodegen {
601613

602614
halide_cg.get_builder().SetInsertPoint(loopExitBB);
603615
halide_cg.sym_pop(node.for_get_iterator().get_id().get_name());
616+
#ifdef TAPIR_VERSION_MAJOR
604617
if (parallel) {
605618
auto* syncBB = llvm::BasicBlock::Create(llvmCtx, "synced", function);
606619
halide_cg.get_builder().CreateSync(syncBB, SyncRegion);
607620
halide_cg.get_builder().SetInsertPoint(syncBB);
608621
}
622+
#endif
609623
return halide_cg.get_builder().GetInsertBlock();
610624
}
611625

0 commit comments

Comments
 (0)