[polly] r278125 - [GPGPU] Use separate basic block for GPU initialization code
Tobias Grosser via llvm-commits
llvm-commits at lists.llvm.org
Tue Aug 9 08:35:03 PDT 2016
Author: grosser
Date: Tue Aug 9 10:35:03 2016
New Revision: 278125
URL: http://llvm.org/viewvc/llvm-project?rev=278125&view=rev
Log:
[GPGPU] Use separate basic block for GPU initialization code
This increases the readability of the IR and also clarifies that the GPU
inititialization is executed _after_ the scalar initialization which needs
to before the code of the transformed scop is executed.
Besides increased readability, the IR should not change. Specifically, I
do not expect any changes in program semantics due to this patch.
Modified:
polly/trunk/lib/CodeGen/PPCGCodeGeneration.cpp
polly/trunk/test/GPGPU/double-parallel-loop.ll
Modified: polly/trunk/lib/CodeGen/PPCGCodeGeneration.cpp
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/CodeGen/PPCGCodeGeneration.cpp?rev=278125&r1=278124&r2=278125&view=diff
==============================================================================
--- polly/trunk/lib/CodeGen/PPCGCodeGeneration.cpp (original)
+++ polly/trunk/lib/CodeGen/PPCGCodeGeneration.cpp Tue Aug 9 10:35:03 2016
@@ -35,6 +35,7 @@
#include "llvm/Support/TargetSelect.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Transforms/IPO/PassManagerBuilder.h"
+#include "llvm/Transforms/Utils/BasicBlockUtils.h"
#include "isl/union_map.h"
@@ -436,6 +437,11 @@ private:
};
void GPUNodeBuilder::initializeAfterRTH() {
+ BasicBlock *NewBB = SplitBlock(Builder.GetInsertBlock(),
+ &*Builder.GetInsertPoint(), &DT, &LI);
+ NewBB->setName("polly.acc.initialize");
+ Builder.SetInsertPoint(&NewBB->front());
+
GPUContext = createCallInitContext();
allocateDeviceArrays();
}
Modified: polly/trunk/test/GPGPU/double-parallel-loop.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/GPGPU/double-parallel-loop.ll?rev=278125&r1=278124&r2=278125&view=diff
==============================================================================
--- polly/trunk/test/GPGPU/double-parallel-loop.ll (original)
+++ polly/trunk/test/GPGPU/double-parallel-loop.ll Tue Aug 9 10:35:03 2016
@@ -92,6 +92,9 @@
; IR-NEXT: br i1 true, label %polly.start, label %bb2
; IR: polly.start:
+; IR-NEXT: br label %polly.acc.initialize
+
+; IR: polly.acc.initialize:
; IR-NEXT: [[GPUContext:%.*]] = call i8* @polly_initContext()
; IR-NEXT: %p_dev_array_MemRef_A = call i8* @polly_allocateMemoryForDevice(i64 4194304)
; IR-NEXT: [[HostPtr:%.*]] = bitcast [1024 x float]* %A to i8*
More information about the llvm-commits
mailing list