define float @someFunc(float * %d1, float * %v1) { ret float 3.0 } define void @someKernel(float * %d1, float * %d2) { %1 = alloca float *, i32 1 %2 = load float *, float **%1 %3 = call float @someFunc(float *%d1, float *%2) ret void } define i32 @someFuncInts(i32 * %d1, i32 * %v1) { ret i32 3 } define void @someKernelInts(i32 * %d1, i32 * %d2) { %1 = alloca i32 *, i32 1 %2 = load i32 *, i32 **%1 %3 = call i32 @someFuncInts(i32 *%d1, i32 *%2) ret void } @mysharedmem = internal addrspace(3) global [8 x float] zeroinitializer, align 4 @anothershared = internal addrspace(3) global [12 x i32] zeroinitializer, align 4 define void @usesShared(float addrspace(1) *%d1) { %1 = getelementptr inbounds [8 x float], [8 x float]* addrspacecast ([8 x float] addrspace(3) *@mysharedmem to [8 x float]*), i32 0, i32 3 %2 = alloca float, i32 1 %3 = load float, float* %2 store float %3, float * %1 ret void } define void @usesShared2(float addrspace(1) *%d1) { %1 = getelementptr inbounds [8 x float], [8 x float]* addrspacecast ([8 x float] addrspace(3) *@mysharedmem to [8 x float]*), i32 0, i32 3 %2 = getelementptr inbounds [12 x i32], [12 x i32]* addrspacecast ([12 x i32] addrspace(3) *@anothershared to [12 x i32]*), i32 0, i32 7 %3 = alloca float, i32 1 %4 = alloca i32, i32 1 %5 = load float, float *%3 %6 = load i32, i32 *%4 store float %5, float *%1 store i32 %6, i32 *%2 ret void } define float *@returnsPointer(float *%in) { ret float * %in } define void @usesPointerFunction(float *%in) { call float *@returnsPointer(float *%in) ret void } define float @returnsFloatConstant(float *%in) { ret float 4.5 } define void @testBranches_nophi(float *%d1) { label1: %0 = fadd float 3.0, 4.0 %1 = alloca float, i32 1 store float %0, float *%1 br label %label2 label2: %2 = fadd float 5.0, 7.0 %3 = fcmp ogt float %2, 6.0 br i1 %3, label %label1, label %label2 } define void @testBranches_onephi(float *%d1) { label1: %0 = fadd float 3.0, 4.0 br label %label2 label2: %1 = phi float [%0, %label1], [%2, %label2] %2 = fadd float %1, 7.0 %3 = fcmp ogt float %2, 6.0 br i1 %3, label %label1, label %label2 } define void @testBranches_phifromfuture(float *%d1) { label1: %0 = fadd float 3.0, 4.0 br label %label2 label2: %1 = phi float [%0, %label1], [%2, %label2], [%4, %label3] %2 = fadd float %1, 7.0 %3 = fcmp ogt float %2, 6.0 br i1 %3, label %label1, label %label2 label3: %4 = fadd float 8.0, 2.0 br label %label2 } define void @testBranches_phifromfloat(float *%d1) { label1: %0 = fadd float 3.0, 4.0 br label %label2 label2: %1 = phi float [123.0, %label1], [%2, %label2], [%4, %label3] %2 = fadd float %1, 7.0 %3 = fcmp ogt float %2, 6.0 br i1 %3, label %label1, label %label2 label3: %4 = fadd float 8.0, 2.0 br label %label2 } ; from test/cocl/multigpu.cu define void @multigpu_Z8getValuePf(float* nocapture %outdata) { br label %2 ;