Skip to content

Instantly share code, notes, and snippets.

@pjaaskel
Created September 16, 2019 07:57
Show Gist options
  • Save pjaaskel/5c1da420933519379fbca9d4db522e5c to your computer and use it in GitHub Desktop.
Save pjaaskel/5c1da420933519379fbca9d4db522e5c to your computer and use it in GitHub Desktop.
; ModuleID = 'parallel_bc'
source_filename = "parallel_bc"
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
@_group_id_x = external local_unnamed_addr global i64, align 8
@_group_id_y = external local_unnamed_addr global i64, align 8
@_group_id_z = external local_unnamed_addr global i64, align 8
@_local_id_x = external local_unnamed_addr global i64, align 8
@_local_id_y = external local_unnamed_addr global i64, align 8
@_local_id_z = external local_unnamed_addr global i64, align 8
; Function Attrs: noduplicate
define linkonce void @pocl.barrier() #0 {
ret void
}
; Function Attrs: alwaysinline nofree norecurse nounwind
define void @_pocl_kernel_grudge_assign_0(i32, double* noalias nocapture, i32, double* noalias nocapture readonly, i32, { [3 x i64], [3 x i64], [3 x i64], i8*, i32*, i32, i32 }*, i64, i64, i64) #1 !kernel_arg_addr_space !5 !kernel_arg_access_qual !6 !kernel_arg_type !7 !kernel_arg_base_type !7 !kernel_arg_type_qual !8 !kernel_arg_name !9 !reqd_work_group_size !10 !pocl_generated !11 {
%_local_id_x = alloca i64
%_local_id_y = alloca i64
%_local_id_z = alloca i64
%10 = getelementptr inbounds { [3 x i64], [3 x i64], [3 x i64], i8*, i32*, i32, i32 }, { [3 x i64], [3 x i64], [3 x i64], i8*, i32*, i32, i32 }* %5, i32 0, i32 3
%11 = getelementptr i8*, i8** %10, i64 0
%12 = load i8*, i8** %11
%13 = getelementptr inbounds { [3 x i64], [3 x i64], [3 x i64], i8*, i32*, i32, i32 }, { [3 x i64], [3 x i64], [3 x i64], i8*, i32*, i32, i32 }* %5, i32 0, i32 4
%14 = getelementptr i32*, i32** %13, i64 0
%15 = load i32*, i32** %14
%16 = getelementptr inbounds { [3 x i64], [3 x i64], [3 x i64], i8*, i32*, i32, i32 }, { [3 x i64], [3 x i64], [3 x i64], i8*, i32*, i32, i32 }* %5, i32 0, i32 5
%17 = getelementptr i32, i32* %16, i64 0
%18 = load i32, i32* %17
%19 = getelementptr inbounds { [3 x i64], [3 x i64], [3 x i64], i8*, i32*, i32, i32 }, { [3 x i64], [3 x i64], [3 x i64], i8*, i32*, i32, i32 }* %5, i32 0, i32 3
%20 = getelementptr i8*, i8** %19, i64 0
%21 = load i8*, i8** %20
%22 = getelementptr inbounds { [3 x i64], [3 x i64], [3 x i64], i8*, i32*, i32, i32 }, { [3 x i64], [3 x i64], [3 x i64], i8*, i32*, i32, i32 }* %5, i32 0, i32 4
%23 = getelementptr i32*, i32** %22, i64 0
%24 = load i32*, i32** %23
%25 = getelementptr inbounds { [3 x i64], [3 x i64], [3 x i64], i8*, i32*, i32, i32 }, { [3 x i64], [3 x i64], [3 x i64], i8*, i32*, i32, i32 }* %5, i32 0, i32 5
%26 = getelementptr i32, i32* %25, i64 0
%27 = load i32, i32* %26
store i64 0, i64* %_local_id_x, !noalias !12
store i64 0, i64* %_local_id_y, !noalias !12
store i64 0, i64* %_local_id_z, !noalias !12
store i64 0, i64* %_local_id_x, !noalias !12
br label %pregion_for_entry.entry.i
pregion_for_entry.entry.i: ; preds = %if.end.r_exit.i, %9
%28 = load i64, i64* %_local_id_z, !noalias !12, !llvm.access.group !16
%29 = load i64, i64* %_local_id_y, !noalias !12, !llvm.access.group !16
%30 = load i64, i64* %_local_id_x, !noalias !12, !llvm.access.group !16
%conv.i = trunc i64 %6 to i32
%mul.i = mul nsw i32 %conv.i, -128
%31 = load i64, i64* %_local_id_x, align 8, !tbaa !18, !noalias !12, !llvm.access.group !16
%conv2.i = trunc i64 %30 to i32
%32 = xor i32 %conv2.i, -1
%add4.i = add i32 %32, %0
%add5.i = add i32 %add4.i, %mul.i
%cmp.i = icmp sgt i32 %add5.i, -1
br i1 %cmp.i, label %if.then.i, label %if.end.r_exit.i
if.then.i: ; preds = %pregion_for_entry.entry.i
%mul9.i = shl nsw i32 %conv.i, 7
%add10.i = add i32 %mul9.i, %conv2.i
%add13.i = add i32 %add10.i, %4
%idxprom.i = sext i32 %add13.i to i64
%arrayidx.i = getelementptr inbounds double, double* %3, i64 %idxprom.i
%33 = bitcast double* %arrayidx.i to i64*
%34 = load i64, i64* %33, align 8, !tbaa !22, !alias.scope !24, !noalias !25, !llvm.access.group !16
%add20.i = add i32 %add10.i, %2
%idxprom21.i = sext i32 %add20.i to i64
%arrayidx22.i = getelementptr inbounds double, double* %1, i64 %idxprom21.i
%35 = bitcast double* %arrayidx22.i to i64*
store i64 %34, i64* %35, align 8, !tbaa !22, !alias.scope !25, !noalias !24, !llvm.access.group !16
br label %if.end.r_exit.i
if.end.r_exit.i: ; preds = %if.then.i, %pregion_for_entry.entry.i
%36 = load i64, i64* %_local_id_x, !noalias !12
%37 = add i64 %36, 1
store i64 %37, i64* %_local_id_x, !noalias !12
%38 = load i64, i64* %_local_id_x, !noalias !12
%39 = icmp ult i64 %38, 128
br i1 %39, label %pregion_for_entry.entry.i, label %grudge_assign_0.exit, !llvm.loop !26
grudge_assign_0.exit: ; preds = %if.end.r_exit.i
ret void
; uselistorder directives
uselistorder { [3 x i64], [3 x i64], [3 x i64], i8*, i32*, i32, i32 }* %5, { 3, 4, 5, 0, 1, 2 }
}
define void @_pocl_kernel_grudge_assign_0_workgroup(i8**, { [3 x i64], [3 x i64], [3 x i64], i8*, i32*, i32, i32 }*, i64, i64, i64) {
%_local_id_x.i = alloca i64
%_local_id_y.i = alloca i64
%_local_id_z.i = alloca i64
%6 = getelementptr i8*, i8** %0, i32 0
%7 = load i8*, i8** %6
%8 = bitcast i8* %7 to i32*
%9 = load i32, i32* %8
%10 = getelementptr i8*, i8** %0, i32 1
%11 = load i8*, i8** %10
%12 = bitcast i8* %11 to double**
%13 = load double*, double** %12
%14 = getelementptr i8*, i8** %0, i32 2
%15 = load i8*, i8** %14
%16 = bitcast i8* %15 to i32*
%17 = load i32, i32* %16
%18 = getelementptr i8*, i8** %0, i32 3
%19 = load i8*, i8** %18
%20 = bitcast i8* %19 to double**
%21 = load double*, double** %20
%22 = getelementptr i8*, i8** %0, i32 4
%23 = load i8*, i8** %22
%24 = bitcast i8* %23 to i32*
%25 = load i32, i32* %24
%26 = bitcast i64* %_local_id_x.i to i8*
call void @llvm.lifetime.start.p0i8(i64 8, i8* %26)
%27 = bitcast i64* %_local_id_y.i to i8*
call void @llvm.lifetime.start.p0i8(i64 8, i8* %27)
%28 = bitcast i64* %_local_id_z.i to i8*
call void @llvm.lifetime.start.p0i8(i64 8, i8* %28)
%29 = getelementptr inbounds { [3 x i64], [3 x i64], [3 x i64], i8*, i32*, i32, i32 }, { [3 x i64], [3 x i64], [3 x i64], i8*, i32*, i32, i32 }* %1, i32 0, i32 3
%30 = load i8*, i8** %29, !noalias !28
%31 = getelementptr inbounds { [3 x i64], [3 x i64], [3 x i64], i8*, i32*, i32, i32 }, { [3 x i64], [3 x i64], [3 x i64], i8*, i32*, i32, i32 }* %1, i32 0, i32 4
%32 = load i32*, i32** %31, !noalias !28
%33 = getelementptr inbounds { [3 x i64], [3 x i64], [3 x i64], i8*, i32*, i32, i32 }, { [3 x i64], [3 x i64], [3 x i64], i8*, i32*, i32, i32 }* %1, i32 0, i32 5
%34 = load i32, i32* %33, !noalias !28
%35 = getelementptr inbounds { [3 x i64], [3 x i64], [3 x i64], i8*, i32*, i32, i32 }, { [3 x i64], [3 x i64], [3 x i64], i8*, i32*, i32, i32 }* %1, i32 0, i32 3
%36 = load i8*, i8** %35, !noalias !28
%37 = getelementptr inbounds { [3 x i64], [3 x i64], [3 x i64], i8*, i32*, i32, i32 }, { [3 x i64], [3 x i64], [3 x i64], i8*, i32*, i32, i32 }* %1, i32 0, i32 4
%38 = load i32*, i32** %37, !noalias !28
%39 = getelementptr inbounds { [3 x i64], [3 x i64], [3 x i64], i8*, i32*, i32, i32 }, { [3 x i64], [3 x i64], [3 x i64], i8*, i32*, i32, i32 }* %1, i32 0, i32 5
%40 = load i32, i32* %39, !noalias !28
store i64 0, i64* %_local_id_x.i, !noalias !32
store i64 0, i64* %_local_id_y.i, !noalias !32
store i64 0, i64* %_local_id_z.i, !noalias !32
store i64 0, i64* %_local_id_x.i, !noalias !32
br label %pregion_for_entry.entry.i.i
pregion_for_entry.entry.i.i: ; preds = %if.end.r_exit.i.i, %5
%41 = load i64, i64* %_local_id_z.i, !noalias !32, !llvm.access.group !16
%42 = load i64, i64* %_local_id_y.i, !noalias !32, !llvm.access.group !16
%43 = load i64, i64* %_local_id_x.i, !noalias !32, !llvm.access.group !16
%conv.i.i = trunc i64 %2 to i32
%mul.i.i = mul nsw i32 %conv.i.i, -128
%44 = load i64, i64* %_local_id_x.i, align 8, !tbaa !18, !noalias !32, !llvm.access.group !16
%conv2.i.i = trunc i64 %43 to i32
%45 = xor i32 %conv2.i.i, -1
%add4.i.i = add i32 %45, %9
%add5.i.i = add i32 %add4.i.i, %mul.i.i
%cmp.i.i = icmp sgt i32 %add5.i.i, -1
br i1 %cmp.i.i, label %if.then.i.i, label %if.end.r_exit.i.i
if.then.i.i: ; preds = %pregion_for_entry.entry.i.i
%mul9.i.i = shl nsw i32 %conv.i.i, 7
%add10.i.i = add i32 %mul9.i.i, %conv2.i.i
%add13.i.i = add i32 %add10.i.i, %25
%idxprom.i.i = sext i32 %add13.i.i to i64
%arrayidx.i.i = getelementptr inbounds double, double* %21, i64 %idxprom.i.i
%46 = bitcast double* %arrayidx.i.i to i64*
%47 = load i64, i64* %46, align 8, !tbaa !22, !alias.scope !36, !noalias !37, !llvm.access.group !16
%add20.i.i = add i32 %add10.i.i, %17
%idxprom21.i.i = sext i32 %add20.i.i to i64
%arrayidx22.i.i = getelementptr inbounds double, double* %13, i64 %idxprom21.i.i
%48 = bitcast double* %arrayidx22.i.i to i64*
store i64 %47, i64* %48, align 8, !tbaa !22, !alias.scope !37, !noalias !36, !llvm.access.group !16
br label %if.end.r_exit.i.i
if.end.r_exit.i.i: ; preds = %if.then.i.i, %pregion_for_entry.entry.i.i
%49 = load i64, i64* %_local_id_x.i, !noalias !32
%50 = add i64 %49, 1
store i64 %50, i64* %_local_id_x.i, !noalias !32
%51 = load i64, i64* %_local_id_x.i, !noalias !32
%52 = icmp ult i64 %51, 128
br i1 %52, label %pregion_for_entry.entry.i.i, label %_pocl_kernel_grudge_assign_0.exit, !llvm.loop !26
_pocl_kernel_grudge_assign_0.exit: ; preds = %if.end.r_exit.i.i
%53 = bitcast i64* %_local_id_x.i to i8*
call void @llvm.lifetime.end.p0i8(i64 8, i8* %53)
%54 = bitcast i64* %_local_id_y.i to i8*
call void @llvm.lifetime.end.p0i8(i64 8, i8* %54)
%55 = bitcast i64* %_local_id_z.i to i8*
call void @llvm.lifetime.end.p0i8(i64 8, i8* %55)
ret void
; uselistorder directives
uselistorder i64* %_local_id_z.i, { 0, 2, 3, 1 }
uselistorder i64* %_local_id_y.i, { 0, 2, 3, 1 }
uselistorder i64* %_local_id_x.i, { 0, 2, 3, 4, 5, 6, 7, 8, 1 }
}
define void @_pocl_kernel_grudge_assign_0_workgroup_fast(i8**, { [3 x i64], [3 x i64], [3 x i64], i8*, i32*, i32, i32 }*, i64, i64, i64) {
%_local_id_x.i = alloca i64
%_local_id_y.i = alloca i64
%_local_id_z.i = alloca i64
%6 = getelementptr i8*, i8** %0, i32 0
%7 = load i8*, i8** %6
%8 = bitcast i8* %7 to i32*
%9 = load i32, i32* %8
%10 = getelementptr i8*, i8** %0, i32 1
%11 = load i8*, i8** %10
%12 = bitcast i8* %11 to double*
%13 = getelementptr i8*, i8** %0, i32 2
%14 = load i8*, i8** %13
%15 = bitcast i8* %14 to i32*
%16 = load i32, i32* %15
%17 = getelementptr i8*, i8** %0, i32 3
%18 = load i8*, i8** %17
%19 = bitcast i8* %18 to double*
%20 = getelementptr i8*, i8** %0, i32 4
%21 = load i8*, i8** %20
%22 = bitcast i8* %21 to i32*
%23 = load i32, i32* %22
%24 = bitcast i64* %_local_id_x.i to i8*
call void @llvm.lifetime.start.p0i8(i64 8, i8* %24)
%25 = bitcast i64* %_local_id_y.i to i8*
call void @llvm.lifetime.start.p0i8(i64 8, i8* %25)
%26 = bitcast i64* %_local_id_z.i to i8*
call void @llvm.lifetime.start.p0i8(i64 8, i8* %26)
%27 = getelementptr inbounds { [3 x i64], [3 x i64], [3 x i64], i8*, i32*, i32, i32 }, { [3 x i64], [3 x i64], [3 x i64], i8*, i32*, i32, i32 }* %1, i32 0, i32 3
%28 = load i8*, i8** %27, !noalias !38
%29 = getelementptr inbounds { [3 x i64], [3 x i64], [3 x i64], i8*, i32*, i32, i32 }, { [3 x i64], [3 x i64], [3 x i64], i8*, i32*, i32, i32 }* %1, i32 0, i32 4
%30 = load i32*, i32** %29, !noalias !38
%31 = getelementptr inbounds { [3 x i64], [3 x i64], [3 x i64], i8*, i32*, i32, i32 }, { [3 x i64], [3 x i64], [3 x i64], i8*, i32*, i32, i32 }* %1, i32 0, i32 5
%32 = load i32, i32* %31, !noalias !38
%33 = getelementptr inbounds { [3 x i64], [3 x i64], [3 x i64], i8*, i32*, i32, i32 }, { [3 x i64], [3 x i64], [3 x i64], i8*, i32*, i32, i32 }* %1, i32 0, i32 3
%34 = load i8*, i8** %33, !noalias !38
%35 = getelementptr inbounds { [3 x i64], [3 x i64], [3 x i64], i8*, i32*, i32, i32 }, { [3 x i64], [3 x i64], [3 x i64], i8*, i32*, i32, i32 }* %1, i32 0, i32 4
%36 = load i32*, i32** %35, !noalias !38
%37 = getelementptr inbounds { [3 x i64], [3 x i64], [3 x i64], i8*, i32*, i32, i32 }, { [3 x i64], [3 x i64], [3 x i64], i8*, i32*, i32, i32 }* %1, i32 0, i32 5
%38 = load i32, i32* %37, !noalias !38
store i64 0, i64* %_local_id_x.i, !noalias !42
store i64 0, i64* %_local_id_y.i, !noalias !42
store i64 0, i64* %_local_id_z.i, !noalias !42
store i64 0, i64* %_local_id_x.i, !noalias !42
br label %pregion_for_entry.entry.i.i
pregion_for_entry.entry.i.i: ; preds = %if.end.r_exit.i.i, %5
%39 = load i64, i64* %_local_id_z.i, !noalias !42, !llvm.access.group !16
%40 = load i64, i64* %_local_id_y.i, !noalias !42, !llvm.access.group !16
%41 = load i64, i64* %_local_id_x.i, !noalias !42, !llvm.access.group !16
%conv.i.i = trunc i64 %2 to i32
%mul.i.i = mul nsw i32 %conv.i.i, -128
%42 = load i64, i64* %_local_id_x.i, align 8, !tbaa !18, !noalias !42, !llvm.access.group !16
%conv2.i.i = trunc i64 %41 to i32
%43 = xor i32 %conv2.i.i, -1
%add4.i.i = add i32 %43, %9
%add5.i.i = add i32 %add4.i.i, %mul.i.i
%cmp.i.i = icmp sgt i32 %add5.i.i, -1
br i1 %cmp.i.i, label %if.then.i.i, label %if.end.r_exit.i.i
if.then.i.i: ; preds = %pregion_for_entry.entry.i.i
%mul9.i.i = shl nsw i32 %conv.i.i, 7
%add10.i.i = add i32 %mul9.i.i, %conv2.i.i
%add13.i.i = add i32 %add10.i.i, %23
%idxprom.i.i = sext i32 %add13.i.i to i64
%arrayidx.i.i = getelementptr inbounds double, double* %19, i64 %idxprom.i.i
%44 = bitcast double* %arrayidx.i.i to i64*
%45 = load i64, i64* %44, align 8, !tbaa !22, !alias.scope !46, !noalias !47, !llvm.access.group !16
%add20.i.i = add i32 %add10.i.i, %16
%idxprom21.i.i = sext i32 %add20.i.i to i64
%arrayidx22.i.i = getelementptr inbounds double, double* %12, i64 %idxprom21.i.i
%46 = bitcast double* %arrayidx22.i.i to i64*
store i64 %45, i64* %46, align 8, !tbaa !22, !alias.scope !47, !noalias !46, !llvm.access.group !16
br label %if.end.r_exit.i.i
if.end.r_exit.i.i: ; preds = %if.then.i.i, %pregion_for_entry.entry.i.i
%47 = load i64, i64* %_local_id_x.i, !noalias !42
%48 = add i64 %47, 1
store i64 %48, i64* %_local_id_x.i, !noalias !42
%49 = load i64, i64* %_local_id_x.i, !noalias !42
%50 = icmp ult i64 %49, 128
br i1 %50, label %pregion_for_entry.entry.i.i, label %_pocl_kernel_grudge_assign_0.exit, !llvm.loop !26
_pocl_kernel_grudge_assign_0.exit: ; preds = %if.end.r_exit.i.i
%51 = bitcast i64* %_local_id_x.i to i8*
call void @llvm.lifetime.end.p0i8(i64 8, i8* %51)
%52 = bitcast i64* %_local_id_y.i to i8*
call void @llvm.lifetime.end.p0i8(i64 8, i8* %52)
%53 = bitcast i64* %_local_id_z.i to i8*
call void @llvm.lifetime.end.p0i8(i64 8, i8* %53)
ret void
; uselistorder directives
uselistorder i64* %_local_id_z.i, { 0, 2, 3, 1 }
uselistorder i64* %_local_id_y.i, { 0, 2, 3, 1 }
uselistorder i64* %_local_id_x.i, { 0, 2, 3, 4, 5, 6, 7, 8, 1 }
uselistorder i64 0, { 0, 1, 2, 3, 4, 5, 6, 7, 11, 12, 13, 14, 15, 16, 17, 8, 9, 10 }
uselistorder i32 5, { 0, 1, 2, 3, 5, 4 }
uselistorder i64 8, { 0, 2, 4, 1, 3, 5, 6, 8, 10, 7, 9, 11 }
uselistorder i32 4, { 0, 1, 4, 2, 3, 5, 7, 6 }
uselistorder i32 3, { 0, 1, 4, 2, 3, 5, 7, 6 }
uselistorder i32 0, { 0, 1, 2, 3, 4, 5, 12, 6, 7, 8, 9, 10, 11, 13, 17, 18, 19, 14, 15, 16 }
uselistorder i32 1, { 6, 0, 1, 2, 7, 3, 4, 5, 8, 9, 10 }
}
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) #2
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) #2
attributes #0 = { noduplicate }
attributes #1 = { alwaysinline nofree norecurse nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "denorms-are-zero"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "stackrealign" "target-cpu"="broadwell" "target-features"="+adx,+avx,+avx2,+bmi,+bmi2,+cx16,+cx8,+f16c,+fma,+fsgsbase,+fxsr,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+popcnt,+prfchw,+rdrnd,+rdseed,+sahf,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave,+xsaveopt" "uniform-work-group-size"="true" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #2 = { argmemonly nounwind }
!llvm.module.flags = !{!0, !1, !2}
!opencl.ocl.version = !{!3}
!llvm.ident = !{!4}
!opencl.spir.version = !{!3}
!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 7, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 1, i32 2}
!4 = !{!"clang version 9.0.0 (branches/release_90 367845)"}
!5 = !{i32 0, i32 1, i32 0, i32 1, i32 0}
!6 = !{!"none", !"none", !"none", !"none", !"none"}
!7 = !{!"int", !"double*", !"int", !"double*", !"int"}
!8 = !{!"", !"restrict", !"", !"restrict const", !""}
!9 = !{!"grdg_n", !"expr_8", !"expr_8_offset", !"grdg_sub_discr_dx0_dr0", !"grdg_sub_discr_dx0_dr0_offset"}
!10 = !{i32 128, i32 1, i32 1}
!11 = !{i32 1}
!12 = !{!13, !15}
!13 = distinct !{!13, !14, !"grudge_assign_0: %expr_8"}
!14 = distinct !{!14, !"grudge_assign_0"}
!15 = distinct !{!15, !14, !"grudge_assign_0: %grdg_sub_discr_dx0_dr0"}
!16 = !{!17}
!17 = distinct !{}
!18 = !{!19, !19, i64 0}
!19 = !{!"long", !20, i64 0}
!20 = !{!"omnipotent char", !21, i64 0}
!21 = !{!"Simple C/C++ TBAA"}
!22 = !{!23, !23, i64 0}
!23 = !{!"double", !20, i64 0}
!24 = !{!15}
!25 = !{!13}
!26 = distinct !{!26, !27}
!27 = !{!"llvm.loop.parallel_accesses", !17}
!28 = !{!29, !31}
!29 = distinct !{!29, !30, !"_pocl_kernel_grudge_assign_0: argument 0"}
!30 = distinct !{!30, !"_pocl_kernel_grudge_assign_0"}
!31 = distinct !{!31, !30, !"_pocl_kernel_grudge_assign_0: argument 1"}
!32 = !{!33, !35, !29, !31}
!33 = distinct !{!33, !34, !"grudge_assign_0: %expr_8"}
!34 = distinct !{!34, !"grudge_assign_0"}
!35 = distinct !{!35, !34, !"grudge_assign_0: %grdg_sub_discr_dx0_dr0"}
!36 = !{!35, !31}
!37 = !{!33, !29}
!38 = !{!39, !41}
!39 = distinct !{!39, !40, !"_pocl_kernel_grudge_assign_0: argument 0"}
!40 = distinct !{!40, !"_pocl_kernel_grudge_assign_0"}
!41 = distinct !{!41, !40, !"_pocl_kernel_grudge_assign_0: argument 1"}
!42 = !{!43, !45, !39, !41}
!43 = distinct !{!43, !44, !"grudge_assign_0: %expr_8"}
!44 = distinct !{!44, !"grudge_assign_0"}
!45 = distinct !{!45, !44, !"grudge_assign_0: %grdg_sub_discr_dx0_dr0"}
!46 = !{!45, !41}
!47 = !{!43, !39}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment