Skip to content

Commit

Permalink
Use new test infrastructure to test simdloop
Browse files Browse the repository at this point in the history
  • Loading branch information
Keno committed Apr 22, 2017
1 parent cae6ca7 commit 418afaa
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 2 deletions.
10 changes: 8 additions & 2 deletions src/llvm-simdloop.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -144,8 +144,14 @@ void LowerSIMDLoop::enableUnsafeAlgebraIfReduction(PHINode *Phi, Loop *L) const

bool LowerSIMDLoop::runOnLoop(Loop *L, LPPassManager &LPM)
{
if (!simd_loop_mdkind)
return false; // Fast rejection test.
if (!simd_loop_mdkind) {
simd_loop_mdkind = L->getHeader()->getContext().getMDKindID("simd_loop");
#if JL_LLVM_VERSION >= 30600
simd_loop_md = MDNode::get(L->getHeader()->getContext(), ArrayRef<Metadata*>());
#else
simd_loop_md = MDNode::get(L->getHeader()->getContext(), ArrayRef<Value*>());
#endif
}

if (!hasSIMDLoopMetadata(L))
return false;
Expand Down
22 changes: 22 additions & 0 deletions test/llvmpasses/simdloop.ll
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
; RUN: opt -load libjulia.so -LowerSIMDLoop -S %s | FileCheck %s

define void @simd_test(double *%a, double *%b) {
top:
br label %loop
loop:
%i = phi i64 [0, %top], [%nexti, %loop]
%aptr = getelementptr double, double *%a, i64 %i
%bptr = getelementptr double, double *%b, i64 %i
; CHECK: llvm.mem.parallel_loop_access
%aval = load double, double *%aptr
%bval = load double, double *%aptr
%cval = fadd double %aval, %bval
store double %cval, double *%bptr
%nexti = add i64 %i, 1, !simd_loop !1
%done = icmp sgt i64 %nexti, 500
br i1 %done, label %loopdone, label %loop
loopdone:
ret void
}

!1 = !{}

0 comments on commit 418afaa

Please sign in to comment.