Skip to content

Instantly share code, notes, and snippets.

@BeMg
Created August 17, 2020 05:06
Show Gist options
  • Save BeMg/f3303bbc670d75c225b9e9cc00f2e6f7 to your computer and use it in GitHub Desktop.
Save BeMg/f3303bbc670d75c225b9e9cc00f2e6f7 to your computer and use it in GitHub Desktop.
Represent how pocl handle local memory buffer
; ModuleID = 'parallel.bc'
source_filename = "parallel_bc"
target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n64-S128"
target triple = "riscv64-unknown-linux"
; Function Attrs: alwaysinline nofree norecurse nounwind
define void @_pocl_kernel_transpose(i32 %0, i32 %1, float* nocapture readonly %2, float* nocapture %3, [8 x [8 x float]]* nocapture %4, { [3 x i64], [3 x i64], [3 x i64], i8*, i32*, i32, i32 }* nocapture readonly %5, i64 %6, i64 %7, i64 %8) local_unnamed_addr #0 !kernel_arg_addr_space !7 !kernel_arg_access_qual !8 !kernel_arg_type !9 !kernel_arg_base_type !9 !kernel_arg_type_qual !10 !kernel_arg_name !11 !pocl_generated !12 {
%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, i64 0, i32 2, i64 0
%11 = load i64, i64* %10, align 8
%12 = getelementptr { [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, i64 0, i32 2, i64 1
%13 = load i64, i64* %12, align 8
%14 = getelementptr { [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, i64 0, i32 2, i64 2
%15 = load i64, i64* %14, align 8
%tmp16.i = mul i64 %13, %11
%num_wi17.i = mul i64 %tmp16.i, %15
%.conv8.pocl_context.i = alloca i64, i64 %num_wi17.i, align 64
%.conv4.pocl_context.i = alloca i64, i64 %num_wi17.i, align 64
%mul.i = shl i64 %6, 3
%mul7.i = shl i64 %7, 3
%16 = icmp ugt i64 %11, 1
%umax1 = select i1 %16, i64 %11, i64 1
%17 = add i64 %umax1, -1
%xtraiter2 = and i64 %umax1, 7
%18 = icmp ult i64 %17, 7
%unroll_iter5 = sub i64 %umax1, %xtraiter2
%lcmp.mod4 = icmp eq i64 %xtraiter2, 0
br label %pregion_for_entry.pregion_for_init50.i
pregion_for_entry.pregion_for_init50.i: ; preds = %pregion_for_end51.i, %9
%_local_id_z.0 = phi i64 [ 0, %9 ], [ %19, %pregion_for_end51.i ]
%tmp1.i = mul i64 %_local_id_z.0, %tmp16.i
br label %pregion_for_entry.pregion_for_init46.i
pregion_for_entry.pregion_for_init46.i: ; preds = %pregion_for_end47.i, %pregion_for_entry.pregion_for_init50.i
%_local_id_y.0 = phi i64 [ 0, %pregion_for_entry.pregion_for_init50.i ], [ %28, %pregion_for_end47.i ]
%ls_x_y.i = mul i64 %_local_id_y.0, %11
%zy_sum.i = add i64 %ls_x_y.i, %tmp1.i
%conv8.i = and i64 %_local_id_y.0, 4294967295
%add9.i = add i64 %_local_id_y.0, %mul7.i
%conv10.i = trunc i64 %add9.i to i32
%mul11.i = mul i32 %conv10.i, %0
br i1 %18, label %pregion_for_end47.i.unr-lcssa, label %pregion_for_entry.entry.prebarrier.i.preheader
pregion_for_entry.entry.prebarrier.i.preheader: ; preds = %pregion_for_entry.pregion_for_init46.i
br label %pregion_for_entry.entry.prebarrier.i
pregion_for_end51.i: ; preds = %pregion_for_end47.i
%19 = add nuw i64 %_local_id_z.0, 1
%20 = icmp ult i64 %19, %15
br i1 %20, label %pregion_for_entry.pregion_for_init50.i, label %pregion_for_entry.pregion_for_init42.i.preheader, !llvm.loop !13
pregion_for_entry.pregion_for_init42.i.preheader: ; preds = %pregion_for_end51.i
%21 = icmp ugt i64 %11, 1
%umax = select i1 %21, i64 %11, i64 1
%22 = add i64 %umax, -1
%xtraiter = and i64 %umax, 7
%23 = icmp ult i64 %22, 7
%unroll_iter = sub i64 %umax, %xtraiter
%lcmp.mod = icmp eq i64 %xtraiter, 0
br label %pregion_for_entry.pregion_for_init42.i
pregion_for_end47.i.unr-lcssa.loopexit: ; preds = %pregion_for_entry.entry.prebarrier.i
%.lcssa8 = phi i64 [ %61, %pregion_for_entry.entry.prebarrier.i ]
br label %pregion_for_end47.i.unr-lcssa
pregion_for_end47.i.unr-lcssa: ; preds = %pregion_for_end47.i.unr-lcssa.loopexit, %pregion_for_entry.pregion_for_init46.i
%_local_id_x.0.unr = phi i64 [ 0, %pregion_for_entry.pregion_for_init46.i ], [ %.lcssa8, %pregion_for_end47.i.unr-lcssa.loopexit ]
br i1 %lcmp.mod4, label %pregion_for_end47.i, label %pregion_for_entry.entry.prebarrier.i.epil.preheader
pregion_for_entry.entry.prebarrier.i.epil.preheader: ; preds = %pregion_for_end47.i.unr-lcssa
br label %pregion_for_entry.entry.prebarrier.i.epil
pregion_for_entry.entry.prebarrier.i.epil: ; preds = %pregion_for_entry.entry.prebarrier.i.epil, %pregion_for_entry.entry.prebarrier.i.epil.preheader
%_local_id_x.0.epil = phi i64 [ %27, %pregion_for_entry.entry.prebarrier.i.epil ], [ %_local_id_x.0.unr, %pregion_for_entry.entry.prebarrier.i.epil.preheader ]
%epil.iter3 = phi i64 [ %epil.iter3.sub, %pregion_for_entry.entry.prebarrier.i.epil ], [ %xtraiter2, %pregion_for_entry.entry.prebarrier.i.epil.preheader ]
%conv4.i.epil = and i64 %_local_id_x.0.epil, 4294967295
%linear_xyz_idx.i.epil = add i64 %zy_sum.i, %_local_id_x.0.epil
%24 = getelementptr i64, i64* %.conv4.pocl_context.i, i64 %linear_xyz_idx.i.epil
store i64 %conv4.i.epil, i64* %24, align 8, !llvm.access.group !16
%add.i.epil = add i64 %_local_id_x.0.epil, %mul.i
%conv5.i.epil = trunc i64 %add.i.epil to i32
%25 = getelementptr i64, i64* %.conv8.pocl_context.i, i64 %linear_xyz_idx.i.epil
store i64 %conv8.i, i64* %25, align 8, !llvm.access.group !16
%add12.i.epil = add i32 %mul11.i, %conv5.i.epil
%idxprom.i.epil = zext i32 %add12.i.epil to i64
%arrayidx.i.epil = getelementptr inbounds float, float* %2, i64 %idxprom.i.epil
%26 = load float, float* %arrayidx.i.epil, align 4, !tbaa !19, !llvm.access.group !16
%arrayidx16.i.epil = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %4, i64 0, i64 %conv8.i, i64 %conv4.i.epil
store float %26, float* %arrayidx16.i.epil, align 4, !tbaa !19, !llvm.access.group !16
%27 = add nuw i64 %_local_id_x.0.epil, 1
%epil.iter3.sub = add i64 %epil.iter3, -1
%epil.iter3.cmp = icmp eq i64 %epil.iter3.sub, 0
br i1 %epil.iter3.cmp, label %pregion_for_end47.i.loopexit, label %pregion_for_entry.entry.prebarrier.i.epil, !llvm.loop !23
pregion_for_end47.i.loopexit: ; preds = %pregion_for_entry.entry.prebarrier.i.epil
br label %pregion_for_end47.i
pregion_for_end47.i: ; preds = %pregion_for_end47.i.loopexit, %pregion_for_end47.i.unr-lcssa
%28 = add nuw i64 %_local_id_y.0, 1
%29 = icmp ult i64 %28, %13
br i1 %29, label %pregion_for_entry.pregion_for_init46.i, label %pregion_for_end51.i, !llvm.loop !25
pregion_for_entry.entry.prebarrier.i: ; preds = %pregion_for_entry.entry.prebarrier.i, %pregion_for_entry.entry.prebarrier.i.preheader
%_local_id_x.0 = phi i64 [ %61, %pregion_for_entry.entry.prebarrier.i ], [ 0, %pregion_for_entry.entry.prebarrier.i.preheader ]
%niter6 = phi i64 [ %niter6.nsub.7, %pregion_for_entry.entry.prebarrier.i ], [ %unroll_iter5, %pregion_for_entry.entry.prebarrier.i.preheader ]
%conv4.i = and i64 %_local_id_x.0, 4294967288
%linear_xyz_idx.i = add i64 %zy_sum.i, %_local_id_x.0
%30 = getelementptr i64, i64* %.conv4.pocl_context.i, i64 %linear_xyz_idx.i
store i64 %conv4.i, i64* %30, align 8, !llvm.access.group !16
%add.i = add i64 %_local_id_x.0, %mul.i
%conv5.i = trunc i64 %add.i to i32
%31 = getelementptr i64, i64* %.conv8.pocl_context.i, i64 %linear_xyz_idx.i
store i64 %conv8.i, i64* %31, align 8, !llvm.access.group !16
%add12.i = add i32 %mul11.i, %conv5.i
%idxprom.i = zext i32 %add12.i to i64
%arrayidx.i = getelementptr inbounds float, float* %2, i64 %idxprom.i
%32 = load float, float* %arrayidx.i, align 4, !tbaa !19, !llvm.access.group !16
%arrayidx16.i = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %4, i64 0, i64 %conv8.i, i64 %conv4.i
store float %32, float* %arrayidx16.i, align 4, !tbaa !19, !llvm.access.group !16
%33 = or i64 %_local_id_x.0, 1
%conv4.i.1 = and i64 %33, 4294967289
%linear_xyz_idx.i.1 = add i64 %zy_sum.i, %33
%34 = getelementptr i64, i64* %.conv4.pocl_context.i, i64 %linear_xyz_idx.i.1
store i64 %conv4.i.1, i64* %34, align 8, !llvm.access.group !16
%add.i.1 = add i64 %33, %mul.i
%conv5.i.1 = trunc i64 %add.i.1 to i32
%35 = getelementptr i64, i64* %.conv8.pocl_context.i, i64 %linear_xyz_idx.i.1
store i64 %conv8.i, i64* %35, align 8, !llvm.access.group !16
%add12.i.1 = add i32 %mul11.i, %conv5.i.1
%idxprom.i.1 = zext i32 %add12.i.1 to i64
%arrayidx.i.1 = getelementptr inbounds float, float* %2, i64 %idxprom.i.1
%36 = load float, float* %arrayidx.i.1, align 4, !tbaa !19, !llvm.access.group !16
%arrayidx16.i.1 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %4, i64 0, i64 %conv8.i, i64 %conv4.i.1
store float %36, float* %arrayidx16.i.1, align 4, !tbaa !19, !llvm.access.group !16
%37 = or i64 %_local_id_x.0, 2
%conv4.i.2 = and i64 %37, 4294967290
%linear_xyz_idx.i.2 = add i64 %zy_sum.i, %37
%38 = getelementptr i64, i64* %.conv4.pocl_context.i, i64 %linear_xyz_idx.i.2
store i64 %conv4.i.2, i64* %38, align 8, !llvm.access.group !16
%add.i.2 = add i64 %37, %mul.i
%conv5.i.2 = trunc i64 %add.i.2 to i32
%39 = getelementptr i64, i64* %.conv8.pocl_context.i, i64 %linear_xyz_idx.i.2
store i64 %conv8.i, i64* %39, align 8, !llvm.access.group !16
%add12.i.2 = add i32 %mul11.i, %conv5.i.2
%idxprom.i.2 = zext i32 %add12.i.2 to i64
%arrayidx.i.2 = getelementptr inbounds float, float* %2, i64 %idxprom.i.2
%40 = load float, float* %arrayidx.i.2, align 4, !tbaa !19, !llvm.access.group !16
%arrayidx16.i.2 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %4, i64 0, i64 %conv8.i, i64 %conv4.i.2
store float %40, float* %arrayidx16.i.2, align 4, !tbaa !19, !llvm.access.group !16
%41 = or i64 %_local_id_x.0, 3
%conv4.i.3 = and i64 %41, 4294967291
%linear_xyz_idx.i.3 = add i64 %zy_sum.i, %41
%42 = getelementptr i64, i64* %.conv4.pocl_context.i, i64 %linear_xyz_idx.i.3
store i64 %conv4.i.3, i64* %42, align 8, !llvm.access.group !16
%add.i.3 = add i64 %41, %mul.i
%conv5.i.3 = trunc i64 %add.i.3 to i32
%43 = getelementptr i64, i64* %.conv8.pocl_context.i, i64 %linear_xyz_idx.i.3
store i64 %conv8.i, i64* %43, align 8, !llvm.access.group !16
%add12.i.3 = add i32 %mul11.i, %conv5.i.3
%idxprom.i.3 = zext i32 %add12.i.3 to i64
%arrayidx.i.3 = getelementptr inbounds float, float* %2, i64 %idxprom.i.3
%44 = load float, float* %arrayidx.i.3, align 4, !tbaa !19, !llvm.access.group !16
%arrayidx16.i.3 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %4, i64 0, i64 %conv8.i, i64 %conv4.i.3
store float %44, float* %arrayidx16.i.3, align 4, !tbaa !19, !llvm.access.group !16
%45 = or i64 %_local_id_x.0, 4
%conv4.i.4 = and i64 %45, 4294967292
%linear_xyz_idx.i.4 = add i64 %zy_sum.i, %45
%46 = getelementptr i64, i64* %.conv4.pocl_context.i, i64 %linear_xyz_idx.i.4
store i64 %conv4.i.4, i64* %46, align 8, !llvm.access.group !16
%add.i.4 = add i64 %45, %mul.i
%conv5.i.4 = trunc i64 %add.i.4 to i32
%47 = getelementptr i64, i64* %.conv8.pocl_context.i, i64 %linear_xyz_idx.i.4
store i64 %conv8.i, i64* %47, align 8, !llvm.access.group !16
%add12.i.4 = add i32 %mul11.i, %conv5.i.4
%idxprom.i.4 = zext i32 %add12.i.4 to i64
%arrayidx.i.4 = getelementptr inbounds float, float* %2, i64 %idxprom.i.4
%48 = load float, float* %arrayidx.i.4, align 4, !tbaa !19, !llvm.access.group !16
%arrayidx16.i.4 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %4, i64 0, i64 %conv8.i, i64 %conv4.i.4
store float %48, float* %arrayidx16.i.4, align 4, !tbaa !19, !llvm.access.group !16
%49 = or i64 %_local_id_x.0, 5
%conv4.i.5 = and i64 %49, 4294967293
%linear_xyz_idx.i.5 = add i64 %zy_sum.i, %49
%50 = getelementptr i64, i64* %.conv4.pocl_context.i, i64 %linear_xyz_idx.i.5
store i64 %conv4.i.5, i64* %50, align 8, !llvm.access.group !16
%add.i.5 = add i64 %49, %mul.i
%conv5.i.5 = trunc i64 %add.i.5 to i32
%51 = getelementptr i64, i64* %.conv8.pocl_context.i, i64 %linear_xyz_idx.i.5
store i64 %conv8.i, i64* %51, align 8, !llvm.access.group !16
%add12.i.5 = add i32 %mul11.i, %conv5.i.5
%idxprom.i.5 = zext i32 %add12.i.5 to i64
%arrayidx.i.5 = getelementptr inbounds float, float* %2, i64 %idxprom.i.5
%52 = load float, float* %arrayidx.i.5, align 4, !tbaa !19, !llvm.access.group !16
%arrayidx16.i.5 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %4, i64 0, i64 %conv8.i, i64 %conv4.i.5
store float %52, float* %arrayidx16.i.5, align 4, !tbaa !19, !llvm.access.group !16
%53 = or i64 %_local_id_x.0, 6
%conv4.i.6 = and i64 %53, 4294967294
%linear_xyz_idx.i.6 = add i64 %zy_sum.i, %53
%54 = getelementptr i64, i64* %.conv4.pocl_context.i, i64 %linear_xyz_idx.i.6
store i64 %conv4.i.6, i64* %54, align 8, !llvm.access.group !16
%add.i.6 = add i64 %53, %mul.i
%conv5.i.6 = trunc i64 %add.i.6 to i32
%55 = getelementptr i64, i64* %.conv8.pocl_context.i, i64 %linear_xyz_idx.i.6
store i64 %conv8.i, i64* %55, align 8, !llvm.access.group !16
%add12.i.6 = add i32 %mul11.i, %conv5.i.6
%idxprom.i.6 = zext i32 %add12.i.6 to i64
%arrayidx.i.6 = getelementptr inbounds float, float* %2, i64 %idxprom.i.6
%56 = load float, float* %arrayidx.i.6, align 4, !tbaa !19, !llvm.access.group !16
%arrayidx16.i.6 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %4, i64 0, i64 %conv8.i, i64 %conv4.i.6
store float %56, float* %arrayidx16.i.6, align 4, !tbaa !19, !llvm.access.group !16
%57 = or i64 %_local_id_x.0, 7
%conv4.i.7 = and i64 %57, 4294967295
%linear_xyz_idx.i.7 = add i64 %zy_sum.i, %57
%58 = getelementptr i64, i64* %.conv4.pocl_context.i, i64 %linear_xyz_idx.i.7
store i64 %conv4.i.7, i64* %58, align 8, !llvm.access.group !16
%add.i.7 = add i64 %57, %mul.i
%conv5.i.7 = trunc i64 %add.i.7 to i32
%59 = getelementptr i64, i64* %.conv8.pocl_context.i, i64 %linear_xyz_idx.i.7
store i64 %conv8.i, i64* %59, align 8, !llvm.access.group !16
%add12.i.7 = add i32 %mul11.i, %conv5.i.7
%idxprom.i.7 = zext i32 %add12.i.7 to i64
%arrayidx.i.7 = getelementptr inbounds float, float* %2, i64 %idxprom.i.7
%60 = load float, float* %arrayidx.i.7, align 4, !tbaa !19, !llvm.access.group !16
%arrayidx16.i.7 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %4, i64 0, i64 %conv8.i, i64 %conv4.i.7
store float %60, float* %arrayidx16.i.7, align 4, !tbaa !19, !llvm.access.group !16
%61 = add nuw i64 %_local_id_x.0, 8
%niter6.nsub.7 = add i64 %niter6, -8
%niter6.ncmp.7 = icmp eq i64 %niter6.nsub.7, 0
br i1 %niter6.ncmp.7, label %pregion_for_end47.i.unr-lcssa.loopexit, label %pregion_for_entry.entry.prebarrier.i, !llvm.loop !27
pregion_for_entry.pregion_for_init42.i: ; preds = %pregion_for_end39.i, %pregion_for_entry.pregion_for_init42.i.preheader
%_local_id_z.1 = phi i64 [ %62, %pregion_for_end39.i ], [ 0, %pregion_for_entry.pregion_for_init42.i.preheader ]
%tmp5.i = mul i64 %_local_id_z.1, %tmp16.i
br label %pregion_for_entry.pregion_for_init.i
pregion_for_entry.pregion_for_init.i: ; preds = %pregion_for_end.i, %pregion_for_entry.pregion_for_init42.i
%_local_id_y.1 = phi i64 [ 0, %pregion_for_entry.pregion_for_init42.i ], [ %70, %pregion_for_end.i ]
%add25.i = add i64 %_local_id_y.1, %mul.i
%conv26.i = trunc i64 %add25.i to i32
%ls_x_y6.i = mul i64 %_local_id_y.1, %11
%zy_sum7.i = add i64 %ls_x_y6.i, %tmp5.i
%mul31.i = mul i32 %conv26.i, %1
br i1 %23, label %pregion_for_end.i.unr-lcssa, label %pregion_for_entry.entry.postbarrier.i.preheader
pregion_for_entry.entry.postbarrier.i.preheader: ; preds = %pregion_for_entry.pregion_for_init.i
br label %pregion_for_entry.entry.postbarrier.i
pregion_for_end39.i: ; preds = %pregion_for_end.i
%62 = add nuw i64 %_local_id_z.1, 1
%63 = icmp ult i64 %62, %15
br i1 %63, label %pregion_for_entry.pregion_for_init42.i, label %transpose.exit, !llvm.loop !29
pregion_for_end.i.unr-lcssa.loopexit: ; preds = %pregion_for_entry.entry.postbarrier.i
%.lcssa = phi i64 [ %119, %pregion_for_entry.entry.postbarrier.i ]
br label %pregion_for_end.i.unr-lcssa
pregion_for_end.i.unr-lcssa: ; preds = %pregion_for_end.i.unr-lcssa.loopexit, %pregion_for_entry.pregion_for_init.i
%_local_id_x.1.unr = phi i64 [ 0, %pregion_for_entry.pregion_for_init.i ], [ %.lcssa, %pregion_for_end.i.unr-lcssa.loopexit ]
br i1 %lcmp.mod, label %pregion_for_end.i, label %pregion_for_entry.entry.postbarrier.i.epil.preheader
pregion_for_entry.entry.postbarrier.i.epil.preheader: ; preds = %pregion_for_end.i.unr-lcssa
br label %pregion_for_entry.entry.postbarrier.i.epil
pregion_for_entry.entry.postbarrier.i.epil: ; preds = %pregion_for_entry.entry.postbarrier.i.epil, %pregion_for_entry.entry.postbarrier.i.epil.preheader
%_local_id_x.1.epil = phi i64 [ %69, %pregion_for_entry.entry.postbarrier.i.epil ], [ %_local_id_x.1.unr, %pregion_for_entry.entry.postbarrier.i.epil.preheader ]
%epil.iter = phi i64 [ %epil.iter.sub, %pregion_for_entry.entry.postbarrier.i.epil ], [ %xtraiter, %pregion_for_entry.entry.postbarrier.i.epil.preheader ]
%add20.i.epil = add i64 %_local_id_x.1.epil, %mul7.i
%conv21.i.epil = trunc i64 %add20.i.epil to i32
%linear_xyz_idx8.i.epil = add i64 %zy_sum7.i, %_local_id_x.1.epil
%64 = getelementptr i64, i64* %.conv4.pocl_context.i, i64 %linear_xyz_idx8.i.epil
%65 = load i64, i64* %64, align 8, !llvm.access.group !32
%66 = getelementptr i64, i64* %.conv8.pocl_context.i, i64 %linear_xyz_idx8.i.epil
%67 = load i64, i64* %66, align 8, !llvm.access.group !32
%arrayidx30.i.epil = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %4, i64 0, i64 %65, i64 %67
%68 = load float, float* %arrayidx30.i.epil, align 4, !tbaa !19, !llvm.access.group !32
%add32.i.epil = add i32 %mul31.i, %conv21.i.epil
%idxprom33.i.epil = zext i32 %add32.i.epil to i64
%arrayidx34.i.epil = getelementptr inbounds float, float* %3, i64 %idxprom33.i.epil
store float %68, float* %arrayidx34.i.epil, align 4, !tbaa !19, !llvm.access.group !32
%69 = add nuw i64 %_local_id_x.1.epil, 1
%epil.iter.sub = add i64 %epil.iter, -1
%epil.iter.cmp = icmp eq i64 %epil.iter.sub, 0
br i1 %epil.iter.cmp, label %pregion_for_end.i.loopexit, label %pregion_for_entry.entry.postbarrier.i.epil, !llvm.loop !35
pregion_for_end.i.loopexit: ; preds = %pregion_for_entry.entry.postbarrier.i.epil
br label %pregion_for_end.i
pregion_for_end.i: ; preds = %pregion_for_end.i.loopexit, %pregion_for_end.i.unr-lcssa
%70 = add nuw i64 %_local_id_y.1, 1
%71 = icmp ult i64 %70, %13
br i1 %71, label %pregion_for_entry.pregion_for_init.i, label %pregion_for_end39.i, !llvm.loop !36
pregion_for_entry.entry.postbarrier.i: ; preds = %pregion_for_entry.entry.postbarrier.i, %pregion_for_entry.entry.postbarrier.i.preheader
%_local_id_x.1 = phi i64 [ %119, %pregion_for_entry.entry.postbarrier.i ], [ 0, %pregion_for_entry.entry.postbarrier.i.preheader ]
%niter = phi i64 [ %niter.nsub.7, %pregion_for_entry.entry.postbarrier.i ], [ %unroll_iter, %pregion_for_entry.entry.postbarrier.i.preheader ]
%add20.i = add i64 %_local_id_x.1, %mul7.i
%conv21.i = trunc i64 %add20.i to i32
%linear_xyz_idx8.i = add i64 %zy_sum7.i, %_local_id_x.1
%72 = getelementptr i64, i64* %.conv4.pocl_context.i, i64 %linear_xyz_idx8.i
%73 = load i64, i64* %72, align 8, !llvm.access.group !32
%74 = getelementptr i64, i64* %.conv8.pocl_context.i, i64 %linear_xyz_idx8.i
%75 = load i64, i64* %74, align 8, !llvm.access.group !32
%arrayidx30.i = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %4, i64 0, i64 %73, i64 %75
%76 = load float, float* %arrayidx30.i, align 4, !tbaa !19, !llvm.access.group !32
%add32.i = add i32 %mul31.i, %conv21.i
%idxprom33.i = zext i32 %add32.i to i64
%arrayidx34.i = getelementptr inbounds float, float* %3, i64 %idxprom33.i
store float %76, float* %arrayidx34.i, align 4, !tbaa !19, !llvm.access.group !32
%77 = or i64 %_local_id_x.1, 1
%add20.i.1 = add i64 %77, %mul7.i
%conv21.i.1 = trunc i64 %add20.i.1 to i32
%linear_xyz_idx8.i.1 = add i64 %zy_sum7.i, %77
%78 = getelementptr i64, i64* %.conv4.pocl_context.i, i64 %linear_xyz_idx8.i.1
%79 = load i64, i64* %78, align 8, !llvm.access.group !32
%80 = getelementptr i64, i64* %.conv8.pocl_context.i, i64 %linear_xyz_idx8.i.1
%81 = load i64, i64* %80, align 8, !llvm.access.group !32
%arrayidx30.i.1 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %4, i64 0, i64 %79, i64 %81
%82 = load float, float* %arrayidx30.i.1, align 4, !tbaa !19, !llvm.access.group !32
%add32.i.1 = add i32 %mul31.i, %conv21.i.1
%idxprom33.i.1 = zext i32 %add32.i.1 to i64
%arrayidx34.i.1 = getelementptr inbounds float, float* %3, i64 %idxprom33.i.1
store float %82, float* %arrayidx34.i.1, align 4, !tbaa !19, !llvm.access.group !32
%83 = or i64 %_local_id_x.1, 2
%add20.i.2 = add i64 %83, %mul7.i
%conv21.i.2 = trunc i64 %add20.i.2 to i32
%linear_xyz_idx8.i.2 = add i64 %zy_sum7.i, %83
%84 = getelementptr i64, i64* %.conv4.pocl_context.i, i64 %linear_xyz_idx8.i.2
%85 = load i64, i64* %84, align 8, !llvm.access.group !32
%86 = getelementptr i64, i64* %.conv8.pocl_context.i, i64 %linear_xyz_idx8.i.2
%87 = load i64, i64* %86, align 8, !llvm.access.group !32
%arrayidx30.i.2 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %4, i64 0, i64 %85, i64 %87
%88 = load float, float* %arrayidx30.i.2, align 4, !tbaa !19, !llvm.access.group !32
%add32.i.2 = add i32 %mul31.i, %conv21.i.2
%idxprom33.i.2 = zext i32 %add32.i.2 to i64
%arrayidx34.i.2 = getelementptr inbounds float, float* %3, i64 %idxprom33.i.2
store float %88, float* %arrayidx34.i.2, align 4, !tbaa !19, !llvm.access.group !32
%89 = or i64 %_local_id_x.1, 3
%add20.i.3 = add i64 %89, %mul7.i
%conv21.i.3 = trunc i64 %add20.i.3 to i32
%linear_xyz_idx8.i.3 = add i64 %zy_sum7.i, %89
%90 = getelementptr i64, i64* %.conv4.pocl_context.i, i64 %linear_xyz_idx8.i.3
%91 = load i64, i64* %90, align 8, !llvm.access.group !32
%92 = getelementptr i64, i64* %.conv8.pocl_context.i, i64 %linear_xyz_idx8.i.3
%93 = load i64, i64* %92, align 8, !llvm.access.group !32
%arrayidx30.i.3 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %4, i64 0, i64 %91, i64 %93
%94 = load float, float* %arrayidx30.i.3, align 4, !tbaa !19, !llvm.access.group !32
%add32.i.3 = add i32 %mul31.i, %conv21.i.3
%idxprom33.i.3 = zext i32 %add32.i.3 to i64
%arrayidx34.i.3 = getelementptr inbounds float, float* %3, i64 %idxprom33.i.3
store float %94, float* %arrayidx34.i.3, align 4, !tbaa !19, !llvm.access.group !32
%95 = or i64 %_local_id_x.1, 4
%add20.i.4 = add i64 %95, %mul7.i
%conv21.i.4 = trunc i64 %add20.i.4 to i32
%linear_xyz_idx8.i.4 = add i64 %zy_sum7.i, %95
%96 = getelementptr i64, i64* %.conv4.pocl_context.i, i64 %linear_xyz_idx8.i.4
%97 = load i64, i64* %96, align 8, !llvm.access.group !32
%98 = getelementptr i64, i64* %.conv8.pocl_context.i, i64 %linear_xyz_idx8.i.4
%99 = load i64, i64* %98, align 8, !llvm.access.group !32
%arrayidx30.i.4 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %4, i64 0, i64 %97, i64 %99
%100 = load float, float* %arrayidx30.i.4, align 4, !tbaa !19, !llvm.access.group !32
%add32.i.4 = add i32 %mul31.i, %conv21.i.4
%idxprom33.i.4 = zext i32 %add32.i.4 to i64
%arrayidx34.i.4 = getelementptr inbounds float, float* %3, i64 %idxprom33.i.4
store float %100, float* %arrayidx34.i.4, align 4, !tbaa !19, !llvm.access.group !32
%101 = or i64 %_local_id_x.1, 5
%add20.i.5 = add i64 %101, %mul7.i
%conv21.i.5 = trunc i64 %add20.i.5 to i32
%linear_xyz_idx8.i.5 = add i64 %zy_sum7.i, %101
%102 = getelementptr i64, i64* %.conv4.pocl_context.i, i64 %linear_xyz_idx8.i.5
%103 = load i64, i64* %102, align 8, !llvm.access.group !32
%104 = getelementptr i64, i64* %.conv8.pocl_context.i, i64 %linear_xyz_idx8.i.5
%105 = load i64, i64* %104, align 8, !llvm.access.group !32
%arrayidx30.i.5 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %4, i64 0, i64 %103, i64 %105
%106 = load float, float* %arrayidx30.i.5, align 4, !tbaa !19, !llvm.access.group !32
%add32.i.5 = add i32 %mul31.i, %conv21.i.5
%idxprom33.i.5 = zext i32 %add32.i.5 to i64
%arrayidx34.i.5 = getelementptr inbounds float, float* %3, i64 %idxprom33.i.5
store float %106, float* %arrayidx34.i.5, align 4, !tbaa !19, !llvm.access.group !32
%107 = or i64 %_local_id_x.1, 6
%add20.i.6 = add i64 %107, %mul7.i
%conv21.i.6 = trunc i64 %add20.i.6 to i32
%linear_xyz_idx8.i.6 = add i64 %zy_sum7.i, %107
%108 = getelementptr i64, i64* %.conv4.pocl_context.i, i64 %linear_xyz_idx8.i.6
%109 = load i64, i64* %108, align 8, !llvm.access.group !32
%110 = getelementptr i64, i64* %.conv8.pocl_context.i, i64 %linear_xyz_idx8.i.6
%111 = load i64, i64* %110, align 8, !llvm.access.group !32
%arrayidx30.i.6 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %4, i64 0, i64 %109, i64 %111
%112 = load float, float* %arrayidx30.i.6, align 4, !tbaa !19, !llvm.access.group !32
%add32.i.6 = add i32 %mul31.i, %conv21.i.6
%idxprom33.i.6 = zext i32 %add32.i.6 to i64
%arrayidx34.i.6 = getelementptr inbounds float, float* %3, i64 %idxprom33.i.6
store float %112, float* %arrayidx34.i.6, align 4, !tbaa !19, !llvm.access.group !32
%113 = or i64 %_local_id_x.1, 7
%add20.i.7 = add i64 %113, %mul7.i
%conv21.i.7 = trunc i64 %add20.i.7 to i32
%linear_xyz_idx8.i.7 = add i64 %zy_sum7.i, %113
%114 = getelementptr i64, i64* %.conv4.pocl_context.i, i64 %linear_xyz_idx8.i.7
%115 = load i64, i64* %114, align 8, !llvm.access.group !32
%116 = getelementptr i64, i64* %.conv8.pocl_context.i, i64 %linear_xyz_idx8.i.7
%117 = load i64, i64* %116, align 8, !llvm.access.group !32
%arrayidx30.i.7 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %4, i64 0, i64 %115, i64 %117
%118 = load float, float* %arrayidx30.i.7, align 4, !tbaa !19, !llvm.access.group !32
%add32.i.7 = add i32 %mul31.i, %conv21.i.7
%idxprom33.i.7 = zext i32 %add32.i.7 to i64
%arrayidx34.i.7 = getelementptr inbounds float, float* %3, i64 %idxprom33.i.7
store float %118, float* %arrayidx34.i.7, align 4, !tbaa !19, !llvm.access.group !32
%119 = add nuw i64 %_local_id_x.1, 8
%niter.nsub.7 = add i64 %niter, -8
%niter.ncmp.7 = icmp eq i64 %niter.nsub.7, 0
br i1 %niter.ncmp.7, label %pregion_for_end.i.unr-lcssa.loopexit, label %pregion_for_entry.entry.postbarrier.i, !llvm.loop !38
transpose.exit: ; preds = %pregion_for_end39.i
ret void
}
; Function Attrs: nofree norecurse nounwind
define void @_pocl_kernel_transpose_workgroup(i8** nocapture readonly %0, { [3 x i64], [3 x i64], [3 x i64], i8*, i32*, i32, i32 }* nocapture readonly %1, i64 %2, i64 %3, i64 %4) local_unnamed_addr #1 {
%6 = bitcast i8** %0 to i32**
%7 = load i32*, i32** %6, align 8
%8 = load i32, i32* %7, align 4
%9 = getelementptr i8*, i8** %0, i64 1
%10 = bitcast i8** %9 to i32**
%11 = load i32*, i32** %10, align 8
%12 = load i32, i32* %11, align 4
%13 = getelementptr i8*, i8** %0, i64 2
%14 = bitcast i8** %13 to float***
%15 = load float**, float*** %14, align 8
%16 = load float*, float** %15, align 8
%17 = getelementptr i8*, i8** %0, i64 3
%18 = bitcast i8** %17 to float***
%19 = load float**, float*** %18, align 8
%20 = load float*, float** %19, align 8
%21 = getelementptr i8*, i8** %0, i64 4
%22 = bitcast i8** %21 to [8 x [8 x float]]***
%23 = load [8 x [8 x float]]**, [8 x [8 x float]]*** %22, align 8
%24 = load [8 x [8 x float]]*, [8 x [8 x float]]** %23, align 8
%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 }* %1, i64 0, i32 2, i64 0
%26 = load i64, i64* %25, align 8
%27 = getelementptr { [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, i64 0, i32 2, i64 1
%28 = load i64, i64* %27, align 8
%29 = getelementptr { [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, i64 0, i32 2, i64 2
%30 = load i64, i64* %29, align 8
%tmp16.i.i = mul i64 %28, %26
%num_wi17.i.i = mul i64 %tmp16.i.i, %30
%.conv8.pocl_context.i.i = alloca i64, i64 %num_wi17.i.i, align 64
%.conv4.pocl_context.i.i = alloca i64, i64 %num_wi17.i.i, align 64
%mul.i.i = shl i64 %2, 3
%mul7.i.i = shl i64 %3, 3
%31 = icmp ugt i64 %26, 1
%umax1 = select i1 %31, i64 %26, i64 1
%32 = add i64 %umax1, -1
%xtraiter2 = and i64 %umax1, 7
%33 = icmp ult i64 %32, 7
%unroll_iter5 = sub i64 %umax1, %xtraiter2
%lcmp.mod4 = icmp eq i64 %xtraiter2, 0
br label %pregion_for_entry.pregion_for_init50.i.i
pregion_for_entry.pregion_for_init50.i.i: ; preds = %pregion_for_end51.i.i, %5
%_local_id_z.i.0 = phi i64 [ 0, %5 ], [ %34, %pregion_for_end51.i.i ]
%tmp1.i.i = mul i64 %_local_id_z.i.0, %tmp16.i.i
br label %pregion_for_entry.pregion_for_init46.i.i
pregion_for_entry.pregion_for_init46.i.i: ; preds = %pregion_for_end47.i.i, %pregion_for_entry.pregion_for_init50.i.i
%_local_id_y.i.0 = phi i64 [ 0, %pregion_for_entry.pregion_for_init50.i.i ], [ %43, %pregion_for_end47.i.i ]
%ls_x_y.i.i = mul i64 %_local_id_y.i.0, %26
%zy_sum.i.i = add i64 %ls_x_y.i.i, %tmp1.i.i
%conv8.i.i = and i64 %_local_id_y.i.0, 4294967295
%add9.i.i = add i64 %_local_id_y.i.0, %mul7.i.i
%conv10.i.i = trunc i64 %add9.i.i to i32
%mul11.i.i = mul i32 %8, %conv10.i.i
br i1 %33, label %pregion_for_end47.i.i.unr-lcssa, label %pregion_for_entry.entry.prebarrier.i.i.preheader
pregion_for_entry.entry.prebarrier.i.i.preheader: ; preds = %pregion_for_entry.pregion_for_init46.i.i
br label %pregion_for_entry.entry.prebarrier.i.i
pregion_for_end51.i.i: ; preds = %pregion_for_end47.i.i
%34 = add nuw i64 %_local_id_z.i.0, 1
%35 = icmp ult i64 %34, %30
br i1 %35, label %pregion_for_entry.pregion_for_init50.i.i, label %pregion_for_entry.pregion_for_init42.i.i.preheader, !llvm.loop !13
pregion_for_entry.pregion_for_init42.i.i.preheader: ; preds = %pregion_for_end51.i.i
%36 = icmp ugt i64 %26, 1
%umax = select i1 %36, i64 %26, i64 1
%37 = add i64 %umax, -1
%xtraiter = and i64 %umax, 7
%38 = icmp ult i64 %37, 7
%unroll_iter = sub i64 %umax, %xtraiter
%lcmp.mod = icmp eq i64 %xtraiter, 0
br label %pregion_for_entry.pregion_for_init42.i.i
pregion_for_end47.i.i.unr-lcssa.loopexit: ; preds = %pregion_for_entry.entry.prebarrier.i.i
%.lcssa8 = phi i64 [ %76, %pregion_for_entry.entry.prebarrier.i.i ]
br label %pregion_for_end47.i.i.unr-lcssa
pregion_for_end47.i.i.unr-lcssa: ; preds = %pregion_for_end47.i.i.unr-lcssa.loopexit, %pregion_for_entry.pregion_for_init46.i.i
%_local_id_x.i.0.unr = phi i64 [ 0, %pregion_for_entry.pregion_for_init46.i.i ], [ %.lcssa8, %pregion_for_end47.i.i.unr-lcssa.loopexit ]
br i1 %lcmp.mod4, label %pregion_for_end47.i.i, label %pregion_for_entry.entry.prebarrier.i.i.epil.preheader
pregion_for_entry.entry.prebarrier.i.i.epil.preheader: ; preds = %pregion_for_end47.i.i.unr-lcssa
br label %pregion_for_entry.entry.prebarrier.i.i.epil
pregion_for_entry.entry.prebarrier.i.i.epil: ; preds = %pregion_for_entry.entry.prebarrier.i.i.epil, %pregion_for_entry.entry.prebarrier.i.i.epil.preheader
%_local_id_x.i.0.epil = phi i64 [ %42, %pregion_for_entry.entry.prebarrier.i.i.epil ], [ %_local_id_x.i.0.unr, %pregion_for_entry.entry.prebarrier.i.i.epil.preheader ]
%epil.iter3 = phi i64 [ %epil.iter3.sub, %pregion_for_entry.entry.prebarrier.i.i.epil ], [ %xtraiter2, %pregion_for_entry.entry.prebarrier.i.i.epil.preheader ]
%conv4.i.i.epil = and i64 %_local_id_x.i.0.epil, 4294967295
%linear_xyz_idx.i.i.epil = add i64 %zy_sum.i.i, %_local_id_x.i.0.epil
%39 = getelementptr i64, i64* %.conv4.pocl_context.i.i, i64 %linear_xyz_idx.i.i.epil
store i64 %conv4.i.i.epil, i64* %39, align 8, !llvm.access.group !16
%add.i.i.epil = add i64 %_local_id_x.i.0.epil, %mul.i.i
%conv5.i.i.epil = trunc i64 %add.i.i.epil to i32
%40 = getelementptr i64, i64* %.conv8.pocl_context.i.i, i64 %linear_xyz_idx.i.i.epil
store i64 %conv8.i.i, i64* %40, align 8, !llvm.access.group !16
%add12.i.i.epil = add i32 %mul11.i.i, %conv5.i.i.epil
%idxprom.i.i.epil = zext i32 %add12.i.i.epil to i64
%arrayidx.i.i.epil = getelementptr inbounds float, float* %16, i64 %idxprom.i.i.epil
%41 = load float, float* %arrayidx.i.i.epil, align 4, !tbaa !19, !llvm.access.group !16
%arrayidx16.i.i.epil = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %24, i64 0, i64 %conv8.i.i, i64 %conv4.i.i.epil
store float %41, float* %arrayidx16.i.i.epil, align 4, !tbaa !19, !llvm.access.group !16
%42 = add nuw i64 %_local_id_x.i.0.epil, 1
%epil.iter3.sub = add i64 %epil.iter3, -1
%epil.iter3.cmp = icmp eq i64 %epil.iter3.sub, 0
br i1 %epil.iter3.cmp, label %pregion_for_end47.i.i.loopexit, label %pregion_for_entry.entry.prebarrier.i.i.epil, !llvm.loop !40
pregion_for_end47.i.i.loopexit: ; preds = %pregion_for_entry.entry.prebarrier.i.i.epil
br label %pregion_for_end47.i.i
pregion_for_end47.i.i: ; preds = %pregion_for_end47.i.i.loopexit, %pregion_for_end47.i.i.unr-lcssa
%43 = add nuw i64 %_local_id_y.i.0, 1
%44 = icmp ult i64 %43, %28
br i1 %44, label %pregion_for_entry.pregion_for_init46.i.i, label %pregion_for_end51.i.i, !llvm.loop !25
pregion_for_entry.entry.prebarrier.i.i: ; preds = %pregion_for_entry.entry.prebarrier.i.i, %pregion_for_entry.entry.prebarrier.i.i.preheader
%_local_id_x.i.0 = phi i64 [ %76, %pregion_for_entry.entry.prebarrier.i.i ], [ 0, %pregion_for_entry.entry.prebarrier.i.i.preheader ]
%niter6 = phi i64 [ %niter6.nsub.7, %pregion_for_entry.entry.prebarrier.i.i ], [ %unroll_iter5, %pregion_for_entry.entry.prebarrier.i.i.preheader ]
%conv4.i.i = and i64 %_local_id_x.i.0, 4294967288
%linear_xyz_idx.i.i = add i64 %zy_sum.i.i, %_local_id_x.i.0
%45 = getelementptr i64, i64* %.conv4.pocl_context.i.i, i64 %linear_xyz_idx.i.i
store i64 %conv4.i.i, i64* %45, align 8, !llvm.access.group !16
%add.i.i = add i64 %_local_id_x.i.0, %mul.i.i
%conv5.i.i = trunc i64 %add.i.i to i32
%46 = getelementptr i64, i64* %.conv8.pocl_context.i.i, i64 %linear_xyz_idx.i.i
store i64 %conv8.i.i, i64* %46, align 8, !llvm.access.group !16
%add12.i.i = add i32 %mul11.i.i, %conv5.i.i
%idxprom.i.i = zext i32 %add12.i.i to i64
%arrayidx.i.i = getelementptr inbounds float, float* %16, i64 %idxprom.i.i
%47 = load float, float* %arrayidx.i.i, align 4, !tbaa !19, !llvm.access.group !16
%arrayidx16.i.i = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %24, i64 0, i64 %conv8.i.i, i64 %conv4.i.i
store float %47, float* %arrayidx16.i.i, align 4, !tbaa !19, !llvm.access.group !16
%48 = or i64 %_local_id_x.i.0, 1
%conv4.i.i.1 = and i64 %48, 4294967289
%linear_xyz_idx.i.i.1 = add i64 %zy_sum.i.i, %48
%49 = getelementptr i64, i64* %.conv4.pocl_context.i.i, i64 %linear_xyz_idx.i.i.1
store i64 %conv4.i.i.1, i64* %49, align 8, !llvm.access.group !16
%add.i.i.1 = add i64 %48, %mul.i.i
%conv5.i.i.1 = trunc i64 %add.i.i.1 to i32
%50 = getelementptr i64, i64* %.conv8.pocl_context.i.i, i64 %linear_xyz_idx.i.i.1
store i64 %conv8.i.i, i64* %50, align 8, !llvm.access.group !16
%add12.i.i.1 = add i32 %mul11.i.i, %conv5.i.i.1
%idxprom.i.i.1 = zext i32 %add12.i.i.1 to i64
%arrayidx.i.i.1 = getelementptr inbounds float, float* %16, i64 %idxprom.i.i.1
%51 = load float, float* %arrayidx.i.i.1, align 4, !tbaa !19, !llvm.access.group !16
%arrayidx16.i.i.1 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %24, i64 0, i64 %conv8.i.i, i64 %conv4.i.i.1
store float %51, float* %arrayidx16.i.i.1, align 4, !tbaa !19, !llvm.access.group !16
%52 = or i64 %_local_id_x.i.0, 2
%conv4.i.i.2 = and i64 %52, 4294967290
%linear_xyz_idx.i.i.2 = add i64 %zy_sum.i.i, %52
%53 = getelementptr i64, i64* %.conv4.pocl_context.i.i, i64 %linear_xyz_idx.i.i.2
store i64 %conv4.i.i.2, i64* %53, align 8, !llvm.access.group !16
%add.i.i.2 = add i64 %52, %mul.i.i
%conv5.i.i.2 = trunc i64 %add.i.i.2 to i32
%54 = getelementptr i64, i64* %.conv8.pocl_context.i.i, i64 %linear_xyz_idx.i.i.2
store i64 %conv8.i.i, i64* %54, align 8, !llvm.access.group !16
%add12.i.i.2 = add i32 %mul11.i.i, %conv5.i.i.2
%idxprom.i.i.2 = zext i32 %add12.i.i.2 to i64
%arrayidx.i.i.2 = getelementptr inbounds float, float* %16, i64 %idxprom.i.i.2
%55 = load float, float* %arrayidx.i.i.2, align 4, !tbaa !19, !llvm.access.group !16
%arrayidx16.i.i.2 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %24, i64 0, i64 %conv8.i.i, i64 %conv4.i.i.2
store float %55, float* %arrayidx16.i.i.2, align 4, !tbaa !19, !llvm.access.group !16
%56 = or i64 %_local_id_x.i.0, 3
%conv4.i.i.3 = and i64 %56, 4294967291
%linear_xyz_idx.i.i.3 = add i64 %zy_sum.i.i, %56
%57 = getelementptr i64, i64* %.conv4.pocl_context.i.i, i64 %linear_xyz_idx.i.i.3
store i64 %conv4.i.i.3, i64* %57, align 8, !llvm.access.group !16
%add.i.i.3 = add i64 %56, %mul.i.i
%conv5.i.i.3 = trunc i64 %add.i.i.3 to i32
%58 = getelementptr i64, i64* %.conv8.pocl_context.i.i, i64 %linear_xyz_idx.i.i.3
store i64 %conv8.i.i, i64* %58, align 8, !llvm.access.group !16
%add12.i.i.3 = add i32 %mul11.i.i, %conv5.i.i.3
%idxprom.i.i.3 = zext i32 %add12.i.i.3 to i64
%arrayidx.i.i.3 = getelementptr inbounds float, float* %16, i64 %idxprom.i.i.3
%59 = load float, float* %arrayidx.i.i.3, align 4, !tbaa !19, !llvm.access.group !16
%arrayidx16.i.i.3 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %24, i64 0, i64 %conv8.i.i, i64 %conv4.i.i.3
store float %59, float* %arrayidx16.i.i.3, align 4, !tbaa !19, !llvm.access.group !16
%60 = or i64 %_local_id_x.i.0, 4
%conv4.i.i.4 = and i64 %60, 4294967292
%linear_xyz_idx.i.i.4 = add i64 %zy_sum.i.i, %60
%61 = getelementptr i64, i64* %.conv4.pocl_context.i.i, i64 %linear_xyz_idx.i.i.4
store i64 %conv4.i.i.4, i64* %61, align 8, !llvm.access.group !16
%add.i.i.4 = add i64 %60, %mul.i.i
%conv5.i.i.4 = trunc i64 %add.i.i.4 to i32
%62 = getelementptr i64, i64* %.conv8.pocl_context.i.i, i64 %linear_xyz_idx.i.i.4
store i64 %conv8.i.i, i64* %62, align 8, !llvm.access.group !16
%add12.i.i.4 = add i32 %mul11.i.i, %conv5.i.i.4
%idxprom.i.i.4 = zext i32 %add12.i.i.4 to i64
%arrayidx.i.i.4 = getelementptr inbounds float, float* %16, i64 %idxprom.i.i.4
%63 = load float, float* %arrayidx.i.i.4, align 4, !tbaa !19, !llvm.access.group !16
%arrayidx16.i.i.4 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %24, i64 0, i64 %conv8.i.i, i64 %conv4.i.i.4
store float %63, float* %arrayidx16.i.i.4, align 4, !tbaa !19, !llvm.access.group !16
%64 = or i64 %_local_id_x.i.0, 5
%conv4.i.i.5 = and i64 %64, 4294967293
%linear_xyz_idx.i.i.5 = add i64 %zy_sum.i.i, %64
%65 = getelementptr i64, i64* %.conv4.pocl_context.i.i, i64 %linear_xyz_idx.i.i.5
store i64 %conv4.i.i.5, i64* %65, align 8, !llvm.access.group !16
%add.i.i.5 = add i64 %64, %mul.i.i
%conv5.i.i.5 = trunc i64 %add.i.i.5 to i32
%66 = getelementptr i64, i64* %.conv8.pocl_context.i.i, i64 %linear_xyz_idx.i.i.5
store i64 %conv8.i.i, i64* %66, align 8, !llvm.access.group !16
%add12.i.i.5 = add i32 %mul11.i.i, %conv5.i.i.5
%idxprom.i.i.5 = zext i32 %add12.i.i.5 to i64
%arrayidx.i.i.5 = getelementptr inbounds float, float* %16, i64 %idxprom.i.i.5
%67 = load float, float* %arrayidx.i.i.5, align 4, !tbaa !19, !llvm.access.group !16
%arrayidx16.i.i.5 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %24, i64 0, i64 %conv8.i.i, i64 %conv4.i.i.5
store float %67, float* %arrayidx16.i.i.5, align 4, !tbaa !19, !llvm.access.group !16
%68 = or i64 %_local_id_x.i.0, 6
%conv4.i.i.6 = and i64 %68, 4294967294
%linear_xyz_idx.i.i.6 = add i64 %zy_sum.i.i, %68
%69 = getelementptr i64, i64* %.conv4.pocl_context.i.i, i64 %linear_xyz_idx.i.i.6
store i64 %conv4.i.i.6, i64* %69, align 8, !llvm.access.group !16
%add.i.i.6 = add i64 %68, %mul.i.i
%conv5.i.i.6 = trunc i64 %add.i.i.6 to i32
%70 = getelementptr i64, i64* %.conv8.pocl_context.i.i, i64 %linear_xyz_idx.i.i.6
store i64 %conv8.i.i, i64* %70, align 8, !llvm.access.group !16
%add12.i.i.6 = add i32 %mul11.i.i, %conv5.i.i.6
%idxprom.i.i.6 = zext i32 %add12.i.i.6 to i64
%arrayidx.i.i.6 = getelementptr inbounds float, float* %16, i64 %idxprom.i.i.6
%71 = load float, float* %arrayidx.i.i.6, align 4, !tbaa !19, !llvm.access.group !16
%arrayidx16.i.i.6 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %24, i64 0, i64 %conv8.i.i, i64 %conv4.i.i.6
store float %71, float* %arrayidx16.i.i.6, align 4, !tbaa !19, !llvm.access.group !16
%72 = or i64 %_local_id_x.i.0, 7
%conv4.i.i.7 = and i64 %72, 4294967295
%linear_xyz_idx.i.i.7 = add i64 %zy_sum.i.i, %72
%73 = getelementptr i64, i64* %.conv4.pocl_context.i.i, i64 %linear_xyz_idx.i.i.7
store i64 %conv4.i.i.7, i64* %73, align 8, !llvm.access.group !16
%add.i.i.7 = add i64 %72, %mul.i.i
%conv5.i.i.7 = trunc i64 %add.i.i.7 to i32
%74 = getelementptr i64, i64* %.conv8.pocl_context.i.i, i64 %linear_xyz_idx.i.i.7
store i64 %conv8.i.i, i64* %74, align 8, !llvm.access.group !16
%add12.i.i.7 = add i32 %mul11.i.i, %conv5.i.i.7
%idxprom.i.i.7 = zext i32 %add12.i.i.7 to i64
%arrayidx.i.i.7 = getelementptr inbounds float, float* %16, i64 %idxprom.i.i.7
%75 = load float, float* %arrayidx.i.i.7, align 4, !tbaa !19, !llvm.access.group !16
%arrayidx16.i.i.7 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %24, i64 0, i64 %conv8.i.i, i64 %conv4.i.i.7
store float %75, float* %arrayidx16.i.i.7, align 4, !tbaa !19, !llvm.access.group !16
%76 = add nuw i64 %_local_id_x.i.0, 8
%niter6.nsub.7 = add i64 %niter6, -8
%niter6.ncmp.7 = icmp eq i64 %niter6.nsub.7, 0
br i1 %niter6.ncmp.7, label %pregion_for_end47.i.i.unr-lcssa.loopexit, label %pregion_for_entry.entry.prebarrier.i.i, !llvm.loop !27
pregion_for_entry.pregion_for_init42.i.i: ; preds = %pregion_for_end39.i.i, %pregion_for_entry.pregion_for_init42.i.i.preheader
%_local_id_z.i.1 = phi i64 [ %77, %pregion_for_end39.i.i ], [ 0, %pregion_for_entry.pregion_for_init42.i.i.preheader ]
%tmp5.i.i = mul i64 %_local_id_z.i.1, %tmp16.i.i
br label %pregion_for_entry.pregion_for_init.i.i
pregion_for_entry.pregion_for_init.i.i: ; preds = %pregion_for_end.i.i, %pregion_for_entry.pregion_for_init42.i.i
%_local_id_y.i.1 = phi i64 [ 0, %pregion_for_entry.pregion_for_init42.i.i ], [ %85, %pregion_for_end.i.i ]
%add25.i.i = add i64 %_local_id_y.i.1, %mul.i.i
%conv26.i.i = trunc i64 %add25.i.i to i32
%ls_x_y6.i.i = mul i64 %_local_id_y.i.1, %26
%zy_sum7.i.i = add i64 %ls_x_y6.i.i, %tmp5.i.i
%mul31.i.i = mul i32 %12, %conv26.i.i
br i1 %38, label %pregion_for_end.i.i.unr-lcssa, label %pregion_for_entry.entry.postbarrier.i.i.preheader
pregion_for_entry.entry.postbarrier.i.i.preheader: ; preds = %pregion_for_entry.pregion_for_init.i.i
br label %pregion_for_entry.entry.postbarrier.i.i
pregion_for_end39.i.i: ; preds = %pregion_for_end.i.i
%77 = add nuw i64 %_local_id_z.i.1, 1
%78 = icmp ult i64 %77, %30
br i1 %78, label %pregion_for_entry.pregion_for_init42.i.i, label %_pocl_kernel_transpose.exit, !llvm.loop !29
pregion_for_end.i.i.unr-lcssa.loopexit: ; preds = %pregion_for_entry.entry.postbarrier.i.i
%.lcssa = phi i64 [ %134, %pregion_for_entry.entry.postbarrier.i.i ]
br label %pregion_for_end.i.i.unr-lcssa
pregion_for_end.i.i.unr-lcssa: ; preds = %pregion_for_end.i.i.unr-lcssa.loopexit, %pregion_for_entry.pregion_for_init.i.i
%_local_id_x.i.1.unr = phi i64 [ 0, %pregion_for_entry.pregion_for_init.i.i ], [ %.lcssa, %pregion_for_end.i.i.unr-lcssa.loopexit ]
br i1 %lcmp.mod, label %pregion_for_end.i.i, label %pregion_for_entry.entry.postbarrier.i.i.epil.preheader
pregion_for_entry.entry.postbarrier.i.i.epil.preheader: ; preds = %pregion_for_end.i.i.unr-lcssa
br label %pregion_for_entry.entry.postbarrier.i.i.epil
pregion_for_entry.entry.postbarrier.i.i.epil: ; preds = %pregion_for_entry.entry.postbarrier.i.i.epil, %pregion_for_entry.entry.postbarrier.i.i.epil.preheader
%_local_id_x.i.1.epil = phi i64 [ %84, %pregion_for_entry.entry.postbarrier.i.i.epil ], [ %_local_id_x.i.1.unr, %pregion_for_entry.entry.postbarrier.i.i.epil.preheader ]
%epil.iter = phi i64 [ %epil.iter.sub, %pregion_for_entry.entry.postbarrier.i.i.epil ], [ %xtraiter, %pregion_for_entry.entry.postbarrier.i.i.epil.preheader ]
%add20.i.i.epil = add i64 %_local_id_x.i.1.epil, %mul7.i.i
%conv21.i.i.epil = trunc i64 %add20.i.i.epil to i32
%linear_xyz_idx8.i.i.epil = add i64 %zy_sum7.i.i, %_local_id_x.i.1.epil
%79 = getelementptr i64, i64* %.conv4.pocl_context.i.i, i64 %linear_xyz_idx8.i.i.epil
%80 = load i64, i64* %79, align 8, !llvm.access.group !32
%81 = getelementptr i64, i64* %.conv8.pocl_context.i.i, i64 %linear_xyz_idx8.i.i.epil
%82 = load i64, i64* %81, align 8, !llvm.access.group !32
%arrayidx30.i.i.epil = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %24, i64 0, i64 %80, i64 %82
%83 = load float, float* %arrayidx30.i.i.epil, align 4, !tbaa !19, !llvm.access.group !32
%add32.i.i.epil = add i32 %mul31.i.i, %conv21.i.i.epil
%idxprom33.i.i.epil = zext i32 %add32.i.i.epil to i64
%arrayidx34.i.i.epil = getelementptr inbounds float, float* %20, i64 %idxprom33.i.i.epil
store float %83, float* %arrayidx34.i.i.epil, align 4, !tbaa !19, !llvm.access.group !32
%84 = add nuw i64 %_local_id_x.i.1.epil, 1
%epil.iter.sub = add i64 %epil.iter, -1
%epil.iter.cmp = icmp eq i64 %epil.iter.sub, 0
br i1 %epil.iter.cmp, label %pregion_for_end.i.i.loopexit, label %pregion_for_entry.entry.postbarrier.i.i.epil, !llvm.loop !41
pregion_for_end.i.i.loopexit: ; preds = %pregion_for_entry.entry.postbarrier.i.i.epil
br label %pregion_for_end.i.i
pregion_for_end.i.i: ; preds = %pregion_for_end.i.i.loopexit, %pregion_for_end.i.i.unr-lcssa
%85 = add nuw i64 %_local_id_y.i.1, 1
%86 = icmp ult i64 %85, %28
br i1 %86, label %pregion_for_entry.pregion_for_init.i.i, label %pregion_for_end39.i.i, !llvm.loop !36
pregion_for_entry.entry.postbarrier.i.i: ; preds = %pregion_for_entry.entry.postbarrier.i.i, %pregion_for_entry.entry.postbarrier.i.i.preheader
%_local_id_x.i.1 = phi i64 [ %134, %pregion_for_entry.entry.postbarrier.i.i ], [ 0, %pregion_for_entry.entry.postbarrier.i.i.preheader ]
%niter = phi i64 [ %niter.nsub.7, %pregion_for_entry.entry.postbarrier.i.i ], [ %unroll_iter, %pregion_for_entry.entry.postbarrier.i.i.preheader ]
%add20.i.i = add i64 %_local_id_x.i.1, %mul7.i.i
%conv21.i.i = trunc i64 %add20.i.i to i32
%linear_xyz_idx8.i.i = add i64 %zy_sum7.i.i, %_local_id_x.i.1
%87 = getelementptr i64, i64* %.conv4.pocl_context.i.i, i64 %linear_xyz_idx8.i.i
%88 = load i64, i64* %87, align 8, !llvm.access.group !32
%89 = getelementptr i64, i64* %.conv8.pocl_context.i.i, i64 %linear_xyz_idx8.i.i
%90 = load i64, i64* %89, align 8, !llvm.access.group !32
%arrayidx30.i.i = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %24, i64 0, i64 %88, i64 %90
%91 = load float, float* %arrayidx30.i.i, align 4, !tbaa !19, !llvm.access.group !32
%add32.i.i = add i32 %mul31.i.i, %conv21.i.i
%idxprom33.i.i = zext i32 %add32.i.i to i64
%arrayidx34.i.i = getelementptr inbounds float, float* %20, i64 %idxprom33.i.i
store float %91, float* %arrayidx34.i.i, align 4, !tbaa !19, !llvm.access.group !32
%92 = or i64 %_local_id_x.i.1, 1
%add20.i.i.1 = add i64 %92, %mul7.i.i
%conv21.i.i.1 = trunc i64 %add20.i.i.1 to i32
%linear_xyz_idx8.i.i.1 = add i64 %zy_sum7.i.i, %92
%93 = getelementptr i64, i64* %.conv4.pocl_context.i.i, i64 %linear_xyz_idx8.i.i.1
%94 = load i64, i64* %93, align 8, !llvm.access.group !32
%95 = getelementptr i64, i64* %.conv8.pocl_context.i.i, i64 %linear_xyz_idx8.i.i.1
%96 = load i64, i64* %95, align 8, !llvm.access.group !32
%arrayidx30.i.i.1 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %24, i64 0, i64 %94, i64 %96
%97 = load float, float* %arrayidx30.i.i.1, align 4, !tbaa !19, !llvm.access.group !32
%add32.i.i.1 = add i32 %mul31.i.i, %conv21.i.i.1
%idxprom33.i.i.1 = zext i32 %add32.i.i.1 to i64
%arrayidx34.i.i.1 = getelementptr inbounds float, float* %20, i64 %idxprom33.i.i.1
store float %97, float* %arrayidx34.i.i.1, align 4, !tbaa !19, !llvm.access.group !32
%98 = or i64 %_local_id_x.i.1, 2
%add20.i.i.2 = add i64 %98, %mul7.i.i
%conv21.i.i.2 = trunc i64 %add20.i.i.2 to i32
%linear_xyz_idx8.i.i.2 = add i64 %zy_sum7.i.i, %98
%99 = getelementptr i64, i64* %.conv4.pocl_context.i.i, i64 %linear_xyz_idx8.i.i.2
%100 = load i64, i64* %99, align 8, !llvm.access.group !32
%101 = getelementptr i64, i64* %.conv8.pocl_context.i.i, i64 %linear_xyz_idx8.i.i.2
%102 = load i64, i64* %101, align 8, !llvm.access.group !32
%arrayidx30.i.i.2 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %24, i64 0, i64 %100, i64 %102
%103 = load float, float* %arrayidx30.i.i.2, align 4, !tbaa !19, !llvm.access.group !32
%add32.i.i.2 = add i32 %mul31.i.i, %conv21.i.i.2
%idxprom33.i.i.2 = zext i32 %add32.i.i.2 to i64
%arrayidx34.i.i.2 = getelementptr inbounds float, float* %20, i64 %idxprom33.i.i.2
store float %103, float* %arrayidx34.i.i.2, align 4, !tbaa !19, !llvm.access.group !32
%104 = or i64 %_local_id_x.i.1, 3
%add20.i.i.3 = add i64 %104, %mul7.i.i
%conv21.i.i.3 = trunc i64 %add20.i.i.3 to i32
%linear_xyz_idx8.i.i.3 = add i64 %zy_sum7.i.i, %104
%105 = getelementptr i64, i64* %.conv4.pocl_context.i.i, i64 %linear_xyz_idx8.i.i.3
%106 = load i64, i64* %105, align 8, !llvm.access.group !32
%107 = getelementptr i64, i64* %.conv8.pocl_context.i.i, i64 %linear_xyz_idx8.i.i.3
%108 = load i64, i64* %107, align 8, !llvm.access.group !32
%arrayidx30.i.i.3 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %24, i64 0, i64 %106, i64 %108
%109 = load float, float* %arrayidx30.i.i.3, align 4, !tbaa !19, !llvm.access.group !32
%add32.i.i.3 = add i32 %mul31.i.i, %conv21.i.i.3
%idxprom33.i.i.3 = zext i32 %add32.i.i.3 to i64
%arrayidx34.i.i.3 = getelementptr inbounds float, float* %20, i64 %idxprom33.i.i.3
store float %109, float* %arrayidx34.i.i.3, align 4, !tbaa !19, !llvm.access.group !32
%110 = or i64 %_local_id_x.i.1, 4
%add20.i.i.4 = add i64 %110, %mul7.i.i
%conv21.i.i.4 = trunc i64 %add20.i.i.4 to i32
%linear_xyz_idx8.i.i.4 = add i64 %zy_sum7.i.i, %110
%111 = getelementptr i64, i64* %.conv4.pocl_context.i.i, i64 %linear_xyz_idx8.i.i.4
%112 = load i64, i64* %111, align 8, !llvm.access.group !32
%113 = getelementptr i64, i64* %.conv8.pocl_context.i.i, i64 %linear_xyz_idx8.i.i.4
%114 = load i64, i64* %113, align 8, !llvm.access.group !32
%arrayidx30.i.i.4 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %24, i64 0, i64 %112, i64 %114
%115 = load float, float* %arrayidx30.i.i.4, align 4, !tbaa !19, !llvm.access.group !32
%add32.i.i.4 = add i32 %mul31.i.i, %conv21.i.i.4
%idxprom33.i.i.4 = zext i32 %add32.i.i.4 to i64
%arrayidx34.i.i.4 = getelementptr inbounds float, float* %20, i64 %idxprom33.i.i.4
store float %115, float* %arrayidx34.i.i.4, align 4, !tbaa !19, !llvm.access.group !32
%116 = or i64 %_local_id_x.i.1, 5
%add20.i.i.5 = add i64 %116, %mul7.i.i
%conv21.i.i.5 = trunc i64 %add20.i.i.5 to i32
%linear_xyz_idx8.i.i.5 = add i64 %zy_sum7.i.i, %116
%117 = getelementptr i64, i64* %.conv4.pocl_context.i.i, i64 %linear_xyz_idx8.i.i.5
%118 = load i64, i64* %117, align 8, !llvm.access.group !32
%119 = getelementptr i64, i64* %.conv8.pocl_context.i.i, i64 %linear_xyz_idx8.i.i.5
%120 = load i64, i64* %119, align 8, !llvm.access.group !32
%arrayidx30.i.i.5 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %24, i64 0, i64 %118, i64 %120
%121 = load float, float* %arrayidx30.i.i.5, align 4, !tbaa !19, !llvm.access.group !32
%add32.i.i.5 = add i32 %mul31.i.i, %conv21.i.i.5
%idxprom33.i.i.5 = zext i32 %add32.i.i.5 to i64
%arrayidx34.i.i.5 = getelementptr inbounds float, float* %20, i64 %idxprom33.i.i.5
store float %121, float* %arrayidx34.i.i.5, align 4, !tbaa !19, !llvm.access.group !32
%122 = or i64 %_local_id_x.i.1, 6
%add20.i.i.6 = add i64 %122, %mul7.i.i
%conv21.i.i.6 = trunc i64 %add20.i.i.6 to i32
%linear_xyz_idx8.i.i.6 = add i64 %zy_sum7.i.i, %122
%123 = getelementptr i64, i64* %.conv4.pocl_context.i.i, i64 %linear_xyz_idx8.i.i.6
%124 = load i64, i64* %123, align 8, !llvm.access.group !32
%125 = getelementptr i64, i64* %.conv8.pocl_context.i.i, i64 %linear_xyz_idx8.i.i.6
%126 = load i64, i64* %125, align 8, !llvm.access.group !32
%arrayidx30.i.i.6 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %24, i64 0, i64 %124, i64 %126
%127 = load float, float* %arrayidx30.i.i.6, align 4, !tbaa !19, !llvm.access.group !32
%add32.i.i.6 = add i32 %mul31.i.i, %conv21.i.i.6
%idxprom33.i.i.6 = zext i32 %add32.i.i.6 to i64
%arrayidx34.i.i.6 = getelementptr inbounds float, float* %20, i64 %idxprom33.i.i.6
store float %127, float* %arrayidx34.i.i.6, align 4, !tbaa !19, !llvm.access.group !32
%128 = or i64 %_local_id_x.i.1, 7
%add20.i.i.7 = add i64 %128, %mul7.i.i
%conv21.i.i.7 = trunc i64 %add20.i.i.7 to i32
%linear_xyz_idx8.i.i.7 = add i64 %zy_sum7.i.i, %128
%129 = getelementptr i64, i64* %.conv4.pocl_context.i.i, i64 %linear_xyz_idx8.i.i.7
%130 = load i64, i64* %129, align 8, !llvm.access.group !32
%131 = getelementptr i64, i64* %.conv8.pocl_context.i.i, i64 %linear_xyz_idx8.i.i.7
%132 = load i64, i64* %131, align 8, !llvm.access.group !32
%arrayidx30.i.i.7 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %24, i64 0, i64 %130, i64 %132
%133 = load float, float* %arrayidx30.i.i.7, align 4, !tbaa !19, !llvm.access.group !32
%add32.i.i.7 = add i32 %mul31.i.i, %conv21.i.i.7
%idxprom33.i.i.7 = zext i32 %add32.i.i.7 to i64
%arrayidx34.i.i.7 = getelementptr inbounds float, float* %20, i64 %idxprom33.i.i.7
store float %133, float* %arrayidx34.i.i.7, align 4, !tbaa !19, !llvm.access.group !32
%134 = add nuw i64 %_local_id_x.i.1, 8
%niter.nsub.7 = add i64 %niter, -8
%niter.ncmp.7 = icmp eq i64 %niter.nsub.7, 0
br i1 %niter.ncmp.7, label %pregion_for_end.i.i.unr-lcssa.loopexit, label %pregion_for_entry.entry.postbarrier.i.i, !llvm.loop !38
_pocl_kernel_transpose.exit: ; preds = %pregion_for_end39.i.i
ret void
}
; Function Attrs: nofree norecurse nounwind
define void @_pocl_kernel_transpose_workgroup_fast(i8** nocapture readonly %0, { [3 x i64], [3 x i64], [3 x i64], i8*, i32*, i32, i32 }* nocapture readonly %1, i64 %2, i64 %3, i64 %4) local_unnamed_addr #1 {
%6 = bitcast i8** %0 to i32**
%7 = load i32*, i32** %6, align 8
%8 = load i32, i32* %7, align 4
%9 = getelementptr i8*, i8** %0, i64 1
%10 = bitcast i8** %9 to i32**
%11 = load i32*, i32** %10, align 8
%12 = load i32, i32* %11, align 4
%13 = getelementptr i8*, i8** %0, i64 2
%14 = bitcast i8** %13 to float**
%15 = load float*, float** %14, align 8
%16 = getelementptr i8*, i8** %0, i64 3
%17 = bitcast i8** %16 to float**
%18 = load float*, float** %17, align 8
%19 = getelementptr i8*, i8** %0, i64 4
%20 = bitcast i8** %19 to [8 x [8 x float]]**
%21 = load [8 x [8 x float]]*, [8 x [8 x float]]** %20, align 8
%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 }* %1, i64 0, i32 2, i64 0
%23 = load i64, i64* %22, align 8
%24 = getelementptr { [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, i64 0, i32 2, i64 1
%25 = load i64, i64* %24, align 8
%26 = getelementptr { [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, i64 0, i32 2, i64 2
%27 = load i64, i64* %26, align 8
%tmp16.i.i = mul i64 %25, %23
%num_wi17.i.i = mul i64 %tmp16.i.i, %27
%.conv8.pocl_context.i.i = alloca i64, i64 %num_wi17.i.i, align 64
%.conv4.pocl_context.i.i = alloca i64, i64 %num_wi17.i.i, align 64
%mul.i.i = shl i64 %2, 3
%mul7.i.i = shl i64 %3, 3
%28 = icmp ugt i64 %23, 1
%umax1 = select i1 %28, i64 %23, i64 1
%29 = add i64 %umax1, -1
%xtraiter2 = and i64 %umax1, 7
%30 = icmp ult i64 %29, 7
%unroll_iter5 = sub i64 %umax1, %xtraiter2
%lcmp.mod4 = icmp eq i64 %xtraiter2, 0
br label %pregion_for_entry.pregion_for_init50.i.i
pregion_for_entry.pregion_for_init50.i.i: ; preds = %pregion_for_end51.i.i, %5
%_local_id_z.i.0 = phi i64 [ 0, %5 ], [ %31, %pregion_for_end51.i.i ]
%tmp1.i.i = mul i64 %_local_id_z.i.0, %tmp16.i.i
br label %pregion_for_entry.pregion_for_init46.i.i
pregion_for_entry.pregion_for_init46.i.i: ; preds = %pregion_for_end47.i.i, %pregion_for_entry.pregion_for_init50.i.i
%_local_id_y.i.0 = phi i64 [ 0, %pregion_for_entry.pregion_for_init50.i.i ], [ %40, %pregion_for_end47.i.i ]
%ls_x_y.i.i = mul i64 %_local_id_y.i.0, %23
%zy_sum.i.i = add i64 %ls_x_y.i.i, %tmp1.i.i
%conv8.i.i = and i64 %_local_id_y.i.0, 4294967295
%add9.i.i = add i64 %_local_id_y.i.0, %mul7.i.i
%conv10.i.i = trunc i64 %add9.i.i to i32
%mul11.i.i = mul i32 %8, %conv10.i.i
br i1 %30, label %pregion_for_end47.i.i.unr-lcssa, label %pregion_for_entry.entry.prebarrier.i.i.preheader
pregion_for_entry.entry.prebarrier.i.i.preheader: ; preds = %pregion_for_entry.pregion_for_init46.i.i
br label %pregion_for_entry.entry.prebarrier.i.i
pregion_for_end51.i.i: ; preds = %pregion_for_end47.i.i
%31 = add nuw i64 %_local_id_z.i.0, 1
%32 = icmp ult i64 %31, %27
br i1 %32, label %pregion_for_entry.pregion_for_init50.i.i, label %pregion_for_entry.pregion_for_init42.i.i.preheader, !llvm.loop !13
pregion_for_entry.pregion_for_init42.i.i.preheader: ; preds = %pregion_for_end51.i.i
%33 = icmp ugt i64 %23, 1
%umax = select i1 %33, i64 %23, i64 1
%34 = add i64 %umax, -1
%xtraiter = and i64 %umax, 7
%35 = icmp ult i64 %34, 7
%unroll_iter = sub i64 %umax, %xtraiter
%lcmp.mod = icmp eq i64 %xtraiter, 0
br label %pregion_for_entry.pregion_for_init42.i.i
pregion_for_end47.i.i.unr-lcssa.loopexit: ; preds = %pregion_for_entry.entry.prebarrier.i.i
%.lcssa8 = phi i64 [ %73, %pregion_for_entry.entry.prebarrier.i.i ]
br label %pregion_for_end47.i.i.unr-lcssa
pregion_for_end47.i.i.unr-lcssa: ; preds = %pregion_for_end47.i.i.unr-lcssa.loopexit, %pregion_for_entry.pregion_for_init46.i.i
%_local_id_x.i.0.unr = phi i64 [ 0, %pregion_for_entry.pregion_for_init46.i.i ], [ %.lcssa8, %pregion_for_end47.i.i.unr-lcssa.loopexit ]
br i1 %lcmp.mod4, label %pregion_for_end47.i.i, label %pregion_for_entry.entry.prebarrier.i.i.epil.preheader
pregion_for_entry.entry.prebarrier.i.i.epil.preheader: ; preds = %pregion_for_end47.i.i.unr-lcssa
br label %pregion_for_entry.entry.prebarrier.i.i.epil
pregion_for_entry.entry.prebarrier.i.i.epil: ; preds = %pregion_for_entry.entry.prebarrier.i.i.epil, %pregion_for_entry.entry.prebarrier.i.i.epil.preheader
%_local_id_x.i.0.epil = phi i64 [ %39, %pregion_for_entry.entry.prebarrier.i.i.epil ], [ %_local_id_x.i.0.unr, %pregion_for_entry.entry.prebarrier.i.i.epil.preheader ]
%epil.iter3 = phi i64 [ %epil.iter3.sub, %pregion_for_entry.entry.prebarrier.i.i.epil ], [ %xtraiter2, %pregion_for_entry.entry.prebarrier.i.i.epil.preheader ]
%conv4.i.i.epil = and i64 %_local_id_x.i.0.epil, 4294967295
%linear_xyz_idx.i.i.epil = add i64 %zy_sum.i.i, %_local_id_x.i.0.epil
%36 = getelementptr i64, i64* %.conv4.pocl_context.i.i, i64 %linear_xyz_idx.i.i.epil
store i64 %conv4.i.i.epil, i64* %36, align 8, !llvm.access.group !16
%add.i.i.epil = add i64 %_local_id_x.i.0.epil, %mul.i.i
%conv5.i.i.epil = trunc i64 %add.i.i.epil to i32
%37 = getelementptr i64, i64* %.conv8.pocl_context.i.i, i64 %linear_xyz_idx.i.i.epil
store i64 %conv8.i.i, i64* %37, align 8, !llvm.access.group !16
%add12.i.i.epil = add i32 %mul11.i.i, %conv5.i.i.epil
%idxprom.i.i.epil = zext i32 %add12.i.i.epil to i64
%arrayidx.i.i.epil = getelementptr inbounds float, float* %15, i64 %idxprom.i.i.epil
%38 = load float, float* %arrayidx.i.i.epil, align 4, !tbaa !19, !llvm.access.group !16
%arrayidx16.i.i.epil = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %21, i64 0, i64 %conv8.i.i, i64 %conv4.i.i.epil
store float %38, float* %arrayidx16.i.i.epil, align 4, !tbaa !19, !llvm.access.group !16
%39 = add nuw i64 %_local_id_x.i.0.epil, 1
%epil.iter3.sub = add i64 %epil.iter3, -1
%epil.iter3.cmp = icmp eq i64 %epil.iter3.sub, 0
br i1 %epil.iter3.cmp, label %pregion_for_end47.i.i.loopexit, label %pregion_for_entry.entry.prebarrier.i.i.epil, !llvm.loop !42
pregion_for_end47.i.i.loopexit: ; preds = %pregion_for_entry.entry.prebarrier.i.i.epil
br label %pregion_for_end47.i.i
pregion_for_end47.i.i: ; preds = %pregion_for_end47.i.i.loopexit, %pregion_for_end47.i.i.unr-lcssa
%40 = add nuw i64 %_local_id_y.i.0, 1
%41 = icmp ult i64 %40, %25
br i1 %41, label %pregion_for_entry.pregion_for_init46.i.i, label %pregion_for_end51.i.i, !llvm.loop !25
pregion_for_entry.entry.prebarrier.i.i: ; preds = %pregion_for_entry.entry.prebarrier.i.i, %pregion_for_entry.entry.prebarrier.i.i.preheader
%_local_id_x.i.0 = phi i64 [ %73, %pregion_for_entry.entry.prebarrier.i.i ], [ 0, %pregion_for_entry.entry.prebarrier.i.i.preheader ]
%niter6 = phi i64 [ %niter6.nsub.7, %pregion_for_entry.entry.prebarrier.i.i ], [ %unroll_iter5, %pregion_for_entry.entry.prebarrier.i.i.preheader ]
%conv4.i.i = and i64 %_local_id_x.i.0, 4294967288
%linear_xyz_idx.i.i = add i64 %zy_sum.i.i, %_local_id_x.i.0
%42 = getelementptr i64, i64* %.conv4.pocl_context.i.i, i64 %linear_xyz_idx.i.i
store i64 %conv4.i.i, i64* %42, align 8, !llvm.access.group !16
%add.i.i = add i64 %_local_id_x.i.0, %mul.i.i
%conv5.i.i = trunc i64 %add.i.i to i32
%43 = getelementptr i64, i64* %.conv8.pocl_context.i.i, i64 %linear_xyz_idx.i.i
store i64 %conv8.i.i, i64* %43, align 8, !llvm.access.group !16
%add12.i.i = add i32 %mul11.i.i, %conv5.i.i
%idxprom.i.i = zext i32 %add12.i.i to i64
%arrayidx.i.i = getelementptr inbounds float, float* %15, i64 %idxprom.i.i
%44 = load float, float* %arrayidx.i.i, align 4, !tbaa !19, !llvm.access.group !16
%arrayidx16.i.i = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %21, i64 0, i64 %conv8.i.i, i64 %conv4.i.i
store float %44, float* %arrayidx16.i.i, align 4, !tbaa !19, !llvm.access.group !16
%45 = or i64 %_local_id_x.i.0, 1
%conv4.i.i.1 = and i64 %45, 4294967289
%linear_xyz_idx.i.i.1 = add i64 %zy_sum.i.i, %45
%46 = getelementptr i64, i64* %.conv4.pocl_context.i.i, i64 %linear_xyz_idx.i.i.1
store i64 %conv4.i.i.1, i64* %46, align 8, !llvm.access.group !16
%add.i.i.1 = add i64 %45, %mul.i.i
%conv5.i.i.1 = trunc i64 %add.i.i.1 to i32
%47 = getelementptr i64, i64* %.conv8.pocl_context.i.i, i64 %linear_xyz_idx.i.i.1
store i64 %conv8.i.i, i64* %47, align 8, !llvm.access.group !16
%add12.i.i.1 = add i32 %mul11.i.i, %conv5.i.i.1
%idxprom.i.i.1 = zext i32 %add12.i.i.1 to i64
%arrayidx.i.i.1 = getelementptr inbounds float, float* %15, i64 %idxprom.i.i.1
%48 = load float, float* %arrayidx.i.i.1, align 4, !tbaa !19, !llvm.access.group !16
%arrayidx16.i.i.1 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %21, i64 0, i64 %conv8.i.i, i64 %conv4.i.i.1
store float %48, float* %arrayidx16.i.i.1, align 4, !tbaa !19, !llvm.access.group !16
%49 = or i64 %_local_id_x.i.0, 2
%conv4.i.i.2 = and i64 %49, 4294967290
%linear_xyz_idx.i.i.2 = add i64 %zy_sum.i.i, %49
%50 = getelementptr i64, i64* %.conv4.pocl_context.i.i, i64 %linear_xyz_idx.i.i.2
store i64 %conv4.i.i.2, i64* %50, align 8, !llvm.access.group !16
%add.i.i.2 = add i64 %49, %mul.i.i
%conv5.i.i.2 = trunc i64 %add.i.i.2 to i32
%51 = getelementptr i64, i64* %.conv8.pocl_context.i.i, i64 %linear_xyz_idx.i.i.2
store i64 %conv8.i.i, i64* %51, align 8, !llvm.access.group !16
%add12.i.i.2 = add i32 %mul11.i.i, %conv5.i.i.2
%idxprom.i.i.2 = zext i32 %add12.i.i.2 to i64
%arrayidx.i.i.2 = getelementptr inbounds float, float* %15, i64 %idxprom.i.i.2
%52 = load float, float* %arrayidx.i.i.2, align 4, !tbaa !19, !llvm.access.group !16
%arrayidx16.i.i.2 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %21, i64 0, i64 %conv8.i.i, i64 %conv4.i.i.2
store float %52, float* %arrayidx16.i.i.2, align 4, !tbaa !19, !llvm.access.group !16
%53 = or i64 %_local_id_x.i.0, 3
%conv4.i.i.3 = and i64 %53, 4294967291
%linear_xyz_idx.i.i.3 = add i64 %zy_sum.i.i, %53
%54 = getelementptr i64, i64* %.conv4.pocl_context.i.i, i64 %linear_xyz_idx.i.i.3
store i64 %conv4.i.i.3, i64* %54, align 8, !llvm.access.group !16
%add.i.i.3 = add i64 %53, %mul.i.i
%conv5.i.i.3 = trunc i64 %add.i.i.3 to i32
%55 = getelementptr i64, i64* %.conv8.pocl_context.i.i, i64 %linear_xyz_idx.i.i.3
store i64 %conv8.i.i, i64* %55, align 8, !llvm.access.group !16
%add12.i.i.3 = add i32 %mul11.i.i, %conv5.i.i.3
%idxprom.i.i.3 = zext i32 %add12.i.i.3 to i64
%arrayidx.i.i.3 = getelementptr inbounds float, float* %15, i64 %idxprom.i.i.3
%56 = load float, float* %arrayidx.i.i.3, align 4, !tbaa !19, !llvm.access.group !16
%arrayidx16.i.i.3 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %21, i64 0, i64 %conv8.i.i, i64 %conv4.i.i.3
store float %56, float* %arrayidx16.i.i.3, align 4, !tbaa !19, !llvm.access.group !16
%57 = or i64 %_local_id_x.i.0, 4
%conv4.i.i.4 = and i64 %57, 4294967292
%linear_xyz_idx.i.i.4 = add i64 %zy_sum.i.i, %57
%58 = getelementptr i64, i64* %.conv4.pocl_context.i.i, i64 %linear_xyz_idx.i.i.4
store i64 %conv4.i.i.4, i64* %58, align 8, !llvm.access.group !16
%add.i.i.4 = add i64 %57, %mul.i.i
%conv5.i.i.4 = trunc i64 %add.i.i.4 to i32
%59 = getelementptr i64, i64* %.conv8.pocl_context.i.i, i64 %linear_xyz_idx.i.i.4
store i64 %conv8.i.i, i64* %59, align 8, !llvm.access.group !16
%add12.i.i.4 = add i32 %mul11.i.i, %conv5.i.i.4
%idxprom.i.i.4 = zext i32 %add12.i.i.4 to i64
%arrayidx.i.i.4 = getelementptr inbounds float, float* %15, i64 %idxprom.i.i.4
%60 = load float, float* %arrayidx.i.i.4, align 4, !tbaa !19, !llvm.access.group !16
%arrayidx16.i.i.4 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %21, i64 0, i64 %conv8.i.i, i64 %conv4.i.i.4
store float %60, float* %arrayidx16.i.i.4, align 4, !tbaa !19, !llvm.access.group !16
%61 = or i64 %_local_id_x.i.0, 5
%conv4.i.i.5 = and i64 %61, 4294967293
%linear_xyz_idx.i.i.5 = add i64 %zy_sum.i.i, %61
%62 = getelementptr i64, i64* %.conv4.pocl_context.i.i, i64 %linear_xyz_idx.i.i.5
store i64 %conv4.i.i.5, i64* %62, align 8, !llvm.access.group !16
%add.i.i.5 = add i64 %61, %mul.i.i
%conv5.i.i.5 = trunc i64 %add.i.i.5 to i32
%63 = getelementptr i64, i64* %.conv8.pocl_context.i.i, i64 %linear_xyz_idx.i.i.5
store i64 %conv8.i.i, i64* %63, align 8, !llvm.access.group !16
%add12.i.i.5 = add i32 %mul11.i.i, %conv5.i.i.5
%idxprom.i.i.5 = zext i32 %add12.i.i.5 to i64
%arrayidx.i.i.5 = getelementptr inbounds float, float* %15, i64 %idxprom.i.i.5
%64 = load float, float* %arrayidx.i.i.5, align 4, !tbaa !19, !llvm.access.group !16
%arrayidx16.i.i.5 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %21, i64 0, i64 %conv8.i.i, i64 %conv4.i.i.5
store float %64, float* %arrayidx16.i.i.5, align 4, !tbaa !19, !llvm.access.group !16
%65 = or i64 %_local_id_x.i.0, 6
%conv4.i.i.6 = and i64 %65, 4294967294
%linear_xyz_idx.i.i.6 = add i64 %zy_sum.i.i, %65
%66 = getelementptr i64, i64* %.conv4.pocl_context.i.i, i64 %linear_xyz_idx.i.i.6
store i64 %conv4.i.i.6, i64* %66, align 8, !llvm.access.group !16
%add.i.i.6 = add i64 %65, %mul.i.i
%conv5.i.i.6 = trunc i64 %add.i.i.6 to i32
%67 = getelementptr i64, i64* %.conv8.pocl_context.i.i, i64 %linear_xyz_idx.i.i.6
store i64 %conv8.i.i, i64* %67, align 8, !llvm.access.group !16
%add12.i.i.6 = add i32 %mul11.i.i, %conv5.i.i.6
%idxprom.i.i.6 = zext i32 %add12.i.i.6 to i64
%arrayidx.i.i.6 = getelementptr inbounds float, float* %15, i64 %idxprom.i.i.6
%68 = load float, float* %arrayidx.i.i.6, align 4, !tbaa !19, !llvm.access.group !16
%arrayidx16.i.i.6 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %21, i64 0, i64 %conv8.i.i, i64 %conv4.i.i.6
store float %68, float* %arrayidx16.i.i.6, align 4, !tbaa !19, !llvm.access.group !16
%69 = or i64 %_local_id_x.i.0, 7
%conv4.i.i.7 = and i64 %69, 4294967295
%linear_xyz_idx.i.i.7 = add i64 %zy_sum.i.i, %69
%70 = getelementptr i64, i64* %.conv4.pocl_context.i.i, i64 %linear_xyz_idx.i.i.7
store i64 %conv4.i.i.7, i64* %70, align 8, !llvm.access.group !16
%add.i.i.7 = add i64 %69, %mul.i.i
%conv5.i.i.7 = trunc i64 %add.i.i.7 to i32
%71 = getelementptr i64, i64* %.conv8.pocl_context.i.i, i64 %linear_xyz_idx.i.i.7
store i64 %conv8.i.i, i64* %71, align 8, !llvm.access.group !16
%add12.i.i.7 = add i32 %mul11.i.i, %conv5.i.i.7
%idxprom.i.i.7 = zext i32 %add12.i.i.7 to i64
%arrayidx.i.i.7 = getelementptr inbounds float, float* %15, i64 %idxprom.i.i.7
%72 = load float, float* %arrayidx.i.i.7, align 4, !tbaa !19, !llvm.access.group !16
%arrayidx16.i.i.7 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %21, i64 0, i64 %conv8.i.i, i64 %conv4.i.i.7
store float %72, float* %arrayidx16.i.i.7, align 4, !tbaa !19, !llvm.access.group !16
%73 = add nuw i64 %_local_id_x.i.0, 8
%niter6.nsub.7 = add i64 %niter6, -8
%niter6.ncmp.7 = icmp eq i64 %niter6.nsub.7, 0
br i1 %niter6.ncmp.7, label %pregion_for_end47.i.i.unr-lcssa.loopexit, label %pregion_for_entry.entry.prebarrier.i.i, !llvm.loop !27
pregion_for_entry.pregion_for_init42.i.i: ; preds = %pregion_for_end39.i.i, %pregion_for_entry.pregion_for_init42.i.i.preheader
%_local_id_z.i.1 = phi i64 [ %74, %pregion_for_end39.i.i ], [ 0, %pregion_for_entry.pregion_for_init42.i.i.preheader ]
%tmp5.i.i = mul i64 %_local_id_z.i.1, %tmp16.i.i
br label %pregion_for_entry.pregion_for_init.i.i
pregion_for_entry.pregion_for_init.i.i: ; preds = %pregion_for_end.i.i, %pregion_for_entry.pregion_for_init42.i.i
%_local_id_y.i.1 = phi i64 [ 0, %pregion_for_entry.pregion_for_init42.i.i ], [ %82, %pregion_for_end.i.i ]
%add25.i.i = add i64 %_local_id_y.i.1, %mul.i.i
%conv26.i.i = trunc i64 %add25.i.i to i32
%ls_x_y6.i.i = mul i64 %_local_id_y.i.1, %23
%zy_sum7.i.i = add i64 %ls_x_y6.i.i, %tmp5.i.i
%mul31.i.i = mul i32 %12, %conv26.i.i
br i1 %35, label %pregion_for_end.i.i.unr-lcssa, label %pregion_for_entry.entry.postbarrier.i.i.preheader
pregion_for_entry.entry.postbarrier.i.i.preheader: ; preds = %pregion_for_entry.pregion_for_init.i.i
br label %pregion_for_entry.entry.postbarrier.i.i
pregion_for_end39.i.i: ; preds = %pregion_for_end.i.i
%74 = add nuw i64 %_local_id_z.i.1, 1
%75 = icmp ult i64 %74, %27
br i1 %75, label %pregion_for_entry.pregion_for_init42.i.i, label %_pocl_kernel_transpose.exit, !llvm.loop !29
pregion_for_end.i.i.unr-lcssa.loopexit: ; preds = %pregion_for_entry.entry.postbarrier.i.i
%.lcssa = phi i64 [ %131, %pregion_for_entry.entry.postbarrier.i.i ]
br label %pregion_for_end.i.i.unr-lcssa
pregion_for_end.i.i.unr-lcssa: ; preds = %pregion_for_end.i.i.unr-lcssa.loopexit, %pregion_for_entry.pregion_for_init.i.i
%_local_id_x.i.1.unr = phi i64 [ 0, %pregion_for_entry.pregion_for_init.i.i ], [ %.lcssa, %pregion_for_end.i.i.unr-lcssa.loopexit ]
br i1 %lcmp.mod, label %pregion_for_end.i.i, label %pregion_for_entry.entry.postbarrier.i.i.epil.preheader
pregion_for_entry.entry.postbarrier.i.i.epil.preheader: ; preds = %pregion_for_end.i.i.unr-lcssa
br label %pregion_for_entry.entry.postbarrier.i.i.epil
pregion_for_entry.entry.postbarrier.i.i.epil: ; preds = %pregion_for_entry.entry.postbarrier.i.i.epil, %pregion_for_entry.entry.postbarrier.i.i.epil.preheader
%_local_id_x.i.1.epil = phi i64 [ %81, %pregion_for_entry.entry.postbarrier.i.i.epil ], [ %_local_id_x.i.1.unr, %pregion_for_entry.entry.postbarrier.i.i.epil.preheader ]
%epil.iter = phi i64 [ %epil.iter.sub, %pregion_for_entry.entry.postbarrier.i.i.epil ], [ %xtraiter, %pregion_for_entry.entry.postbarrier.i.i.epil.preheader ]
%add20.i.i.epil = add i64 %_local_id_x.i.1.epil, %mul7.i.i
%conv21.i.i.epil = trunc i64 %add20.i.i.epil to i32
%linear_xyz_idx8.i.i.epil = add i64 %zy_sum7.i.i, %_local_id_x.i.1.epil
%76 = getelementptr i64, i64* %.conv4.pocl_context.i.i, i64 %linear_xyz_idx8.i.i.epil
%77 = load i64, i64* %76, align 8, !llvm.access.group !32
%78 = getelementptr i64, i64* %.conv8.pocl_context.i.i, i64 %linear_xyz_idx8.i.i.epil
%79 = load i64, i64* %78, align 8, !llvm.access.group !32
%arrayidx30.i.i.epil = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %21, i64 0, i64 %77, i64 %79
%80 = load float, float* %arrayidx30.i.i.epil, align 4, !tbaa !19, !llvm.access.group !32
%add32.i.i.epil = add i32 %mul31.i.i, %conv21.i.i.epil
%idxprom33.i.i.epil = zext i32 %add32.i.i.epil to i64
%arrayidx34.i.i.epil = getelementptr inbounds float, float* %18, i64 %idxprom33.i.i.epil
store float %80, float* %arrayidx34.i.i.epil, align 4, !tbaa !19, !llvm.access.group !32
%81 = add nuw i64 %_local_id_x.i.1.epil, 1
%epil.iter.sub = add i64 %epil.iter, -1
%epil.iter.cmp = icmp eq i64 %epil.iter.sub, 0
br i1 %epil.iter.cmp, label %pregion_for_end.i.i.loopexit, label %pregion_for_entry.entry.postbarrier.i.i.epil, !llvm.loop !43
pregion_for_end.i.i.loopexit: ; preds = %pregion_for_entry.entry.postbarrier.i.i.epil
br label %pregion_for_end.i.i
pregion_for_end.i.i: ; preds = %pregion_for_end.i.i.loopexit, %pregion_for_end.i.i.unr-lcssa
%82 = add nuw i64 %_local_id_y.i.1, 1
%83 = icmp ult i64 %82, %25
br i1 %83, label %pregion_for_entry.pregion_for_init.i.i, label %pregion_for_end39.i.i, !llvm.loop !36
pregion_for_entry.entry.postbarrier.i.i: ; preds = %pregion_for_entry.entry.postbarrier.i.i, %pregion_for_entry.entry.postbarrier.i.i.preheader
%_local_id_x.i.1 = phi i64 [ %131, %pregion_for_entry.entry.postbarrier.i.i ], [ 0, %pregion_for_entry.entry.postbarrier.i.i.preheader ]
%niter = phi i64 [ %niter.nsub.7, %pregion_for_entry.entry.postbarrier.i.i ], [ %unroll_iter, %pregion_for_entry.entry.postbarrier.i.i.preheader ]
%add20.i.i = add i64 %_local_id_x.i.1, %mul7.i.i
%conv21.i.i = trunc i64 %add20.i.i to i32
%linear_xyz_idx8.i.i = add i64 %zy_sum7.i.i, %_local_id_x.i.1
%84 = getelementptr i64, i64* %.conv4.pocl_context.i.i, i64 %linear_xyz_idx8.i.i
%85 = load i64, i64* %84, align 8, !llvm.access.group !32
%86 = getelementptr i64, i64* %.conv8.pocl_context.i.i, i64 %linear_xyz_idx8.i.i
%87 = load i64, i64* %86, align 8, !llvm.access.group !32
%arrayidx30.i.i = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %21, i64 0, i64 %85, i64 %87
%88 = load float, float* %arrayidx30.i.i, align 4, !tbaa !19, !llvm.access.group !32
%add32.i.i = add i32 %mul31.i.i, %conv21.i.i
%idxprom33.i.i = zext i32 %add32.i.i to i64
%arrayidx34.i.i = getelementptr inbounds float, float* %18, i64 %idxprom33.i.i
store float %88, float* %arrayidx34.i.i, align 4, !tbaa !19, !llvm.access.group !32
%89 = or i64 %_local_id_x.i.1, 1
%add20.i.i.1 = add i64 %89, %mul7.i.i
%conv21.i.i.1 = trunc i64 %add20.i.i.1 to i32
%linear_xyz_idx8.i.i.1 = add i64 %zy_sum7.i.i, %89
%90 = getelementptr i64, i64* %.conv4.pocl_context.i.i, i64 %linear_xyz_idx8.i.i.1
%91 = load i64, i64* %90, align 8, !llvm.access.group !32
%92 = getelementptr i64, i64* %.conv8.pocl_context.i.i, i64 %linear_xyz_idx8.i.i.1
%93 = load i64, i64* %92, align 8, !llvm.access.group !32
%arrayidx30.i.i.1 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %21, i64 0, i64 %91, i64 %93
%94 = load float, float* %arrayidx30.i.i.1, align 4, !tbaa !19, !llvm.access.group !32
%add32.i.i.1 = add i32 %mul31.i.i, %conv21.i.i.1
%idxprom33.i.i.1 = zext i32 %add32.i.i.1 to i64
%arrayidx34.i.i.1 = getelementptr inbounds float, float* %18, i64 %idxprom33.i.i.1
store float %94, float* %arrayidx34.i.i.1, align 4, !tbaa !19, !llvm.access.group !32
%95 = or i64 %_local_id_x.i.1, 2
%add20.i.i.2 = add i64 %95, %mul7.i.i
%conv21.i.i.2 = trunc i64 %add20.i.i.2 to i32
%linear_xyz_idx8.i.i.2 = add i64 %zy_sum7.i.i, %95
%96 = getelementptr i64, i64* %.conv4.pocl_context.i.i, i64 %linear_xyz_idx8.i.i.2
%97 = load i64, i64* %96, align 8, !llvm.access.group !32
%98 = getelementptr i64, i64* %.conv8.pocl_context.i.i, i64 %linear_xyz_idx8.i.i.2
%99 = load i64, i64* %98, align 8, !llvm.access.group !32
%arrayidx30.i.i.2 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %21, i64 0, i64 %97, i64 %99
%100 = load float, float* %arrayidx30.i.i.2, align 4, !tbaa !19, !llvm.access.group !32
%add32.i.i.2 = add i32 %mul31.i.i, %conv21.i.i.2
%idxprom33.i.i.2 = zext i32 %add32.i.i.2 to i64
%arrayidx34.i.i.2 = getelementptr inbounds float, float* %18, i64 %idxprom33.i.i.2
store float %100, float* %arrayidx34.i.i.2, align 4, !tbaa !19, !llvm.access.group !32
%101 = or i64 %_local_id_x.i.1, 3
%add20.i.i.3 = add i64 %101, %mul7.i.i
%conv21.i.i.3 = trunc i64 %add20.i.i.3 to i32
%linear_xyz_idx8.i.i.3 = add i64 %zy_sum7.i.i, %101
%102 = getelementptr i64, i64* %.conv4.pocl_context.i.i, i64 %linear_xyz_idx8.i.i.3
%103 = load i64, i64* %102, align 8, !llvm.access.group !32
%104 = getelementptr i64, i64* %.conv8.pocl_context.i.i, i64 %linear_xyz_idx8.i.i.3
%105 = load i64, i64* %104, align 8, !llvm.access.group !32
%arrayidx30.i.i.3 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %21, i64 0, i64 %103, i64 %105
%106 = load float, float* %arrayidx30.i.i.3, align 4, !tbaa !19, !llvm.access.group !32
%add32.i.i.3 = add i32 %mul31.i.i, %conv21.i.i.3
%idxprom33.i.i.3 = zext i32 %add32.i.i.3 to i64
%arrayidx34.i.i.3 = getelementptr inbounds float, float* %18, i64 %idxprom33.i.i.3
store float %106, float* %arrayidx34.i.i.3, align 4, !tbaa !19, !llvm.access.group !32
%107 = or i64 %_local_id_x.i.1, 4
%add20.i.i.4 = add i64 %107, %mul7.i.i
%conv21.i.i.4 = trunc i64 %add20.i.i.4 to i32
%linear_xyz_idx8.i.i.4 = add i64 %zy_sum7.i.i, %107
%108 = getelementptr i64, i64* %.conv4.pocl_context.i.i, i64 %linear_xyz_idx8.i.i.4
%109 = load i64, i64* %108, align 8, !llvm.access.group !32
%110 = getelementptr i64, i64* %.conv8.pocl_context.i.i, i64 %linear_xyz_idx8.i.i.4
%111 = load i64, i64* %110, align 8, !llvm.access.group !32
%arrayidx30.i.i.4 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %21, i64 0, i64 %109, i64 %111
%112 = load float, float* %arrayidx30.i.i.4, align 4, !tbaa !19, !llvm.access.group !32
%add32.i.i.4 = add i32 %mul31.i.i, %conv21.i.i.4
%idxprom33.i.i.4 = zext i32 %add32.i.i.4 to i64
%arrayidx34.i.i.4 = getelementptr inbounds float, float* %18, i64 %idxprom33.i.i.4
store float %112, float* %arrayidx34.i.i.4, align 4, !tbaa !19, !llvm.access.group !32
%113 = or i64 %_local_id_x.i.1, 5
%add20.i.i.5 = add i64 %113, %mul7.i.i
%conv21.i.i.5 = trunc i64 %add20.i.i.5 to i32
%linear_xyz_idx8.i.i.5 = add i64 %zy_sum7.i.i, %113
%114 = getelementptr i64, i64* %.conv4.pocl_context.i.i, i64 %linear_xyz_idx8.i.i.5
%115 = load i64, i64* %114, align 8, !llvm.access.group !32
%116 = getelementptr i64, i64* %.conv8.pocl_context.i.i, i64 %linear_xyz_idx8.i.i.5
%117 = load i64, i64* %116, align 8, !llvm.access.group !32
%arrayidx30.i.i.5 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %21, i64 0, i64 %115, i64 %117
%118 = load float, float* %arrayidx30.i.i.5, align 4, !tbaa !19, !llvm.access.group !32
%add32.i.i.5 = add i32 %mul31.i.i, %conv21.i.i.5
%idxprom33.i.i.5 = zext i32 %add32.i.i.5 to i64
%arrayidx34.i.i.5 = getelementptr inbounds float, float* %18, i64 %idxprom33.i.i.5
store float %118, float* %arrayidx34.i.i.5, align 4, !tbaa !19, !llvm.access.group !32
%119 = or i64 %_local_id_x.i.1, 6
%add20.i.i.6 = add i64 %119, %mul7.i.i
%conv21.i.i.6 = trunc i64 %add20.i.i.6 to i32
%linear_xyz_idx8.i.i.6 = add i64 %zy_sum7.i.i, %119
%120 = getelementptr i64, i64* %.conv4.pocl_context.i.i, i64 %linear_xyz_idx8.i.i.6
%121 = load i64, i64* %120, align 8, !llvm.access.group !32
%122 = getelementptr i64, i64* %.conv8.pocl_context.i.i, i64 %linear_xyz_idx8.i.i.6
%123 = load i64, i64* %122, align 8, !llvm.access.group !32
%arrayidx30.i.i.6 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %21, i64 0, i64 %121, i64 %123
%124 = load float, float* %arrayidx30.i.i.6, align 4, !tbaa !19, !llvm.access.group !32
%add32.i.i.6 = add i32 %mul31.i.i, %conv21.i.i.6
%idxprom33.i.i.6 = zext i32 %add32.i.i.6 to i64
%arrayidx34.i.i.6 = getelementptr inbounds float, float* %18, i64 %idxprom33.i.i.6
store float %124, float* %arrayidx34.i.i.6, align 4, !tbaa !19, !llvm.access.group !32
%125 = or i64 %_local_id_x.i.1, 7
%add20.i.i.7 = add i64 %125, %mul7.i.i
%conv21.i.i.7 = trunc i64 %add20.i.i.7 to i32
%linear_xyz_idx8.i.i.7 = add i64 %zy_sum7.i.i, %125
%126 = getelementptr i64, i64* %.conv4.pocl_context.i.i, i64 %linear_xyz_idx8.i.i.7
%127 = load i64, i64* %126, align 8, !llvm.access.group !32
%128 = getelementptr i64, i64* %.conv8.pocl_context.i.i, i64 %linear_xyz_idx8.i.i.7
%129 = load i64, i64* %128, align 8, !llvm.access.group !32
%arrayidx30.i.i.7 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* %21, i64 0, i64 %127, i64 %129
%130 = load float, float* %arrayidx30.i.i.7, align 4, !tbaa !19, !llvm.access.group !32
%add32.i.i.7 = add i32 %mul31.i.i, %conv21.i.i.7
%idxprom33.i.i.7 = zext i32 %add32.i.i.7 to i64
%arrayidx34.i.i.7 = getelementptr inbounds float, float* %18, i64 %idxprom33.i.i.7
store float %130, float* %arrayidx34.i.i.7, align 4, !tbaa !19, !llvm.access.group !32
%131 = add nuw i64 %_local_id_x.i.1, 8
%niter.nsub.7 = add i64 %niter, -8
%niter.ncmp.7 = icmp eq i64 %niter.nsub.7, 0
br i1 %niter.ncmp.7, label %pregion_for_end.i.i.unr-lcssa.loopexit, label %pregion_for_entry.entry.postbarrier.i.i, !llvm.loop !38
_pocl_kernel_transpose.exit: ; preds = %pregion_for_end39.i.i
ret void
}
attributes #0 = { alwaysinline nofree norecurse nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "denorms-are-zero"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "no-builtins" "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" "uniform-work-group-size"="true" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #1 = { nofree norecurse nounwind }
!llvm.module.flags = !{!0, !1, !2, !3, !4}
!opencl.ocl.version = !{!5}
!llvm.ident = !{!6}
!opencl.spir.version = !{!5}
!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 1, !"target-abi", !""}
!2 = !{i32 7, !"PIC Level", i32 2}
!3 = !{i32 7, !"PIE Level", i32 2}
!4 = !{i32 7, !"SmallDataLimit", i32 0}
!5 = !{i32 1, i32 2}
!6 = !{!"clang version 10.0.1 (2020-08-12_nds64le-linux-glibc-v5d-pocl-5222bcc_experimental 5222bcc4c7aa70deaea4e14b047fcdfa362cadb8)"}
!7 = !{i32 0, i32 0, i32 1, i32 1, i32 3}
!8 = !{!"none", !"none", !"none", !"none"}
!9 = !{!"uint", !"uint", !"float*", !"float*"}
!10 = !{!"", !"", !"const", !""}
!11 = !{!"P", !"Q", !"input", !"output"}
!12 = !{i32 1}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.parallel_accesses", !15}
!15 = distinct !{}
!16 = !{!17, !18, !15}
!17 = distinct !{}
!18 = distinct !{}
!19 = !{!20, !20, i64 0}
!20 = !{!"float", !21, i64 0}
!21 = !{!"omnipotent char", !22, i64 0}
!22 = !{!"Simple C/C++ TBAA"}
!23 = distinct !{!23, !24}
!24 = !{!"llvm.loop.unroll.disable"}
!25 = distinct !{!25, !26}
!26 = !{!"llvm.loop.parallel_accesses", !18}
!27 = distinct !{!27, !28}
!28 = !{!"llvm.loop.parallel_accesses", !17}
!29 = distinct !{!29, !30}
!30 = !{!"llvm.loop.parallel_accesses", !31}
!31 = distinct !{}
!32 = !{!33, !34, !31}
!33 = distinct !{}
!34 = distinct !{}
!35 = distinct !{!35, !24}
!36 = distinct !{!36, !37}
!37 = !{!"llvm.loop.parallel_accesses", !34}
!38 = distinct !{!38, !39}
!39 = !{!"llvm.loop.parallel_accesses", !33}
!40 = distinct !{!40, !24}
!41 = distinct !{!41, !24}
!42 = distinct !{!42, !24}
!43 = distinct !{!43, !24}
; ModuleID = 'program.bc'
source_filename = "/home/users3/piyou/.cache/pocl/kcache/tempfile-73-53-2a-60-d1.cl"
target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n64-S128"
target triple = "riscv64-unknown-linux"
@transpose.buffer = internal unnamed_addr global [8 x [8 x float]] undef, align 4
@_global_offset_x = external local_unnamed_addr global i64, align 8
@_local_size_x = external local_unnamed_addr global i64, align 8
@_group_id_x = external local_unnamed_addr global i64, align 8
@_global_offset_y = external local_unnamed_addr global i64, align 8
@_local_size_y = external local_unnamed_addr global i64, align 8
@_group_id_y = external local_unnamed_addr global i64, align 8
@_global_offset_z = external local_unnamed_addr global i64, align 8
@_local_size_z = external local_unnamed_addr global i64, align 8
@_group_id_z = external local_unnamed_addr global i64, align 8
@_num_groups_x = external local_unnamed_addr global i64, align 8
@_num_groups_y = external local_unnamed_addr global i64, align 8
@_num_groups_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
@_work_dim = external local_unnamed_addr global i32, align 4
@.str.2 = private unnamed_addr constant [4 x i8] c"inf\00", align 1
@.str.3 = private unnamed_addr constant [4 x i8] c"INF\00", align 1
@.str = private unnamed_addr constant [4 x i8] c"nan\00", align 1
@.str.1 = private unnamed_addr constant [4 x i8] c"NAN\00", align 1
@__const.__pocl_print_floats_double.NANs = private unnamed_addr constant [2 x i8*] [i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i32 0, i32 0)], align 8
@__const.__pocl_print_floats_double.INFs = private unnamed_addr constant [2 x i8*] [i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.2, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i32 0, i32 0)], align 8
@.str.5 = private unnamed_addr constant [32 x i8] c" printf format string error: 0x\00", align 1
@_printf_buffer = external local_unnamed_addr global i8*, align 8
@_printf_buffer_capacity = external local_unnamed_addr global i32, align 4
@_printf_buffer_position = external local_unnamed_addr global i32*, align 8
@__const.__pocl_printf_float_libc.str = private unnamed_addr constant [25 x i8] c"%%%s%s%s%s%s%.0d%s%.0d%c\00", align 1
@.str.1.501 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@.str.502 = private unnamed_addr constant [2 x i8] c"-\00", align 1
@.str.2.503 = private unnamed_addr constant [2 x i8] c"+\00", align 1
@.str.3.504 = private unnamed_addr constant [2 x i8] c" \00", align 1
@.str.4.505 = private unnamed_addr constant [2 x i8] c"#\00", align 1
@.str.5.506 = private unnamed_addr constant [2 x i8] c"0\00", align 1
@.str.6 = private unnamed_addr constant [2 x i8] c".\00", align 1
@PIBITS_TBL = internal unnamed_addr constant [158 x i8] c"\E0\F1\1B\C1\0CX!t5~\C4~\ED\AF\A9KJ)\DE\E7\1C\F4\EC\C5\97\AF\1F\EB\9E\D4\B5\A8\7Fy\9A\FD\18=\DD&,\9F<\FB\D9\B4}\B4)h-F\BC\BC?`\16x\FF_\E2\7F\EC\A0\E4\F7.~\11r\D2\E7L\0D\E6XG\E6\04\F9}\D1\9A\C0q\A6\13\12\ED\BA\D4\D7\08\A2\FB\9C\A6\C4r\ACw\F8sHF'\A8\BB$\19\80K7\09\E9\B8\91\DC\86\15\EFz\AF\8EE\F9\07A\0E\F1dV\8Am\03w\D3\D4G_\9D\F0\A7T\109\B9\0D\E6\8B\02\00\00\00\00\00\00\00", align 1
@LOG_INV_TBL = internal unnamed_addr constant [129 x float] [float 2.000000e+00, float 0x3FFFC07F00000000, float 0x3FFF81F820000000, float 0x3FFF4465A0000000, float 0x3FFF07C200000000, float 0x3FFECC07C0000000, float 0x3FFE9131A0000000, float 0x3FFE573AC0000000, float 0x3FFE1E1E20000000, float 0x3FFDE5D6E0000000, float 0x3FFDAE6080000000, float 0x3FFD77B660000000, float 0x3FFD41D420000000, float 0x3FFD0CB580000000, float 0x3FFCD85680000000, float 0x3FFCA4B300000000, float 0x3FFC71C720000000, float 0x3FFC3F8F00000000, float 0x3FFC0E0700000000, float 0x3FFBDD2B80000000, float 0x3FFBACF920000000, float 0x3FFB7D6C40000000, float 0x3FFB4E81C0000000, float 0x3FFB203640000000, float 0x3FFAF286C0000000, float 0x3FFAC57020000000, float 0x3FFA98EF60000000, float 0x3FFA6D01A0000000, float 0x3FFA41A420000000, float 0x3FFA16D400000000, float 0x3FF9EC8EA0000000, float 0x3FF9C2D140000000, float 0x3FF99999A0000000, float 0x3FF970E500000000, float 0x3FF948B100000000, float 0x3FF920FB40000000, float 0x3FF8F9C180000000, float 0x3FF8D30180000000, float 0x3FF8ACB900000000, float 0x3FF886E600000000, float 0x3FF8618620000000, float 0x3FF83C9780000000, float 0x3FF8181820000000, float 0x3FF7F40600000000, float 0x3FF7D05F40000000, float 0x3FF7AD2200000000, float 0x3FF78A4C80000000, float 0x3FF767DCE0000000, float 0x3FF745D180000000, float 0x3FF7242880000000, float 0x3FF702E060000000, float 0x3FF6E1F760000000, float 0x3FF6C16C20000000, float 0x3FF6A13CE0000000, float 0x3FF6816820000000, float 0x3FF661EC60000000, float 0x3FF642C860000000, float 0x3FF623FA80000000, float 0x3FF6058160000000, float 0x3FF5E75BC0000000, float 0x3FF5C98820000000, float 0x3FF5AC0560000000, float 0x3FF58ED240000000, float 0x3FF571ED40000000, float 0x3FF5555560000000, float 0x3FF5390940000000, float 0x3FF51D07E0000000, float 0x3FF5015020000000, float 0x3FF4E5E0A0000000, float 0x3FF4CAB880000000, float 0x3FF4AFD6A0000000, float 0x3FF49539E0000000, float 0x3FF47AE140000000, float 0x3FF460CBC0000000, float 0x3FF446F860000000, float 0x3FF42D6620000000, float 0x3FF4141420000000, float 0x3FF3FB0140000000, float 0x3FF3E22CC0000000, float 0x3FF3C995A0000000, float 0x3FF3B13B20000000, float 0x3FF3991C20000000, float 0x3FF3813820000000, float 0x3FF3698E00000000, float 0x3FF3521D00000000, float 0x3FF33AE460000000, float 0x3FF323E340000000, float 0x3FF30D1900000000, float 0x3FF2F684C0000000, float 0x3FF2E025C0000000, float 0x3FF2C9FB40000000, float 0x3FF2B404A0000000, float 0x3FF29E4120000000, float 0x3FF288B020000000, float 0x3FF27350C0000000, float 0x3FF25E2280000000, float 0x3FF24924A0000000, float 0x3FF2345680000000, float 0x3FF21FB780000000, float 0x3FF20B4700000000, float 0x3FF1F70480000000, float 0x3FF1E2EF40000000, float 0x3FF1CF06A0000000, float 0x3FF1BB4A40000000, float 0x3FF1A7B960000000, float 0x3FF1945380000000, float 0x3FF1811820000000, float 0x3FF16E0680000000, float 0x3FF15B1E60000000, float 0x3FF1485F00000000, float 0x3FF135C820000000, float 0x3FF12358E0000000, float 0x3FF1111120000000, float 0x3FF0FEF020000000, float 0x3FF0ECF560000000, float 0x3FF0DB20A0000000, float 0x3FF0C97140000000, float 0x3FF0B7E6E0000000, float 0x3FF0A68100000000, float 0x3FF0953F40000000, float 0x3FF0842100000000, float 0x3FF0732600000000, float 0x3FF0624DE0000000, float 0x3FF0519800000000, float 0x3FF0410420000000, float 0x3FF03091C0000000, float 0x3FF0204080000000, float 0x3FF0101020000000, float 1.000000e+00], align 4
@EXP_TBL = internal unnamed_addr constant [65 x float] [float 1.000000e+00, float 0x3FF02C9A40000000, float 0x3FF059B0E0000000, float 0x3FF0874520000000, float 0x3FF0B55860000000, float 0x3FF0E3EC40000000, float 0x3FF11301E0000000, float 0x3FF1429AA0000000, float 0x3FF172B840000000, float 0x3FF1A35BE0000000, float 0x3FF1D48740000000, float 0x3FF2063B80000000, float 0x3FF2387A60000000, float 0x3FF26B4560000000, float 0x3FF29E9E00000000, float 0x3FF2D285A0000000, float 0x3FF306FE00000000, float 0x3FF33C08C0000000, float 0x3FF371A740000000, float 0x3FF3A7DB40000000, float 0x3FF3DEA640000000, float 0x3FF4160A20000000, float 0x3FF44E0860000000, float 0x3FF486A2C0000000, float 0x3FF4BFDAE0000000, float 0x3FF4F9B280000000, float 0x3FF5342B60000000, float 0x3FF56F4740000000, float 0x3FF5AB07E0000000, float 0x3FF5E76F20000000, float 0x3FF6247EC0000000, float 0x3FF6623880000000, float 0x3FF6A09E60000000, float 0x3FF6DFB240000000, float 0x3FF71F75E0000000, float 0x3FF75FEB60000000, float 0x3FF7A11480000000, float 0x3FF7E2F340000000, float 0x3FF82589A0000000, float 0x3FF868D9A0000000, float 0x3FF8ACE540000000, float 0x3FF8F1AEA0000000, float 0x3FF93737C0000000, float 0x3FF97D82A0000000, float 0x3FF9C49180000000, float 0x3FFA0C6680000000, float 0x3FFA5503C0000000, float 0x3FFA9E6B60000000, float 0x3FFAE89FA0000000, float 0x3FFB33A2C0000000, float 0x3FFB7F7700000000, float 0x3FFBCC1EA0000000, float 0x3FFC199BE0000000, float 0x3FFC67F120000000, float 0x3FFCB720E0000000, float 0x3FFD072D40000000, float 0x3FFD5818E0000000, float 0x3FFDA9E600000000, float 0x3FFDFC9740000000, float 0x3FFE502EE0000000, float 0x3FFEA4AFA0000000, float 0x3FFEFA1BE0000000, float 0x3FFF507660000000, float 0x3FFFA7C180000000, float 2.000000e+00], align 4
@LOGE_TBL = internal unnamed_addr constant [129 x <2 x float>] [<2 x float> zeroinitializer, <2 x float> <float 0x3F7FE00000000000, float 0x3E85358820000000>, <2 x float> <float 0x3F8FC00000000000, float 0x3EB5161F80000000>, <2 x float> <float 0x3F97B80000000000, float 0x3ED1B07D40000000>, <2 x float> <float 0x3F9F820000000000, float 0x3EC361CF00000000>, <2 x float> <float 0x3FA39E0000000000, float 0x3ED0F73FC0000000>, <2 x float> <float 0x3FA7740000000000, float 0x3EC63D8CA0000000>, <2 x float> <float 0x3FAB420000000000, float 0x3EDBAE2320000000>, <2 x float> <float 0x3FAF0A0000000000, float 0x3EB86008A0000000>, <2 x float> <float 0x3FB1640000000000, float 0x3EF36EEA20000000>, <2 x float> <float 0x3FB3400000000000, float 0x3EFD7961A0000000>, <2 x float> <float 0x3FB51A0000000000, float 0x3EF073F060000000>, <2 x float> <float 0x3FB6F00000000000, float 0x3EEA515CA0000000>, <2 x float> <float 0x3FB8C20000000000, float 0x3EF45D6300000000>, <2 x float> <float 0x3FBA920000000000, float 0x3EDB4E92A0000000>, <2 x float> <float 0x3FBC5E0000000000, float 0x3ED523D6E0000000>, <2 x float> <float 0x3FBE260000000000, float 0x3EF076E2A0000000>, <2 x float> <float 0x3FBFEC0000000000, float 0x3EE2263B60000000>, <2 x float> <float 0x3FC0D60000000000, float 0x3F07E7CD00000000>, <2 x float> <float 0x3FC1B60000000000, float 0x3F02AD52E0000000>, <2 x float> <float 0x3FC2940000000000, float 0x3F052F81E0000000>, <2 x float> <float 0x3FC3700000000000, float 0x3F0FC201E0000000>, <2 x float> <float 0x3FC44C0000000000, float 0x3F02B6CCA0000000>, <2 x float> <float 0x3FC5260000000000, float 0x3EFCBC7420000000>, <2 x float> <float 0x3FC5FE0000000000, float 0x3F03070A60000000>, <2 x float> <float 0x3FC6D60000000000, float 0x3EBFCE33A0000000>, <2 x float> <float 0x3FC7AA0000000000, float 0x3F08902100000000>, <2 x float> <float 0x3FC87E0000000000, float 0x3F0A065200000000>, <2 x float> <float 0x3FC9520000000000, float 0x3EE6A73D00000000>, <2 x float> <float 0x3FCA220000000000, float 0x3F0BC1FE20000000>, <2 x float> <float 0x3FCAF20000000000, float 0x3F0C94E800000000>, <2 x float> <float 0x3FCBC20000000000, float 0x3EF0CE85A0000000>, <2 x float> <float 0x3FCC8E0000000000, float 0x3F0F7C79A0000000>, <2 x float> <float 0x3FCD5C0000000000, float 0x3ED0B5A7C0000000>, <2 x float> <float 0x3FCE260000000000, float 0x3F0076E2A0000000>, <2 x float> <float 0x3FCEF00000000000, float 0x3EF5B97B80000000>, <2 x float> <float 0x3FCFB80000000000, float 0x3F0186D5E0000000>, <2 x float> <float 0x3FD0400000000000, float 0x3EE2CA5A60000000>, <2 x float> <float 0x3FD0A20000000000, float 0x3F124E2720000000>, <2 x float> <float 0x3FD1040000000000, float 0x3F18BF9AE0000000>, <2 x float> <float 0x3FD1660000000000, float 0x3F15CABAA0000000>, <2 x float> <float 0x3FD1C80000000000, float 0x3F03182D20000000>, <2 x float> <float 0x3FD2280000000000, float 0x3F141FBCE0000000>, <2 x float> <float 0x3FD2880000000000, float 0x3F15A13DE0000000>, <2 x float> <float 0x3FD2E80000000000, float 0x3F0C575C20000000>, <2 x float> <float 0x3FD3460000000000, float 0x3F1DD9A980000000>, <2 x float> <float 0x3FD3A60000000000, float 0x3EF3155A40000000>, <2 x float> <float 0x3FD4040000000000, float 0x3EE8434340000000>, <2 x float> <float 0x3FD4600000000000, float 0x3F18BC21C0000000>, <2 x float> <float 0x3FD4BE0000000000, float 0x3EF7E55DC0000000>, <2 x float> <float 0x3FD51A0000000000, float 0x3F05B0E5A0000000>, <2 x float> <float 0x3FD5760000000000, float 0x3EFDC5D140000000>, <2 x float> <float 0x3FD5D00000000000, float 0x3F1BDBF580000000>, <2 x float> <float 0x3FD62C0000000000, float 0x3F005E5720000000>, <2 x float> <float 0x3FD6860000000000, float 0x3F0903D360000000>, <2 x float> <float 0x3FD6E00000000000, float 0x3F01D54560000000>, <2 x float> <float 0x3FD7380000000000, float 0x3F1D7F6BA0000000>, <2 x float> <float 0x3FD7920000000000, float 0x3F04ABFBA0000000>, <2 x float> <float 0x3FD7EA0000000000, float 0x3F0F077040000000>, <2 x float> <float 0x3FD8420000000000, float 0x3F0A3B43C0000000>, <2 x float> <float 0x3FD89A0000000000, float 0x3EE9C360A0000000>, <2 x float> <float 0x3FD8F00000000000, float 0x3F11E87360000000>, <2 x float> <float 0x3FD9460000000000, float 0x3F1941C200000000>, <2 x float> <float 0x3FD99C0000000000, float 0x3F19581160000000>, <2 x float> <float 0x3FD9F20000000000, float 0x3F123ECBE0000000>, <2 x float> <float 0x3FDA480000000000, float 0x3EF0243960000000>, <2 x float> <float 0x3FDA9C0000000000, float 0x3F0D935340000000>, <2 x float> <float 0x3FDAF00000000000, float 0x3F12932460000000>, <2 x float> <float 0x3FDB440000000000, float 0x3F0EEF7980000000>, <2 x float> <float 0x3FDB980000000000, float 0x3EF625A4C0000000>, <2 x float> <float 0x3FDBEA0000000000, float 0x3F14D9DA60000000>, <2 x float> <float 0x3FDC3C0000000000, float 0x3F1D7A7CC0000000>, <2 x float> <float 0x3FDC8E0000000000, float 0x3F1F7C79A0000000>, <2 x float> <float 0x3FDCE00000000000, float 0x3F1AF0B840000000>, <2 x float> <float 0x3FDD320000000000, float 0x3F0FCFC000000000>, <2 x float> <float 0x3FDD820000000000, float 0x3F1E7258A0000000>, <2 x float> <float 0x3FDDD40000000000, float 0x3EFA813060000000>, <2 x float> <float 0x3FDE240000000000, float 0x3F01034F80000000>, <2 x float> <float 0x3FDE740000000000, float 0x3EF09875A0000000>, <2 x float> <float 0x3FDEC20000000000, float 0x3F199D2460000000>, <2 x float> <float 0x3FDF120000000000, float 0x3F01EBF5E0000000>, <2 x float> <float 0x3FDF600000000000, float 0x3F123FA700000000>, <2 x float> <float 0x3FDFAE0000000000, float 0x3F1588F780000000>, <2 x float> <float 0x3FDFFC0000000000, float 0x3F12E08560000000>, <2 x float> <float 0x3FE0240000000000, float 0x3F252A5A40000000>, <2 x float> <float 0x3FE04A0000000000, float 0x3F2DF9DA80000000>, <2 x float> <float 0x3FE0720000000000, float 0x3EFF2E0E60000000>, <2 x float> <float 0x3FE0980000000000, float 0x3F0BD3D5C0000000>, <2 x float> <float 0x3FE0BE0000000000, float 0x3F0CB90940000000>, <2 x float> <float 0x3FE0E40000000000, float 0x3F02617460000000>, <2 x float> <float 0x3FE1080000000000, float 0x3F2F39E2C0000000>, <2 x float> <float 0x3FE12E0000000000, float 0x3F27195920000000>, <2 x float> <float 0x3FE1540000000000, float 0x3F187A5E80000000>, <2 x float> <float 0x3FE1780000000000, float 0x3F2EABBD80000000>, <2 x float> <float 0x3FE19E0000000000, float 0x3F1CD68CE0000000>, <2 x float> <float 0x3FE1C20000000000, float 0x3F2B81F700000000>, <2 x float> <float 0x3FE1E80000000000, float 0x3F07D79C00000000>, <2 x float> <float 0x3FE20C0000000000, float 0x3F1B9A3240000000>, <2 x float> <float 0x3FE2300000000000, float 0x3F230D7BE0000000>, <2 x float> <float 0x3FE2540000000000, float 0x3F25BCE980000000>, <2 x float> <float 0x3FE2780000000000, float 0x3F25E12880000000>, <2 x float> <float 0x3FE29C0000000000, float 0x3F237FEC20000000>, <2 x float> <float 0x3FE2C00000000000, float 0x3F1D3DA880000000>, <2 x float> <float 0x3FE2E40000000000, float 0x3F0D0DB900000000>, <2 x float> <float 0x3FE3060000000000, float 0x3F2D7334E0000000>, <2 x float> <float 0x3FE32A0000000000, float 0x3F21339120000000>, <2 x float> <float 0x3FE34E0000000000, float 0x3EF44ECE60000000>, <2 x float> <float 0x3FE3700000000000, float 0x3F217B5460000000>, <2 x float> <float 0x3FE3920000000000, float 0x3F2E0D3560000000>, <2 x float> <float 0x3FE3B60000000000, float 0x3F10893FE0000000>, <2 x float> <float 0x3FE3D80000000000, float 0x3F2026A700000000>, <2 x float> <float 0x3FE3FA0000000000, float 0x3F25B84D00000000>, <2 x float> <float 0x3FE41C0000000000, float 0x3F28FE8460000000>, <2 x float> <float 0x3FE43E0000000000, float 0x3F29FE2F80000000>, <2 x float> <float 0x3FE4600000000000, float 0x3F28BC21C0000000>, <2 x float> <float 0x3FE4820000000000, float 0x3F253D1EA0000000>, <2 x float> <float 0x3FE4A40000000000, float 0x3F1F0BB600000000>, <2 x float> <float 0x3FE4C60000000000, float 0x3F0E6BF320000000>, <2 x float> <float 0x3FE4E60000000000, float 0x3F2D811B60000000>, <2 x float> <float 0x3FE5080000000000, float 0x3F213CC000000000>, <2 x float> <float 0x3FE52A0000000000, float 0x3EF6932DE0000000>, <2 x float> <float 0x3FE54A0000000000, float 0x3F22467980000000>, <2 x float> <float 0x3FE56A0000000000, float 0x3F2F9D5B20000000>, <2 x float> <float 0x3FE58C0000000000, float 0x3F15B6B9A0000000>, <2 x float> <float 0x3FE5AC0000000000, float 0x3F2404C340000000>, <2 x float> <float 0x3FE5CC0000000000, float 0x3F2B1DC6C0000000>, <2 x float> <float 0x3FE5EE0000000000, float 0x3EB54920A0000000>, <2 x float> <float 0x3FE60E0000000000, float 0x3EF97A23C0000000>, <2 x float> <float 0x3FE62E0000000000, float 0x3F00BFBE80000000>], align 8
@LOG2_TBL = internal unnamed_addr constant [129 x <2 x float>] [<2 x float> zeroinitializer, <2 x float> <float 0x3F86F80000000000, float 0x3EE942DBA0000000>, <2 x float> <float 0x3F96E00000000000, float 0x3EFE5A1700000000>, <2 x float> <float 0x3FA1180000000000, float 0x3F03475440000000>, <2 x float> <float 0x3FA6B80000000000, float 0x3EF69BAC60000000>, <2 x float> <float 0x3FAC480000000000, float 0x3F07EAE420000000>, <2 x float> <float 0x3FB0E80000000000, float 0x3F09C4FD00000000>, <2 x float> <float 0x3FB3A80000000000, float 0x3F017EE920000000>, <2 x float> <float 0x3FB6600000000000, float 0x3F0FB7D640000000>, <2 x float> <float 0x3FB9180000000000, float 0x3EE42DC8C0000000>, <2 x float> <float 0x3FBBC80000000000, float 0x3ED0902B60000000>, <2 x float> <float 0x3FBE700000000000, float 0x3F07608BE0000000>, <2 x float> <float 0x3FC0880000000000, float 0x3F21623360000000>, <2 x float> <float 0x3FC1D80000000000, float 0x3F23465D40000000>, <2 x float> <float 0x3FC3280000000000, float 0x3F174F13C0000000>, <2 x float> <float 0x3FC4700000000000, float 0x3F2AA7E600000000>, <2 x float> <float 0x3FC5C00000000000, float 0x3ECA39FBC0000000>, <2 x float> <float 0x3FC7000000000000, float 0x3F2D0B53A0000000>, <2 x float> <float 0x3FC8480000000000, float 0x3F20AF40A0000000>, <2 x float> <float 0x3FC9880000000000, float 0x3F2B741DE0000000>, <2 x float> <float 0x3FCAC80000000000, float 0x3F2D78B6C0000000>, <2 x float> <float 0x3FCC080000000000, float 0x3F26DB3760000000>, <2 x float> <float 0x3FCD480000000000, float 0x3F0EE4C320000000>, <2 x float> <float 0x3FCE800000000000, float 0x3F202F9D20000000>, <2 x float> <float 0x3FCFB80000000000, float 0x3F205AE400000000>, <2 x float> <float 0x3FD0780000000000, float 0x3F10ADBB00000000>, <2 x float> <float 0x3FD1100000000000, float 0x3F283ED680000000>, <2 x float> <float 0x3FD1A80000000000, float 0x3F3016CA40000000>, <2 x float> <float 0x3FD2400000000000, float 0x3F301EAC20000000>, <2 x float> <float 0x3FD2D80000000000, float 0x3F2887E260000000>, <2 x float> <float 0x3FD3700000000000, float 0x3F124CEA40000000>, <2 x float> <float 3.125000e-01, float 0x3F3918EC60000000>, <2 x float> <float 0x3FD4980000000000, float 0x3F23C25E60000000>, <2 x float> <float 0x3FD5280000000000, float 0x3F36F7F120000000>, <2 x float> <float 0x3FD5C00000000000, float 0x3EDA39FBC0000000>, <2 x float> <float 0x3FD6500000000000, float 0x3F18FE4660000000>, <2 x float> <float 0x3FD6E00000000000, float 0x3F210E6CE0000000>, <2 x float> <float 0x3FD7700000000000, float 0x3F1D2BA7E0000000>, <2 x float> <float 3.750000e-01, float 0x3F04AC62C0000000>, <2 x float> <float 0x3FD8880000000000, float 0x3F3A71CB80000000>, <2 x float> <float 0x3FD9180000000000, float 0x3F2DD448E0000000>, <2 x float> <float 0x3FD9A80000000000, float 0x3EA1C8F100000000>, <2 x float> <float 0x3FDA300000000000, float 0x3F2BB053E0000000>, <2 x float> <float 0x3FDAB80000000000, float 0x3F3861E5E0000000>, <2 x float> <float 0x3FDB400000000000, float 0x3F3FAFDCE0000000>, <2 x float> <float 0x3FDBD00000000000, float 0x3F0E5D3CE0000000>, <2 x float> <float 0x3FDC580000000000, float 0x3F12FAD280000000>, <2 x float> <float 0x3FDCE00000000000, float 0x3F04924740000000>, <2 x float> <float 0x3FDD600000000000, float 0x3F3D4F80C0000000>, <2 x float> <float 0x3FDDE80000000000, float 0x3F34FF5100000000>, <2 x float> <float 0x3FDE700000000000, float 0x3F23550F20000000>, <2 x float> <float 0x3FDEF00000000000, float 0x3F3B59CCA0000000>, <2 x float> <float 0x3FDF780000000000, float 0x3F242B4640000000>, <2 x float> <float 0x3FDFF80000000000, float 0x3F35E66A00000000>, <2 x float> <float 0x3FE0380000000000, float 0x3F4F6A2E40000000>, <2 x float> <float 5.156250e-01, float 0x3F139E4FE0000000>, <2 x float> <float 0x3FE0C00000000000, float 0x3F20500D60000000>, <2 x float> <float 5.312500e-01, float 0x3F213B1520000000>, <2 x float> <float 0x3FE1400000000000, float 0x3F193F5420000000>, <2 x float> <float 5.468750e-01, float 0x3EF467B940000000>, <2 x float> <float 0x3FE1B80000000000, float 0x3F4CC47A40000000>, <2 x float> <float 0x3FE1F80000000000, float 0x3F478F4C20000000>, <2 x float> <float 0x3FE2380000000000, float 0x3F41075080000000>, <2 x float> <float 0x3FE2780000000000, float 0x3F32602C20000000>, <2 x float> <float 0x3FE2B80000000000, float 0x3EBA39FBC0000000>, <2 x float> <float 0x3FE2F00000000000, float 0x3F45A1D7A0000000>, <2 x float> <float 0x3FE3300000000000, float 0x3F33E355A0000000>, <2 x float> <float 0x3FE3680000000000, float 0x3F4CFFEDA0000000>, <2 x float> <float 0x3FE3A80000000000, float 0x3F3D9FD500000000>, <2 x float> <float 0x3FE3E00000000000, float 0x3F4F64DE60000000>, <2 x float> <float 0x3FE4200000000000, float 0x3F3D83F4C0000000>, <2 x float> <float 0x3FE4580000000000, float 0x3F4CEA6280000000>, <2 x float> <float 0x3FE4980000000000, float 0x3F33C25E60000000>, <2 x float> <float 0x3FE4D00000000000, float 0x3F45A96CC0000000>, <2 x float> <float 0x3FE5100000000000, float 0x3EE18708A0000000>, <2 x float> <float 0x3FE5480000000000, float 0x3F33746520000000>, <2 x float> <float 6.718750e-01, float 0x3F42089A60000000>, <2 x float> <float 0x3FE5B80000000000, float 0x3F493432C0000000>, <2 x float> <float 0x3FE5F00000000000, float 0x3F4F3FD060000000>, <2 x float> <float 0x3FE6300000000000, float 0x3F20B8F540000000>, <2 x float> <float 0x3FE6680000000000, float 0x3F30047220000000>, <2 x float> <float 0x3FE6A00000000000, float 0x3F357CF2C0000000>, <2 x float> <float 0x3FE6D80000000000, float 0x3F38CB53A0000000>, <2 x float> <float 0x3FE7100000000000, float 0x3F39F4D8A0000000>, <2 x float> <float 0x3FE7480000000000, float 0x3F38FEB260000000>, <2 x float> <float 7.343750e-01, float 0x3F35EDFEE0000000>, <2 x float> <float 0x3FE7B80000000000, float 0x3F30C7C9A0000000>, <2 x float> <float 0x3FE7F00000000000, float 0x3F23221820000000>, <2 x float> <float 0x3FE8280000000000, float 0x3ED3AB7CE0000000>, <2 x float> <float 0x3FE8580000000000, float 0x3F4A82C2C0000000>, <2 x float> <float 0x3FE8900000000000, float 0x3F43DD2C00000000>, <2 x float> <float 0x3FE8C80000000000, float 0x3F3871DA40000000>, <2 x float> <float 7.812500e-01, float 0x3F1CC2C000000000>, <2 x float> <float 0x3FE9300000000000, float 0x3F49FDB680000000>, <2 x float> <float 0x3FE9680000000000, float 0x3F3ED69560000000>, <2 x float> <float 0x3FE9A00000000000, float 0x3F1F1A7600000000>, <2 x float> <float 0x3FE9D00000000000, float 0x3F4767F540000000>, <2 x float> <float 0x3FEA080000000000, float 0x3F33F6D260000000>, <2 x float> <float 0x3FEA380000000000, float 0x3F4B9FCE20000000>, <2 x float> <float 0x3FEA700000000000, float 0x3F38AE8160000000>, <2 x float> <float 0x3FEAA00000000000, float 0x3F4C23D600000000>, <2 x float> <float 0x3FEAD80000000000, float 0x3F360F3880000000>, <2 x float> <float 0x3FEB080000000000, float 0x3F49049AE0000000>, <2 x float> <float 0x3FEB400000000000, float 0x3F28734A80000000>, <2 x float> <float 0x3FEB700000000000, float 0x3F42523D40000000>, <2 x float> <float 0x3FEBA00000000000, float 0x3F4DA6CE60000000>, <2 x float> <float 0x3FEBD80000000000, float 0x3F3038E620000000>, <2 x float> <float 0x3FEC080000000000, float 0x3F41B511E0000000>, <2 x float> <float 0x3FEC380000000000, float 0x3F4A728B80000000>, <2 x float> <float 0x3FEC700000000000, float 0x3F12B5D220000000>, <2 x float> <float 0x3FECA00000000000, float 0x3F32C6E540000000>, <2 x float> <float 0x3FECD00000000000, float 0x3F3F350640000000>, <2 x float> <float 9.062500e-01, float 0x3F44FDB480000000>, <2 x float> <float 0x3FED300000000000, float 0x3F498EC9E0000000>, <2 x float> <float 0x3FED600000000000, float 0x3F4D4F80C0000000>, <2 x float> <float 0x3FED980000000000, float 0x3EE0643D60000000>, <2 x float> <float 0x3FEDC80000000000, float 0x3F133567E0000000>, <2 x float> <float 0x3FEDF80000000000, float 0x3F1E0410C0000000>, <2 x float> <float 0x3FEE280000000000, float 0x3F2142E0E0000000>, <2 x float> <float 0x3FEE580000000000, float 0x3F2063C880000000>, <2 x float> <float 0x3FEE880000000000, float 0x3F18D66C40000000>, <2 x float> <float 0x3FEEB80000000000, float 0x3F057E32A0000000>, <2 x float> <float 0x3FEEE00000000000, float 0x3F4ED1C6C0000000>, <2 x float> <float 0x3FEF100000000000, float 0x3F4B8A0760000000>, <2 x float> <float 0x3FEF400000000000, float 0x3F47822F20000000>, <2 x float> <float 0x3FEF700000000000, float 0x3F42BBC3A0000000>, <2 x float> <float 0x3FEFA00000000000, float 0x3F3A708BA0000000>, <2 x float> <float 0x3FEFD00000000000, float 0x3F2BE4C7E0000000>, <2 x float> <float 1.000000e+00, float 0.000000e+00>], align 8
@SINHCOSH_TBL = internal unnamed_addr constant [37 x <2 x float>] [<2 x float> <float 0.000000e+00, float 1.000000e+00>, <2 x float> <float 0x3FF2CD9FC0000000, float 0x3FF8B07560000000>, <2 x float> <float 0x400D03CF60000000, float 0x400E18FA00000000>, <2 x float> <float 0x40240926E0000000, float 0x402422A4A0000000>, <2 x float> <float 0x403B4A3800000000, float 0x403B4EE860000000>, <2 x float> <float 0x40528D0160000000, float 0x40528D6FC0000000>, <2 x float> <float 0x406936D220000000, float 0x406936E680000000>, <2 x float> <float 0x4081228760000000, float 0x4081228940000000>, <2 x float> <float 0x409749EA60000000, float 0x409749EAA0000000>, <2 x float> <float 0x40AFA71580000000, float 0x40AFA71580000000>, <2 x float> <float 0x40C5829DC0000000, float 0x40C5829DE0000000>, <2 x float> <float 0x40DD3C4480000000, float 0x40DD3C4480000000>, <2 x float> <float 0x40F3DE1660000000, float 0x40F3DE1660000000>, <2 x float> <float 0x410B00B5A0000000, float 0x410B00B5A0000000>, <2 x float> <float 0x412259AC40000000, float 0x412259AC40000000>, <2 x float> <float 0x4138F0CCA0000000, float 0x4138F0CCA0000000>, <2 x float> <float 0x4150F2EBE0000000, float 0x4150F2EBE0000000>, <2 x float> <float 0x4167093480000000, float 0x4167093480000000>, <2 x float> <float 0x417F4F2200000000, float 0x417F4F2200000000>, <2 x float> <float 0x419546D900000000, float 0x419546D900000000>, <2 x float> <float 0x41ACEB0880000000, float 0x41ACEB0880000000>, <2 x float> <float 0x41C3A6E200000000, float 0x41C3A6E200000000>, <2 x float> <float 0x41DAB5ADC0000000, float 0x41DAB5ADC0000000>, <2 x float> <float 0x41F226AF40000000, float 0x41F226AF40000000>, <2 x float> <float 0x4208AB7FC0000000, float 0x4208AB7FC0000000>, <2 x float> <float 0x4220C3D3A0000000, float 0x4220C3D3A0000000>, <2 x float> <float 0x4236C93260000000, float 0x4236C93260000000>, <2 x float> <float 0x424EF82300000000, float 0x424EF82300000000>, <2 x float> <float 0x42650BBA40000000, float 0x42650BBA40000000>, <2 x float> <float 0x427C9AAE40000000, float 0x427C9AAE40000000>, <2 x float> <float 0x4293704700000000, float 0x4293704700000000>, <2 x float> <float 0x42AA6B7660000000, float 0x42AA6B7660000000>, <2 x float> <float 0x42C1F43FC0000000, float 0x42C1F43FC0000000>, <2 x float> <float 0x42D866F340000000, float 0x42D866F340000000>, <2 x float> <float 0x42F0953E20000000, float 0x42F0953E20000000>, <2 x float> <float 0x430689E220000000, float 0x430689E220000000>, <2 x float> <float 0x431EA215A0000000, float 0x431EA215A0000000>], align 8
@CBRT_TBL = internal unnamed_addr constant [129 x <2 x float>] [<2 x float> <float 1.000000e+00, float 0.000000e+00>, <2 x float> <float 0x3FF0080000000000, float 0x3F451CB0A0000000>, <2 x float> <float 0x3FF0140000000000, float 0x3F339221E0000000>, <2 x float> <float 0x3FF01C0000000000, float 0x3F4E069080000000>, <2 x float> <float 0x3FF0280000000000, float 0x3F41D69780000000>, <2 x float> <float 0x3FF0340000000000, float 0x3F24EA1BE0000000>, <2 x float> <float 0x3FF03C0000000000, float 0x3F4833B8E0000000>, <2 x float> <float 0x3FF0480000000000, float 0x3F35870020000000>, <2 x float> <float 0x3FF0500000000000, float 0x3F4CEB2900000000>, <2 x float> <float 0x3FF05C0000000000, float 0x3F3D57F340000000>, <2 x float> <float 0x3FF0680000000000, float 0x3EACC53AC0000000>, <2 x float> <float 0x3FF0700000000000, float 0x3F40FE0980000000>, <2 x float> <float 0x3FF07C0000000000, float 0x3F091B5860000000>, <2 x float> <float 0x3FF0840000000000, float 0x3F41C362E0000000>, <2 x float> <float 0x3FF0900000000000, float 0x3F094398E0000000>, <2 x float> <float 0x3FF0980000000000, float 0x3F41055BC0000000>, <2 x float> <float 0x3FF0A40000000000, float 0x3EC7E63CA0000000>, <2 x float> <float 0x3FF0AC0000000000, float 0x3F3D99E1A0000000>, <2 x float> <float 0x3FF0B40000000000, float 0x3F4D258DE0000000>, <2 x float> <float 0x3FF0C00000000000, float 0x3F36459620000000>, <2 x float> <float 0x3FF0C80000000000, float 0x3F48C5B0E0000000>, <2 x float> <float 0x3FF0D40000000000, float 0x3F283D0C80000000>, <2 x float> <float 0x3FF0DC0000000000, float 0x3F43008120000000>, <2 x float> <float 0x3FF0E40000000000, float 0x3F4F9A65A0000000>, <2 x float> <float 0x3FF0F00000000000, float 0x3F37BBCD80000000>, <2 x float> <float 0x3FF0F80000000000, float 0x3F47CBF680000000>, <2 x float> <float 0x3FF1040000000000, float 0x3F1B2C1660000000>, <2 x float> <float 0x3FF10C0000000000, float 0x3F3D56EA40000000>, <2 x float> <float 0x3FF1140000000000, float 0x3F499EB320000000>, <2 x float> <float 0x3FF1200000000000, float 0x3F21007A20000000>, <2 x float> <float 0x3FF1280000000000, float 0x3F3D212AA0000000>, <2 x float> <float 0x3FF1300000000000, float 0x3F4890F180000000>, <2 x float> <float 0x3FF13C0000000000, float 0x3F12104E20000000>, <2 x float> <float 0x3FF1440000000000, float 0x3F374961E0000000>, <2 x float> <float 0x3FF14C0000000000, float 0x3F44B9B660000000>, <2 x float> <float 0x3FF1540000000000, float 0x3F4D81E660000000>, <2 x float> <float 0x3FF1600000000000, float 0x3F27F825C0000000>, <2 x float> <float 0x3FF1680000000000, float 0x3F3C5DCA20000000>, <2 x float> <float 0x3FF1700000000000, float 0x3F46153BA0000000>, <2 x float> <float 0x3FF1780000000000, float 0x3F4DB1CC20000000>, <2 x float> <float 0x3FF1840000000000, float 0x3F24154B00000000>, <2 x float> <float 0x3FF18C0000000000, float 0x3F38211140000000>, <2 x float> <float 0x3FF1940000000000, float 0x3F42D42400000000>, <2 x float> <float 0x3FF19C0000000000, float 0x3F4950D820000000>, <2 x float> <float 0x3FF1A40000000000, float 0x3F4F8755C0000000>, <2 x float> <float 0x3FF1B00000000000, float 0x3F25E12A40000000>, <2 x float> <float 0x3FF1B80000000000, float 0x3F3648C380000000>, <2 x float> <float 0x3FF1C00000000000, float 0x3F408C43E0000000>, <2 x float> <float 0x3FF1C80000000000, float 0x3F45B09700000000>, <2 x float> <float 0x3FF1D00000000000, float 0x3F4A91FE80000000>, <2 x float> <float 0x3FF1D80000000000, float 0x3F4F311B60000000>, <2 x float> <float 0x3FF1E40000000000, float 0x3F1C746180000000>, <2 x float> <float 0x3FF1EC0000000000, float 0x3F2EABB540000000>, <2 x float> <float 0x3FF1F40000000000, float 0x3F370DB140000000>, <2 x float> <float 0x3FF1FC0000000000, float 0x3F3E45CBC0000000>, <2 x float> <float 0x3FF2040000000000, float 0x3F427FAA60000000>, <2 x float> <float 0x3FF20C0000000000, float 0x3F459DB980000000>, <2 x float> <float 0x3FF2140000000000, float 0x3F487DA460000000>, <2 x float> <float 0x3FF21C0000000000, float 0x3F4B1FFA00000000>, <2 x float> <float 0x3FF2240000000000, float 0x3F4D854780000000>, <2 x float> <float 0x3FF22C0000000000, float 0x3F4FAE17E0000000>, <2 x float> <float 0x3FF2380000000000, float 0x3F09AF40C0000000>, <2 x float> <float 0x3FF2400000000000, float 0x3F1A6319E0000000>, <2 x float> <float 0x3FF2480000000000, float 0x3F230BAA60000000>, <2 x float> <float 0x3FF2500000000000, float 0x3F27FC3620000000>, <2 x float> <float 0x3FF2580000000000, float 0x3F2C053620000000>, <2 x float> <float 0x3FF2600000000000, float 0x3F2F28A980000000>, <2 x float> <float 0x3FF2680000000000, float 0x3F30B44420000000>, <2 x float> <float 0x3FF2700000000000, float 0x3F316361A0000000>, <2 x float> <float 0x3FF2780000000000, float 0x3F31A2A2A0000000>, <2 x float> <float 1.156250e+00, float 0x3F3172F8E0000000>, <2 x float> <float 0x3FF2880000000000, float 0x3F30D55300000000>, <2 x float> <float 0x3FF2900000000000, float 0x3F2F9538E0000000>, <2 x float> <float 0x3FF2980000000000, float 0x3F2CA77B00000000>, <2 x float> <float 0x3FF2A00000000000, float 0x3F28E336A0000000>, <2 x float> <float 0x3FF2A80000000000, float 0x3F244A3040000000>, <2 x float> <float 0x3FF2B00000000000, float 0x3F1DBC4C80000000>, <2 x float> <float 0x3FF2B80000000000, float 0x3F1141A2A0000000>, <2 x float> <float 0x3FF2C00000000000, float 0x3EE93E44C0000000>, <2 x float> <float 0x3FF2C40000000000, float 0x3F4E6E4320000000>, <2 x float> <float 0x3FF2CC0000000000, float 0x3F4C447C60000000>, <2 x float> <float 0x3FF2D40000000000, float 0x3F49E80D80000000>, <2 x float> <float 0x3FF2DC0000000000, float 0x3F47595DC0000000>, <2 x float> <float 0x3FF2E40000000000, float 0x3F4498D300000000>, <2 x float> <float 0x3FF2EC0000000000, float 0x3F41A6D1E0000000>, <2 x float> <float 0x3FF2F40000000000, float 0x3F3D077BA0000000>, <2 x float> <float 0x3FF2FC0000000000, float 0x3F365FF1E0000000>, <2 x float> <float 0x3FF3040000000000, float 0x3F2EAF9120000000>, <2 x float> <float 0x3FF30C0000000000, float 0x3F1FBEFB80000000>, <2 x float> <float 0x3FF3140000000000, float 0x3EC44905A0000000>, <2 x float> <float 0x3FF3180000000000, float 0x3F4C017E60000000>, <2 x float> <float 0x3FF3200000000000, float 0x3F47BFDBE0000000>, <2 x float> <float 0x3FF3280000000000, float 0x3F434FBC60000000>, <2 x float> <float 0x3FF3300000000000, float 0x3F3D62F480000000>, <2 x float> <float 0x3FF3380000000000, float 0x3F33CADC60000000>, <2 x float> <float 0x3FF3400000000000, float 0x3F23AFC060000000>, <2 x float> <float 0x3FF3440000000000, float 0x3F4FC556E0000000>, <2 x float> <float 0x3FF34C0000000000, float 0x3F4A71F840000000>, <2 x float> <float 0x3FF3540000000000, float 0x3F44F22900000000>, <2 x float> <float 0x3FF35C0000000000, float 0x3F3E8C79C0000000>, <2 x float> <float 0x3FF3640000000000, float 0x3F32DD0D80000000>, <2 x float> <float 0x3FF36C0000000000, float 0x3F1B5AC2E0000000>, <2 x float> <float 0x3FF3700000000000, float 0x3F4D3D02A0000000>, <2 x float> <float 0x3FF3780000000000, float 0x3F46E3D580000000>, <2 x float> <float 1.218750e+00, float 0x3F40602000000000>, <2 x float> <float 0x3FF3880000000000, float 0x3F33646080000000>, <2 x float> <float 0x3FF3900000000000, float 0x3F16D29B60000000>, <2 x float> <float 0x3FF3940000000000, float 0x3F4BD8D5E0000000>, <2 x float> <float 0x3FF39C0000000000, float 0x3F44AE0300000000>, <2 x float> <float 0x3FF3A40000000000, float 0x3F3AB44B20000000>, <2 x float> <float 0x3FF3AC0000000000, float 0x3F27761CE0000000>, <2 x float> <float 0x3FF3B00000000000, float 0x3F4E387100000000>, <2 x float> <float 0x3FF3B80000000000, float 0x3F466B2B00000000>, <2 x float> <float 0x3FF3C00000000000, float 0x3F3CEBF960000000>, <2 x float> <float 0x3FF3C80000000000, float 0x3F2964B200000000>, <2 x float> <float 0x3FF3CC0000000000, float 0x3F4E150040000000>, <2 x float> <float 0x3FF3D40000000000, float 0x3F45A9BCE0000000>, <2 x float> <float 0x3FF3DC0000000000, float 0x3F3A2F4D80000000>, <2 x float> <float 0x3FF3E40000000000, float 0x3F217C0560000000>, <2 x float> <float 0x3FF3E80000000000, float 0x3F4B800F80000000>, <2 x float> <float 0x3FF3F00000000000, float 0x3F427B1320000000>, <2 x float> <float 0x3FF3F80000000000, float 0x3F32A09B80000000>, <2 x float> <float 1.250000e+00, float 0.000000e+00>, <2 x float> <float 0x3FF4040000000000, float 0x3F468A69C0000000>, <2 x float> <float 0x3FF40C0000000000, float 0x3F39DF9500000000>, <2 x float> <float 0x3FF4140000000000, float 0x3F19830500000000>, <2 x float> <float 0x3FF4180000000000, float 0x3F494C6A40000000>, <2 x float> <float 0x3FF4200000000000, float 0x3F3E884940000000>, <2 x float> <float 0x3FF4280000000000, float 0x3F245F31A0000000>], align 8
@EXP_TBL_EP = internal unnamed_addr constant [65 x <2 x float>] [<2 x float> <float 1.000000e+00, float 0.000000e+00>, <2 x float> <float 0x3FF02C0000000000, float 0x3F2347CEE0000000>, <2 x float> <float 0x3FF0580000000000, float 0x3F3B0D3140000000>, <2 x float> <float 0x3FF0840000000000, float 0x3F4A28C3A0000000>, <2 x float> <float 0x3FF0B40000000000, float 0x3F3586CF80000000>, <2 x float> <float 0x3FF0E00000000000, float 0x3F4F619680000000>, <2 x float> <float 0x3FF1100000000000, float 0x3F480E8080000000>, <2 x float> <float 0x3FF1400000000000, float 0x3F44D57540000000>, <2 x float> <float 0x3FF1700000000000, float 0x3F45C1E3E0000000>, <2 x float> <float 0x3FF1A00000000000, float 0x3F4ADF5B60000000>, <2 x float> <float 0x3FF1D40000000000, float 0x3F20E62D00000000>, <2 x float> <float 0x3FF2040000000000, float 0x3F41DC4300000000>, <2 x float> <float 0x3FF2380000000000, float 0x3F1E9B9D40000000>, <2 x float> <float 0x3FF2680000000000, float 0x3F4A2B2F00000000>, <2 x float> <float 0x3FF29C0000000000, float 0x3F44EFA8E0000000>, <2 x float> <float 0x3FF2D00000000000, float 0x3F442D3720000000>, <2 x float> <float 0x3FF3040000000000, float 0x3F47F05180000000>, <2 x float> <float 0x3FF33C0000000000, float 0x3EE164C820000000>, <2 x float> <float 0x3FF3700000000000, float 0x3F3A7373A0000000>, <2 x float> <float 0x3FF3A40000000000, float 0x3F4ED9A720000000>, <2 x float> <float 0x3FF3DC0000000000, float 0x3F45326080000000>, <2 x float> <float 0x3FF4140000000000, float 0x3F40510FA0000000>, <2 x float> <float 0x3FF44C0000000000, float 0x3F40430300000000>, <2 x float> <float 0x3FF4840000000000, float 0x3F4515AE00000000>, <2 x float> <float 0x3FF4BC0000000000, float 0x3F4ED6A9A0000000>, <2 x float> <float 0x3FF4F80000000000, float 0x3F3B2769C0000000>, <2 x float> <float 0x3FF5340000000000, float 0x3F05AB4EA0000000>, <2 x float> <float 0x3FF56C0000000000, float 0x3F4A39B5A0000000>, <2 x float> <float 0x3FF5A80000000000, float 0x3F483EEA40000000>, <2 x float> <float 0x3FF5E40000000000, float 0x3F4B78AD60000000>, <2 x float> <float 0x3FF6240000000000, float 0x3F1FAC0E80000000>, <2 x float> <float 0x3FF6600000000000, float 0x3F41C412A0000000>, <2 x float> <float 0x3FF6A00000000000, float 0x3F23CCCFE0000000>, <2 x float> <float 0x3FF6DC0000000000, float 0x3F4D91E320000000>, <2 x float> <float 0x3FF71C0000000000, float 0x3F4BAF4760000000>, <2 x float> <float 0x3FF75C0000000000, float 0x3F4F5AB200000000>, <2 x float> <float 0x3FF7A00000000000, float 0x3F31473EA0000000>, <2 x float> <float 0x3FF7E00000000000, float 0x3F4799B660000000>, <2 x float> <float 0x3FF8240000000000, float 0x3F389994C0000000>, <2 x float> <float 0x3FF8680000000000, float 0x3F2B336880000000>, <2 x float> <float 0x3FF8AC0000000000, float 0x3F2CA84540000000>, <2 x float> <float 0x3FF8F00000000000, float 0x3F3AE99140000000>, <2 x float> <float 0x3FF9340000000000, float 0x3F49BD8660000000>, <2 x float> <float 0x3FF97C0000000000, float 0x3F3829FDE0000000>, <2 x float> <float 0x3FF9C40000000000, float 0x3F22305460000000>, <2 x float> <float 0x3FFA0C0000000000, float 0x3F199ED760000000>, <2 x float> <float 0x3FFA540000000000, float 0x3F303B23E0000000>, <2 x float> <float 0x3FFA9C0000000000, float 0x3F435AABC0000000>, <2 x float> <float 0x3FFAE80000000000, float 0x3F23F32B40000000>, <2 x float> <float 0x3FFB300000000000, float 0x3F4D15C260000000>, <2 x float> <float 0x3FFB7C0000000000, float 0x3F4BB797C0000000>, <2 x float> <float 0x3FFBCC0000000000, float 0x3EFE904BC0000000>, <2 x float> <float 0x3FFC180000000000, float 0x3F39BDD840000000>, <2 x float> <float 0x3FFC640000000000, float 0x3F4F8972A0000000>, <2 x float> <float 0x3FFCB40000000000, float 0x3F4906E760000000>, <2 x float> <float 0x3FFD040000000000, float 0x3F496A5020000000>, <2 x float> <float 0x3FFD580000000000, float 0x3EF8DCFBA0000000>, <2 x float> <float 0x3FFDA80000000000, float 0x3F3E603DA0000000>, <2 x float> <float 0x3FFDFC0000000000, float 0x3F22E66F60000000>, <2 x float> <float 0x3FFE500000000000, float 0x3F0773C580000000>, <2 x float> <float 0x3FFEA40000000000, float 0x3F25F45480000000>, <2 x float> <float 0x3FFEF80000000000, float 0x3F40DF7300000000>, <2 x float> <float 0x3FFF500000000000, float 0x3F1D96DB80000000>, <2 x float> <float 0x3FFFA40000000000, float 0x3F4E0C0CE0000000>, <2 x float> <float 2.000000e+00, float 0.000000e+00>], align 8
@CBRT_INV_TBL = internal unnamed_addr constant [257 x double] [double 2.000000e+00, double 0x3FFFE01FE01FE020, double 0x3FFFC07F01FC07F0, double 0x3FFFA11CAA01FA12, double 0x3FFF81F81F81F820, double 0x3FFF6310ACA0DBB5, double 0x3FFF44659E4A4271, double 0x3FFF25F644230AB5, double 0x3FFF07C1F07C1F08, double 0x3FFEE9C7F8458E02, double 0x3FFECC07B301ECC0, double 0x3FFEAE807ABA01EB, double 0x3FFE9131ABF0B767, double 0x3FFE741AA59750E4, double 0x3FFE573AC901E574, double 0x3FFE3A9179DC1A73, double 0x3FFE1E1E1E1E1E1E, double 0x3FFE01E01E01E01E, double 0x3FFDE5D6E3F8868A, double 0x3FFDCA01DCA01DCA, double 0x3FFDAE6076B981DB, double 0x3FFD92F2231E7F8A, double 0x3FFD77B654B82C34, double 0x3FFD5CAC807572B2, double 0x3FFD41D41D41D41D, double 0x3FFD272CA3FC5B1A, double 0x3FFD0CB58F6EC074, double 0x3FFCF26E5C44BFC6, double 0x3FFCD85689039B0B, double 0x3FFCBE6D9601CBE7, double 0x3FFCA4B3055EE191, double 0x3FFC8B265AFB8A42, double 0x3FFC71C71C71C71C, double 0x3FFC5894D10D4986, double 0x3FFC3F8F01C3F8F0, double 0x3FFC26B5392EA01C, double 0x3FFC0E070381C0E0, double 0x3FFBF583EE868D8B, double 0x3FFBDD2B899406F7, double 0x3FFBC4FD65883E7B, double 0x3FFBACF914C1BAD0, double 0x3FFB951E2B18FF23, double 0x3FFB7D6C3DDA338B, double 0x3FFB65E2E3BEEE05, double 0x3FFB4E81B4E81B4F, double 0x3FFB37484AD806CE, double 0x3FFB2036406C80D9, double 0x3FFB094B31D922A4, double 0x3FFAF286BCA1AF28, double 0x3FFADBE87F94905E, double 0x3FFAC5701AC5701B, double 0x3FFAAF1D2F87EBFD, double 0x3FFA98EF606A63BE, double 0x3FFA82E65130E159, double 0x3FFA6D01A6D01A6D, double 0x3FFA574107688A4A, double 0x3FFA41A41A41A41A, double 0x3FFA2C2A87C51CA0, double 0x3FFA16D3F97A4B02, double 0x3FFA01A01A01A01A, double 0x3FF9EC8E951033D9, double 0x3FF9D79F176B682D, double 0x3FF9C2D14EE4A102, double 0x3FF9AE24EA5510DA, double 1.600000e+00, double 0x3FF9852F0D8EC0FF, double 0x3FF970E4F80CB872, double 0x3FF95CBB0BE377AE, double 0x3FF948B0FCD6E9E0, double 0x3FF934C67F9B2CE6, double 0x3FF920FB49D0E229, double 0x3FF90D4F120190D5, double 0x3FF8F9C18F9C18FA, double 0x3FF8E6527AF1373F, double 0x3FF8D3018D3018D3, double 0x3FF8BFCE8062FF3A, double 0x3FF8ACB90F6BF3AA, double 0x3FF899C0F601899C, double 0x3FF886E5F0ABB04A, double 0x3FF87427BCC092B9, double 0x3FF8618618618618, double 0x3FF84F00C2780614, double 0x3FF83C977AB2BEDD, double 0x3FF82A4A0182A4A0, double 0x3FF8181818181818, double 0x3FF8060180601806, double 0x3FF7F405FD017F40, double 0x3FF7E225515A4F1D, double 0x3FF7D05F417D05F4, double 0x3FF7BEB3922E017C, double 0x3FF7AD2208E0ECC3, double 0x3FF79BAA6BB6398B, double 0x3FF78A4C8178A4C8, double 0x3FF77908119AC60D, double 0x3FF767DCE434A9B1, double 0x3FF756CAC201756D, double 0x3FF745D1745D1746, double 0x3FF734F0C541FE8D, double 0x3FF724287F46DEBC, double 0x3FF713786D9C7C09, double 0x3FF702E05C0B8170, double 0x3FF6F26016F26017, double 0x3FF6E1F76B4337C7, double 0x3FF6D1A62681C861, double 0x3FF6C16C16C16C17, double 0x3FF6B1490AA31A3D, double 0x3FF6A13CD1537290, double 0x3FF691473A88D0C0, double 0x3FF6816816816817, double 0x3FF6719F3601671A, double 0x3FF661EC6A5122F9, double 0x3FF6524F853B4AA3, double 0x3FF642C8590B2164, double 0x3FF63356B88AC0DE, double 0x3FF623FA77016240, double 0x3FF614B36831AE94, double 0x3FF6058160581606, double 0x3FF5F66434292DFC, double 0x3FF5E75BB8D015E7, double 0x3FF5D867C3ECE2A5, double 0x3FF5C9882B931057, double 0x3FF5BABCC647FA91, double 0x3FF5AC056B015AC0, double 0x3FF59D61F123CCAA, double 0x3FF58ED2308158ED, double 0x3FF5805601580560, double 0x3FF571ED3C506B3A, double 0x3FF56397BA7C52E2, double 0x3FF5555555555555, double 0x3FF54725E6BB82FE, double 0x3FF5390948F40FEB, double 0x3FF52AFF56A8054B, double 0x3FF51D07EAE2F815, double 0x3FF50F22E111C4C5, double 0x3FF5015015015015, double 0x3FF4F38F62DD4C9B, double 0x3FF4E5E0A72F0539, double 0x3FF4D843BEDC2C4C, double 0x3FF4CAB88725AF6E, double 0x3FF4BD3EDDA68FE1, double 0x3FF4AFD6A052BF5B, double 0x3FF4A27FAD76014A, double 0x3FF49539E3B2D067, double 0x3FF4880522014880, double 1.280000e+00, double 0x3FF46DCE34596066, double 0x3FF460CBC7F5CF9A, double 0x3FF453D9E2C776CA, double 0x3FF446F86562D9FB, double 0x3FF43A2730ABEE4D, double 0x3FF42D6625D51F87, double 0x3FF420B5265E5951, double 0x3FF4141414141414, double 0x3FF40782D10E6566, double 0x3FF3FB013FB013FB, double 0x3FF3EE8F42A5AF07, double 0x3FF3E22CBCE4A902, double 0x3FF3D5D991AA75C6, double 0x3FF3C995A47BABE7, double 0x3FF3BD60D9232955, double 0x3FF3B13B13B13B14, double 0x3FF3A524387AC822, double 0x3FF3991C2C187F63, double 0x3FF38D22D366088E, double 0x3FF3813813813814, double 0x3FF3755BD1C945EE, double 0x3FF3698DF3DE0748, double 0x3FF35DCE5F9F2AF8, double 0x3FF3521CFB2B78C1, double 0x3FF34679ACE01346, double 0x3FF33AE45B57BCB2, double 0x3FF32F5CED6A1DFA, double 0x3FF323E34A2B10BF, double 0x3FF3187758E9EBB6, double 0x3FF30D190130D190, double 0x3FF301C82AC40260, double 0x3FF2F684BDA12F68, double 0x3FF2EB4EA1FED14B, double 0x3FF2E025C04B8097, double 0x3FF2D50A012D50A0, double 0x3FF2C9FB4D812CA0, double 0x3FF2BEF98E5A3711, double 0x3FF2B404AD012B40, double 0x3FF2A91C92F3C105, double 0x3FF29E4129E4129E, double 0x3FF293725BB804A5, double 0x3FF288B01288B013, double 0x3FF27DFA38A1CE4D, double 0x3FF27350B8812735, double 0x3FF268B37CD60127, double 0x3FF25E22708092F1, double 0x3FF2539D7E9177B2, double 0x3FF2492492492492, double 0x3FF23EB79717605B, double 0x3FF23456789ABCDF, double 0x3FF22A0122A0122A, double 0x3FF21FB78121FB78, double 0x3FF21579804855E6, double 0x3FF20B470C67C0D9, double 0x3FF2012012012012, double 0x3FF1F7047DC11F70, double 0x3FF1ECF43C7FB84C, double 0x3FF1E2EF3B3FB874, double 0x3FF1D8F5672E4ABD, double 0x3FF1CF06ADA2811D, double 0x3FF1C522FC1CE059, double 0x3FF1BB4A4046ED29, double 0x3FF1B17C67F2BAE3, double 0x3FF1A7B9611A7B96, double 0x3FF19E0119E0119E, double 0x3FF19453808CA29C, double 0x3FF18AB083902BDB, double 0x3FF1811811811812, double 0x3FF1778A191BD684, double 0x3FF16E0689427379, double 0x3FF1648D50FC3201, double 0x3FF15B1E5F75270D, double 0x3FF151B9A3FDD5C9, double 0x3FF1485F0E0ACD3B, double 0x3FF13F0E8D344724, double 0x3FF135C81135C811, double 0x3FF12C8B89EDC0AC, double 0x3FF12358E75D3033, double 0x3FF11A3019A74826, double 0x3FF1111111111111, double 0x3FF107FBBE011080, double 0x3FF0FEF010FEF011, double 0x3FF0F5EDFAB325A2, double 0x3FF0ECF56BE69C90, double 0x3FF0E40655826011, double 0x3FF0DB20A88F4696, double 0x3FF0D24456359E3A, double 0x3FF0C9714FBCDA3B, double 0x3FF0C0A7868B4171, double 0x3FF0B7E6EC259DC8, double 0x3FF0AF2F722EECB5, double 0x3FF0A6810A6810A7, double 0x3FF09DDBA6AF8360, double 0x3FF0953F39010954, double 0x3FF08CABB37565E2, double 0x3FF0842108421084, double 0x3FF07B9F29B8EAE2, double 0x3FF073260A47F7C6, double 0x3FF06AB59C7912FB, double 1.024000e+00, double 0x3FF059EEA0727586, double 0x3FF05197F7D73404, double 0x3FF04949CC1664C5, double 0x3FF0410410410410, double 0x3FF038C6B78247FC, double 0x3FF03091B51F5E1A, double 0x3FF02864FC7729E9, double 0x3FF0204081020408, double 0x3FF0182436517A37, double 0x3FF0101010101010, double 0x3FF0080402010080, double 1.000000e+00], align 8
@LN_TBL = internal unnamed_addr constant [65 x <2 x double>] [<2 x double> zeroinitializer, <2 x double> <double 0x3F8FC0A800000000, double 0x3E361F807C79F3DB>, <2 x double> <double 0x3F9F829800000000, double 0x3E6873C1980267C8>, <2 x double> <double 0x3FA7745800000000, double 0x3E5EC65B9F88C69E>, <2 x double> <double 0x3FAF0A3000000000, double 0x3E58022C54CC2F99>, <2 x double> <double 0x3FB341D700000000, double 0x3E62C37A3A125330>, <2 x double> <double 0x3FB6F0D200000000, double 0x3E615CAD69737C93>, <2 x double> <double 0x3FBA926D00000000, double 0x3E4D256AB1B285E9>, <2 x double> <double 0x3FBE270700000000, double 0x3E5B8ABCB97A7AA2>, <2 x double> <double 0x3FC0D77E00000000, double 0x3E6F34239659A5DC>, <2 x double> <double 0x3FC2955280000000, double 0x3E6E07FD48D30177>, <2 x double> <double 0x3FC44D2B00000000, double 0x3E6B32DF4799F4F6>, <2 x double> <double 0x3FC5FF3000000000, double 0x3E6C29E4F4F21CF8>, <2 x double> <double 0x3FC7AB8900000000, double 0x3E1086C848DF1B59>, <2 x double> <double 0x3FC9525A80000000, double 0x3E4CF456B4764130>, <2 x double> <double 0x3FCAF3C900000000, double 0x3E63A02FFCB63398>, <2 x double> <double 0x3FCC8FF780000000, double 0x3E61E6A6886B0976>, <2 x double> <double 0x3FCE270700000000, double 0x3E6B8ABCB97A7AA2>, <2 x double> <double 0x3FCFB91800000000, double 0x3E6B578F8AA35552>, <2 x double> <double 0x3FD0A324C0000000, double 0x3E6139C871AFB9FC>, <2 x double> <double 0x3FD1675C80000000, double 0x3E65D5D30701CE64>, <2 x double> <double 0x3FD22941C0000000, double 0x3E6DE7BCB2D12142>, <2 x double> <double 0x3FD2E8E280000000, double 0x3E6D708E984E1664>, <2 x double> <double 0x3FD3A64C40000000, double 0x3E556945E9C72F36>, <2 x double> <double 0x3FD4618BC0000000, double 0x3E20E2F613E85BDA>, <2 x double> <double 0x3FD51AAD80000000, double 0x3E3CB7E0B42724F6>, <2 x double> <double 0x3FD5D1BD80000000, double 0x3E6FAC04E52846C7>, <2 x double> <double 0x3FD686C800000000, double 0x3E5E9B14AEC442BE>, <2 x double> <double 0x3FD739D7C0000000, double 0x3E6B5DE8034E7126>, <2 x double> <double 0x3FD7EAF800000000, double 0x3E6DC157E1B259D3>, <2 x double> <double 0x3FD89A3380000000, double 0x3E3B05096AD69C62>, <2 x double> <double 0x3FD9479400000000, double 0x3E5C2116FABA4CDD>, <2 x double> <double 0x3FD9F323C0000000, double 0x3E665FCC25F95B47>, <2 x double> <double 0x3FDA9CEC80000000, double 0x3E5A9A08498D4850>, <2 x double> <double 0x3FDB44F740000000, double 0x3E6DE647B1465F77>, <2 x double> <double 0x3FDBEB4D80000000, double 0x3E5DA71B7BF7861D>, <2 x double> <double 0x3FDC8FF7C0000000, double 0x3E3E6A6886B09760>, <2 x double> <double 0x3FDD32FE40000000, double 0x3E6F0075EAB0EF64>, <2 x double> <double 0x3FDDD46A00000000, double 0x3E33071282FB989B>, <2 x double> <double 0x3FDE744240000000, double 0x3E60EB43C3F1BED2>, <2 x double> <double 0x3FDF128F40000000, double 0x3E5FAF06ECB35C84>, <2 x double> <double 0x3FDFAF5880000000, double 0x3E4EF1E63DB35F68>, <2 x double> <double 0x3FE02552A0000000, double 0x3E469743FB1A71A5>, <2 x double> <double 0x3FE0723E40000000, double 0x3E6C1CDF404E5796>, <2 x double> <double 0x3FE0BE72E0000000, double 0x3E4094AA0ADA625E>, <2 x double> <double 0x3FE109F380000000, double 0x3E6E2D4C96FDE3EC>, <2 x double> <double 0x3FE154C3C0000000, double 0x3E62F4D5E9A98F34>, <2 x double> <double 0x3FE19EE6A0000000, double 0x3E6467C96ECC5CBE>, <2 x double> <double 0x3FE1E85F40000000, double 0x3E6E7040D03DEC5A>, <2 x double> <double 0x3FE23130C0000000, double 0x3E67BEBF4282DE36>, <2 x double> <double 0x3FE2795E00000000, double 0x3E6289B11AEB783F>, <2 x double> <double 0x3FE2C0E9E0000000, double 0x3E5A891D1772F538>, <2 x double> <double 0x3FE307D720000000, double 0x3E634F10BE1FB591>, <2 x double> <double 0x3FE34E2880000000, double 0x3E6D9CE1D316EB93>, <2 x double> <double 0x3FE393E0C0000000, double 0x3E63562A19A9C442>, <2 x double> <double 0x3FE3D90260000000, double 0x3E54E2ADF548084C>, <2 x double> <double 0x3FE41D8FE0000000, double 0x3E508CE55CC8C97A>, <2 x double> <double 0x3FE4618BC0000000, double 0x3E30E2F613E85BDA>, <2 x double> <double 0x3FE4A4F840000000, double 0x3E6DB03EBB0227BF>, <2 x double> <double 0x3FE4E7D800000000, double 0x3E61B75BB09CB098>, <2 x double> <double 0x3FE52A2D20000000, double 0x3E496F16ABB9DF22>, <2 x double> <double 0x3FE56BF9C0000000, double 0x3E65B3F399411C62>, <2 x double> <double 0x3FE5AD4040000000, double 0x3E586B3E59F65355>, <2 x double> <double 0x3FE5EE02A0000000, double 0x3E52482CEAE1AC12>, <2 x double> <double 0x3FE62E42E0000000, double 0x3E6EFA39EF35793C>], align 16
@ATAN_JBY256_TBL = internal unnamed_addr constant [241 x <2 x double>] [<2 x double> <double 0x3FAFF55B00000000, double 0x3E56E59FBD38DB2C>, <2 x double> <double 0x3FB0F99E00000000, double 0x3E64E3AA54DEDF96>, <2 x double> <double 0x3FB1F86D00000000, double 0x3E67E105AB1BDA88>, <2 x double> <double 0x3FB2F71900000000, double 0x3E48C5254D013FD0>, <2 x double> <double 0x3FB3F59F00000000, double 0x3E2CF8AB3AD62670>, <2 x double> <double 0x3FB4F3FD00000000, double 0x3E59DCA4BEC80468>, <2 x double> <double 0x3FB5F23200000000, double 0x3E53F4B5EC98A8DA>, <2 x double> <double 0x3FB6F03B00000000, double 0x3E6B9D49619D81FE>, <2 x double> <double 0x3FB7EE1800000000, double 0x3E43017887460934>, <2 x double> <double 0x3FB8EBC500000000, double 0x3E511E3ECA0B9944>, <2 x double> <double 0x3FB9E94100000000, double 0x3E54F3F73C5A332E>, <2 x double> <double 0x3FBAE68A00000000, double 0x3E5C71C8AE0E00A6>, <2 x double> <double 0x3FBBE39E00000000, double 0x3E67CDE0F86FBDC7>, <2 x double> <double 0x3FBCE07C00000000, double 0x3E570F328C889C72>, <2 x double> <double 0x3FBDDD2100000000, double 0x3E5C07AE9B994EFE>, <2 x double> <double 0x3FBED98C00000000, double 0x3E40C8021D7B1698>, <2 x double> <double 0x3FBFD5BA00000000, double 0x3E635585EDB8CB22>, <2 x double> <double 0x3FC068D500000000, double 0x3E70842567B30E96>, <2 x double> <double 0x3FC0E6AD00000000, double 0x3E799E811031472E>, <2 x double> <double 0x3FC1646500000000, double 0x3E6041821416BCEE>, <2 x double> <double 0x3FC1E1FA00000000, double 0x3E7F6086E4DC96F4>, <2 x double> <double 0x3FC25F6E00000000, double 0x3E471A535C5F1B58>, <2 x double> <double 0x3FC2DCBD00000000, double 0x3E765F743FE63CA1>, <2 x double> <double 0x3FC359E800000000, double 0x3E7DBD733472D014>, <2 x double> <double 0x3FC3D6EE00000000, double 0x3E7D18CC4D8B0D1D>, <2 x double> <double 0x3FC453CE00000000, double 0x3E78C12553C8FB29>, <2 x double> <double 0x3FC4D08700000000, double 0x3E753B49E2E8F991>, <2 x double> <double 0x3FC54D1800000000, double 0x3E77422AE148C141>, <2 x double> <double 0x3FC5C98100000000, double 0x3E4E3EC269DF56A8>, <2 x double> <double 0x3FC645BF00000000, double 0x3E7FF6754E7E0AC9>, <2 x double> <double 0x3FC6C1D400000000, double 0x3E7131267B1B5AAD>, <2 x double> <double 0x3FC73DBD00000000, double 0x3E7D14FA403A94BC>, <2 x double> <double 0x3FC7B97B00000000, double 0x3E62F396C089A3D8>, <2 x double> <double 0x3FC8350B00000000, double 0x3E7C731D78FA95BB>, <2 x double> <double 0x3FC8B06E00000000, double 0x3E7C50F385177399>, <2 x double> <double 0x3FC92BA300000000, double 0x3E6F41409C6F2C20>, <2 x double> <double 0x3FC9A6A800000000, double 0x3E7D2D90C4C39EC0>, <2 x double> <double 0x3FCA217E00000000, double 0x3E680420696F2106>, <2 x double> <double 0x3FCA9C2300000000, double 0x3E4B40327943A2E8>, <2 x double> <double 0x3FCB169600000000, double 0x3E65D35E02F3D2A2>, <2 x double> <double 0x3FCB90D700000000, double 0x3E64A498288117B0>, <2 x double> <double 0x3FCC0AE500000000, double 0x3E635DA119AFB324>, <2 x double> <double 0x3FCC84BF00000000, double 0x3E714E85CDB9A908>, <2 x double> <double 0x3FCCFE6500000000, double 0x3E638754E5547B9A>, <2 x double> <double 0x3FCD77D500000000, double 0x3E7BE40AE6CE3246>, <2 x double> <double 0x3FCDF11000000000, double 0x3E70C993B3BEA7E7>, <2 x double> <double 0x3FCE6A1400000000, double 0x3E71D2DD89AC3359>, <2 x double> <double 0x3FCEE2E100000000, double 0x3E61476603332C46>, <2 x double> <double 0x3FCF5B7500000000, double 0x3E7F25901BAC55B7>, <2 x double> <double 0x3FCFD3D100000000, double 0x3E7F881B7C826E28>, <2 x double> <double 0x3FD025FA00000000, double 0x3E7441996D698D20>, <2 x double> <double 0x3FD061EE00000000, double 0x3E8407AC521EA089>, <2 x double> <double 0x3FD09DC500000000, double 0x3E82FB0C6C4B1723>, <2 x double> <double 0x3FD0D97E00000000, double 0x3E8CA135966A3E18>, <2 x double> <double 0x3FD1151A00000000, double 0x3E6B1218E4D646E4>, <2 x double> <double 0x3FD1509700000000, double 0x3E6D4E72A350D288>, <2 x double> <double 0x3FD18BF500000000, double 0x3E84617E2F04C329>, <2 x double> <double 0x3FD1C73500000000, double 0x3E6096EC41E82650>, <2 x double> <double 0x3FD2025500000000, double 0x3E79F91F25773E6E>, <2 x double> <double 0x3FD23D5600000000, double 0x3E659C0820F1D674>, <2 x double> <double 0x3FD2783700000000, double 0x3E602BF7A2DF1064>, <2 x double> <double 0x3FD2B2F700000000, double 0x3E8FB36BFC40508F>, <2 x double> <double 0x3FD2ED9800000000, double 0x3E7EA08F3F8DC892>, <2 x double> <double 0x3FD3281800000000, double 0x3E73ED6254656A0E>, <2 x double> <double 0x3FD3627700000000, double 0x3E6B83F5E5E69C58>, <2 x double> <double 0x3FD39CB400000000, double 0x3E8D6EC2AF768592>, <2 x double> <double 0x3FD3D6D100000000, double 0x3E6493889A226F94>, <2 x double> <double 0x3FD410CB00000000, double 0x3E85AD8FA65279BA>, <2 x double> <double 0x3FD44AA400000000, double 0x3E6B615784D45434>, <2 x double> <double 0x3FD4845A00000000, double 0x3E809A184368F145>, <2 x double> <double 0x3FD4BDEE00000000, double 0x3E761A2439B0D91C>, <2 x double> <double 0x3FD4F75F00000000, double 0x3E7CE1A65E39A978>, <2 x double> <double 0x3FD530AD00000000, double 0x3E832A39A93B6A66>, <2 x double> <double 0x3FD569D800000000, double 0x3E81C3699AF804E7>, <2 x double> <double 0x3FD5A2E000000000, double 0x3E575E0F4E44EDE8>, <2 x double> <double 0x3FD5DBC300000000, double 0x3E8F77CED1A7A83B>, <2 x double> <double 0x3FD6148400000000, double 0x3E284E7F0CB1B500>, <2 x double> <double 0x3FD64D1F00000000, double 0x3E8EC6B838B02DFE>, <2 x double> <double 0x3FD6859700000000, double 0x3E83EBF4DFBEDA87>, <2 x double> <double 0x3FD6BDEA00000000, double 0x3E89397AED9CB475>, <2 x double> <double 0x3FD6F61900000000, double 0x3E707937BC239C54>, <2 x double> <double 0x3FD72E2200000000, double 0x3E8AA754553131B6>, <2 x double> <double 0x3FD7660700000000, double 0x3E74A05D407C45DC>, <2 x double> <double 0x3FD79DC600000000, double 0x3E8132231A206DD0>, <2 x double> <double 0x3FD7D56000000000, double 0x3E72D8ECFDD69C88>, <2 x double> <double 0x3FD80CD400000000, double 0x3E7A852C74218606>, <2 x double> <double 0x3FD8442200000000, double 0x3E871BF2BAEEBB50>, <2 x double> <double 0x3FD87B4B00000000, double 0x3E483D7DB7491820>, <2 x double> <double 0x3FD8B24D00000000, double 0x3E6CA50D92B6DA14>, <2 x double> <double 0x3FD8E92900000000, double 0x3E56F5CDE8530298>, <2 x double> <double 0x3FD91FDE00000000, double 0x3E7F343198910740>, <2 x double> <double 0x3FD9566D00000000, double 0x3E70E8D241CCD80A>, <2 x double> <double 0x3FD98CD500000000, double 0x3E71535AC619E6C8>, <2 x double> <double 0x3FD9C31600000000, double 0x3E77316041C36CD2>, <2 x double> <double 0x3FD9F93000000000, double 0x3E7985A000637D8E>, <2 x double> <double 0x3FDA2F2300000000, double 0x3E6F2F29858C0A68>, <2 x double> <double 0x3FDA64EE00000000, double 0x3E8879847F96D909>, <2 x double> <double 0x3FDA9A9200000000, double 0x3E8AB3D319E12E42>, <2 x double> <double 0x3FDAD00F00000000, double 0x3E75088162DFC4C2>, <2 x double> <double 0x3FDB056400000000, double 0x3E605749A1CD9D8C>, <2 x double> <double 0x3FDB3A9100000000, double 0x3E5DA65C6C6B8618>, <2 x double> <double 0x3FDB6F9600000000, double 0x3E6739BF7DF1AD64>, <2 x double> <double 0x3FDBA47300000000, double 0x3E6BC31252AA3340>, <2 x double> <double 0x3FDBD92800000000, double 0x3E5E528191AD3AA8>, <2 x double> <double 0x3FDC0DB400000000, double 0x3E8929D93DF19F18>, <2 x double> <double 0x3FDC421900000000, double 0x3E5FF11EB693A080>, <2 x double> <double 0x3FDC765500000000, double 0x3E455AE3F145A3A0>, <2 x double> <double 0x3FDCAA6800000000, double 0x3E7CBCD8C6C0CA82>, <2 x double> <double 0x3FDCDE5300000000, double 0x3E70CB04D425D304>, <2 x double> <double 0x3FDD121500000000, double 0x3E79ADFCAB5BE678>, <2 x double> <double 0x3FDD45AE00000000, double 0x3E893D90C5662508>, <2 x double> <double 0x3FDD791F00000000, double 0x3E768489BD35FF40>, <2 x double> <double 0x3FDDAC6700000000, double 0x3E3586ED3DA2B7E0>, <2 x double> <double 0x3FDDDF8500000000, double 0x3E87604D2E850EEE>, <2 x double> <double 0x3FDE127B00000000, double 0x3E7AC1D12BFB53D8>, <2 x double> <double 0x3FDE454800000000, double 0x3E39B3D468274740>, <2 x double> <double 0x3FDE77EB00000000, double 0x3E7FC5D68D10E53C>, <2 x double> <double 0x3FDEAA6500000000, double 0x3E88F9E51884BECB>, <2 x double> <double 0x3FDEDCB600000000, double 0x3E8A87F0869C06D1>, <2 x double> <double 0x3FDF0EDE00000000, double 0x3E831E7279F685FA>, <2 x double> <double 0x3FDF40DD00000000, double 0x3E46A8282F9719B0>, <2 x double> <double 0x3FDF72B200000000, double 0x3E60D2724A8A44E0>, <2 x double> <double 0x3FDFA45D00000000, double 0x3E8A60524B11AD4E>, <2 x double> <double 0x3FDFD5E000000000, double 0x3E575FDF832750F0>, <2 x double> <double 0x3FE0039C00000000, double 0x3E8CF06902E4CD36>, <2 x double> <double 0x3FE01C3400000000, double 0x3E6E82422D4F6D10>, <2 x double> <double 0x3FE034B700000000, double 0x3E524A091063E6C0>, <2 x double> <double 0x3FE04D2500000000, double 0x3E78A1A172DC6F38>, <2 x double> <double 0x3FE0657E00000000, double 0x3E929B6619F8A92D>, <2 x double> <double 0x3FE07DC300000000, double 0x3E79274D9C1B70C8>, <2 x double> <double 0x3FE095F300000000, double 0x3E50C34B1FBB7930>, <2 x double> <double 0x3FE0AE0E00000000, double 0x3E6639866C20EB50>, <2 x double> <double 0x3FE0C61400000000, double 0x3E86D6D0F6832E9E>, <2 x double> <double 0x3FE0DE0500000000, double 0x3E9AF54DEF99F25E>, <2 x double> <double 0x3FE0F5E200000000, double 0x3E916CFC52A00262>, <2 x double> <double 0x3FE10DAA00000000, double 0x3E8DCC1E83569C32>, <2 x double> <double 0x3FE1255D00000000, double 0x3E937F7A551ED425>, <2 x double> <double 0x3FE13CFB00000000, double 0x3E9F6360ADC98887>, <2 x double> <double 0x3FE1548500000000, double 0x3E92C6EC8D35A2C1>, <2 x double> <double 0x3FE16BFA00000000, double 0x3E8BD44DF84CB036>, <2 x double> <double 0x3FE1835A00000000, double 0x3E9117CF826E310E>, <2 x double> <double 0x3FE19AA500000000, double 0x3E9CA533F332CFC9>, <2 x double> <double 0x3FE1B1DC00000000, double 0x3E90F208509DBC2E>, <2 x double> <double 0x3FE1C8FE00000000, double 0x3E8CD07D93C945DE>, <2 x double> <double 0x3FE1E00B00000000, double 0x3E957BDFD67E6D72>, <2 x double> <double 0x3FE1F70400000000, double 0x3E7AAB89C516C658>, <2 x double> <double 0x3FE20DE800000000, double 0x3E63E823B1A1B8A0>, <2 x double> <double 0x3FE224B700000000, double 0x3E8307464A9D6D3C>, <2 x double> <double 0x3FE23B7100000000, double 0x3E9C5993CD438843>, <2 x double> <double 0x3FE2521700000000, double 0x3E9BA2FCA02AB554>, <2 x double> <double 0x3FE268A900000000, double 0x3E801A5B6983A268>, <2 x double> <double 0x3FE27F2600000000, double 0x3E6273D1B350EFC8>, <2 x double> <double 0x3FE2958E00000000, double 0x3E864C238C37B0C6>, <2 x double> <double 0x3FE2ABE200000000, double 0x3E6ADED07370A300>, <2 x double> <double 0x3FE2C22100000000, double 0x3E878091197EB47E>, <2 x double> <double 0x3FE2D84C00000000, double 0x3E74B0F245E0DABC>, <2 x double> <double 0x3FE2EE6200000000, double 0x3E9080D9794E2EAF>, <2 x double> <double 0x3FE3046400000000, double 0x3E8D4EC242B60C76>, <2 x double> <double 0x3FE31A5200000000, double 0x3E4221D2F940CAA0>, <2 x double> <double 0x3FE3302B00000000, double 0x3E7CDBC42B2BBA5C>, <2 x double> <double 0x3FE345F000000000, double 0x3E6CCE37BB440840>, <2 x double> <double 0x3FE35BA000000000, double 0x3E96C1D999CF1DD0>, <2 x double> <double 0x3FE3713D00000000, double 0x3E5BED8A07EB0870>, <2 x double> <double 0x3FE386C500000000, double 0x3E769ED88F490E3C>, <2 x double> <double 0x3FE39C3900000000, double 0x3E6CD41719B73EF0>, <2 x double> <double 0x3FE3B19800000000, double 0x3E9CBC4AC95B41B7>, <2 x double> <double 0x3FE3C6E400000000, double 0x3E9238F1B890F5D7>, <2 x double> <double 0x3FE3DC1C00000000, double 0x3E750C4282259CC4>, <2 x double> <double 0x3FE3F13F00000000, double 0x3E9713D2DE87B3E2>, <2 x double> <double 0x3FE4064F00000000, double 0x3E81D5A7D2255276>, <2 x double> <double 0x3FE41B4A00000000, double 0x3E9C0DFD48227AC1>, <2 x double> <double 0x3FE4303200000000, double 0x3E91C964DAB76753>, <2 x double> <double 0x3FE4450600000000, double 0x3E86DE56D5704496>, <2 x double> <double 0x3FE459C600000000, double 0x3E84AEB71FD19968>, <2 x double> <double 0x3FE46E7200000000, double 0x3E8FBF91C57B1918>, <2 x double> <double 0x3FE4830A00000000, double 0x3E9D6BEF7FBE5D9A>, <2 x double> <double 0x3FE4978F00000000, double 0x3E9464D3DC249066>, <2 x double> <double 0x3FE4AC0000000000, double 0x3E9638E2EC4D9073>, <2 x double> <double 0x3FE4C05E00000000, double 0x3E716F4A7247EA7C>, <2 x double> <double 0x3FE4D4A800000000, double 0x3E31A0A740F1D440>, <2 x double> <double 0x3FE4E8DE00000000, double 0x3E86EDBB0114A33C>, <2 x double> <double 0x3FE4FD0100000000, double 0x3E7DBEE8BF1D513C>, <2 x double> <double 0x3FE5111000000000, double 0x3E95B8BDB0248F73>, <2 x double> <double 0x3FE5250C00000000, double 0x3E97DE3D3F5EAC64>, <2 x double> <double 0x3FE538F500000000, double 0x3E8EE24187AE448A>, <2 x double> <double 0x3FE54CCA00000000, double 0x3E9E06C591EC5192>, <2 x double> <double 0x3FE5608D00000000, double 0x3E74E3861A332738>, <2 x double> <double 0x3FE5743C00000000, double 0x3E7A9599DCC2BFE4>, <2 x double> <double 0x3FE587D800000000, double 0x3E6F732FBAD43468>, <2 x double> <double 0x3FE59B6000000000, double 0x3E9EB9F573B727D9>, <2 x double> <double 0x3FE5AED600000000, double 0x3E98B212A2EB9897>, <2 x double> <double 0x3FE5C23900000000, double 0x3E9384884C167215>, <2 x double> <double 0x3FE5D58900000000, double 0x3E90E2D363020051>, <2 x double> <double 0x3FE5E8C600000000, double 0x3E92820879FBD022>, <2 x double> <double 0x3FE5FBF000000000, double 0x3E9A1AB9893E4B30>, <2 x double> <double 0x3FE60F0800000000, double 0x3E82D1B817A24478>, <2 x double> <double 0x3FE6220D00000000, double 0x3E615D7B8DED4878>, <2 x double> <double 0x3FE634FF00000000, double 0x3E78968F9DB3A5E4>, <2 x double> <double 0x3FE647DE00000000, double 0x3E971C4171FE135F>, <2 x double> <double 0x3FE65AAB00000000, double 0x3E96D80F605D0D8C>, <2 x double> <double 0x3FE66D6600000000, double 0x3E7C91F043691590>, <2 x double> <double 0x3FE6800E00000000, double 0x3E839F8A15FCE2B2>, <2 x double> <double 0x3FE692A400000000, double 0x3E455BEDA9D94B80>, <2 x double> <double 0x3FE6A52700000000, double 0x3E8B12C15D60949A>, <2 x double> <double 0x3FE6B79800000000, double 0x3E924167B312BFE3>, <2 x double> <double 0x3FE6C9F700000000, double 0x3E90AB8633070277>, <2 x double> <double 0x3FE6DC4400000000, double 0x3E854554EBBC80EE>, <2 x double> <double 0x3FE6EE7F00000000, double 0x3E60204AEF5A4BB8>, <2 x double> <double 0x3FE700A700000000, double 0x3E98AF08C679CF2C>, <2 x double> <double 0x3FE712BE00000000, double 0x3E90852A330AE6C8>, <2 x double> <double 0x3FE724C300000000, double 0x3E86D3EB9EC32916>, <2 x double> <double 0x3FE736B600000000, double 0x3E8685CB7FCBBAFE>, <2 x double> <double 0x3FE7489700000000, double 0x3E91F751C1E0BD95>, <2 x double> <double 0x3FE75A6700000000, double 0x3E5705B1B0F72560>, <2 x double> <double 0x3FE76C2400000000, double 0x3E9B98D8D808CA92>, <2 x double> <double 0x3FE77DD100000000, double 0x3E62EA22C75CC980>, <2 x double> <double 0x3FE78F6B00000000, double 0x3E97ABA62BCA0350>, <2 x double> <double 0x3FE7A0F400000000, double 0x3E9D73833442278C>, <2 x double> <double 0x3FE7B26C00000000, double 0x3E95A5CA1FB18BF9>, <2 x double> <double 0x3FE7C3D300000000, double 0x3E61A6092B6ECF28>, <2 x double> <double 0x3FE7D52800000000, double 0x3E744FD049AAC104>, <2 x double> <double 0x3FE7E66C00000000, double 0x3E2C114FD8DF5180>, <2 x double> <double 0x3FE7F79E00000000, double 0x3E95972F130FEAE5>, <2 x double> <double 0x3FE808C000000000, double 0x3E7CA034A55FE198>, <2 x double> <double 0x3FE819D000000000, double 0x3E96E2B149990227>, <2 x double> <double 0x3FE82AD000000000, double 0x3E7B00000294592C>, <2 x double> <double 0x3FE83BBE00000000, double 0x3E98B9BDC442620E>, <2 x double> <double 0x3FE84C9C00000000, double 0x3E8D94FDFABF3E4E>, <2 x double> <double 0x3FE85D6900000000, double 0x3E85DB30B145AD9A>, <2 x double> <double 0x3FE86E2500000000, double 0x3E8E3E1EB95022B0>, <2 x double> <double 0x3FE87ED000000000, double 0x3E9D5B8B45442BD6>, <2 x double> <double 0x3FE88F6B00000000, double 0x3E97A046231ECD2E>, <2 x double> <double 0x3FE89FF500000000, double 0x3E9FEAFE3EF55232>, <2 x double> <double 0x3FE8B06F00000000, double 0x3E9839E7BFD78267>, <2 x double> <double 0x3FE8C0D900000000, double 0x3E645CF49D6FA900>, <2 x double> <double 0x3FE8D13200000000, double 0x3E4BE3132B27F380>, <2 x double> <double 0x3FE8E17A00000000, double 0x3E9533980BB84F9F>, <2 x double> <double 0x3FE8F1B300000000, double 0x3E5889E2CE3BA390>, <2 x double> <double 0x3FE901DB00000000, double 0x3E7F7778C3AD0CC8>, <2 x double> <double 0x3FE911F300000000, double 0x3E846660CEC4EBA2>, <2 x double> <double 0x3FE921FB00000000, double 0x3E85110B4611A626>], align 16
@TWO_TO_JBY64_EP = internal unnamed_addr constant [64 x <2 x double>] [<2 x double> <double 1.000000e+00, double 0.000000e+00>, <2 x double> <double 0x3FF02C9A30000000, double 0x3E6CEF00C1DCDEF9>, <2 x double> <double 0x3FF059B0D0000000, double 0x3E48AC2BA1D73E2A>, <2 x double> <double 0x3FF0874510000000, double 0x3E60EB37901186BE>, <2 x double> <double 0x3FF0B55860000000, double 0x3E69F3121EC53172>, <2 x double> <double 0x3FF0E3EC30000000, double 0x3E469E8D10103A17>, <2 x double> <double 0x3FF11301D0000000, double 0x3DF25B50A4EBBF1A>, <2 x double> <double 0x3FF1429AA0000000, double 0x3E6D525BBF668203>, <2 x double> <double 0x3FF172B830000000, double 0x3E68FAA2F5B9BEF9>, <2 x double> <double 0x3FF1A35BE0000000, double 0x3E66DF96EA796D31>, <2 x double> <double 0x3FF1D48730000000, double 0x3E368B9AA7805B80>, <2 x double> <double 0x3FF2063B80000000, double 0x3E60C519AC771DD6>, <2 x double> <double 0x3FF2387A60000000, double 0x3E6CEAC470CD83F5>, <2 x double> <double 0x3FF26B4560000000, double 0x3E5789F37495E99C>, <2 x double> <double 0x3FF29E9DF0000000, double 0x3E547F7B84B09745>, <2 x double> <double 0x3FF2D285A0000000, double 0x3E5B900C2D002475>, <2 x double> <double 0x3FF306FE00000000, double 0x3E64636E2A5BD1AB>, <2 x double> <double 0x3FF33C08B0000000, double 0x3E4320B7FA64E430>, <2 x double> <double 0x3FF371A730000000, double 0x3E5CEAA72A9C5154>, <2 x double> <double 0x3FF3A7DB30000000, double 0x3E53967FDBA86F24>, <2 x double> <double 0x3FF3DEA640000000, double 0x3E682468446B6824>, <2 x double> <double 0x3FF4160A20000000, double 0x3E3F72E29F84325B>, <2 x double> <double 0x3FF44E0860000000, double 0x3E18624B40C4DBD0>, <2 x double> <double 0x3FF486A2B0000000, double 0x3E5704F3404F068E>, <2 x double> <double 0x3FF4BFDAD0000000, double 0x3E54D8A89C750E5E>, <2 x double> <double 0x3FF4F9B270000000, double 0x3E5A74B29AB4CF62>, <2 x double> <double 0x3FF5342B50000000, double 0x3E5A753E077C2A0F>, <2 x double> <double 0x3FF56F4730000000, double 0x3E5AD49F699BB2C0>, <2 x double> <double 0x3FF5AB07D0000000, double 0x3E6A90A852B19260>, <2 x double> <double 0x3FF5E76F10000000, double 0x3E56B48521BA6F93>, <2 x double> <double 0x3FF6247EB0000000, double 0x3E0D2AC258F87D03>, <2 x double> <double 0x3FF6623880000000, double 0x3E42A91124893ECF>, <2 x double> <double 0x3FF6A09E60000000, double 0x3E59FCEF32422CBE>, <2 x double> <double 0x3FF6DFB230000000, double 0x3E68CA345DE441C5>, <2 x double> <double 0x3FF71F75E0000000, double 0x3E61D8BEE7BA46E1>, <2 x double> <double 0x3FF75FEB50000000, double 0x3E59099F22FDBA6A>, <2 x double> <double 0x3FF7A11470000000, double 0x3E4F580C36BEA881>, <2 x double> <double 0x3FF7E2F330000000, double 0x3E5B3D398841740A>, <2 x double> <double 0x3FF8258990000000, double 0x3E62999C25159F11>, <2 x double> <double 0x3FF868D990000000, double 0x3E668925D901C83B>, <2 x double> <double 0x3FF8ACE540000000, double 0x3E415506DADD3E2A>, <2 x double> <double 0x3FF8F1AE90000000, double 0x3E622AEE6C57304E>, <2 x double> <double 0x3FF93737B0000000, double 0x3E29B8BC9E8A0387>, <2 x double> <double 0x3FF97D8290000000, double 0x3E6FBC9C9F173D24>, <2 x double> <double 0x3FF9C49180000000, double 0x3E451F8480E3E235>, <2 x double> <double 0x3FFA0C6670000000, double 0x3E66BBCAC96535B5>, <2 x double> <double 0x3FFA5503B0000000, double 0x3E41F12AE45A1224>, <2 x double> <double 0x3FFA9E6B50000000, double 0x3E55E7F6FD0FAC90>, <2 x double> <double 0x3FFAE89F90000000, double 0x3E62B5A75ABD0E69>, <2 x double> <double 0x3FFB33A2B0000000, double 0x3E609E2BF5ED7FA1>, <2 x double> <double 0x3FFB7F76F0000000, double 0x3E47DAF237553D84>, <2 x double> <double 0x3FFBCC1E90000000, double 0x3E12F074891EE83D>, <2 x double> <double 0x3FFC199BD0000000, double 0x3E6B0AA538444196>, <2 x double> <double 0x3FFC67F120000000, double 0x3E6CAFA29694426F>, <2 x double> <double 0x3FFCB720D0000000, double 0x3E69DF20D22A0797>, <2 x double> <double 0x3FFD072D40000000, double 0x3E640F12F71A1E45>, <2 x double> <double 0x3FFD5818D0000000, double 0x3E69F7490E4BB40B>, <2 x double> <double 0x3FFDA9E600000000, double 0x3E4ED9942B84600D>, <2 x double> <double 0x3FFDFC9730000000, double 0x3E4BDCDAF5CB4656>, <2 x double> <double 0x3FFE502EE0000000, double 0x3E5E2CFFD89CF44C>, <2 x double> <double 0x3FFEA4AFA0000000, double 0x3E452486CC2C7B9D>, <2 x double> <double 0x3FFEFA1BE0000000, double 0x3E6CC2B44EEE3FA4>, <2 x double> <double 0x3FFF507650000000, double 0x3E66DC8A80CE9F09>, <2 x double> <double 0x3FFFA7C180000000, double 0x3E39E90D82E90A7E>], align 16
@SINH_TBL = internal unnamed_addr constant [37 x <2 x double>] [<2 x double> zeroinitializer, <2 x double> <double 0x3FF2CD9FC0000000, double 0x3E513AE6096A0092>, <2 x double> <double 0x400D03CF60000000, double 0x3E5DB70CFB79A640>, <2 x double> <double 0x40240926E0000000, double 0x3E8C2526B66DC067>, <2 x double> <double 0x403B4A3800000000, double 0x3E8B81B18647F380>, <2 x double> <double 0x40528D0160000000, double 0x3EBBC1CDD1E1EB08>, <2 x double> <double 0x406936D228000000, double 0x3ECD9F201534FB09>, <2 x double> <double 0x4081228768000000, double 0x3EDD1C064A4E9954>, <2 x double> <double 0x409749EA50000000, double 0x3ED4ECA65D06EA74>, <2 x double> <double 0x40AFA71570000000, double 0x3F00C259BCC0ECC5>, <2 x double> <double 0x40C5829DC8000000, double 0x3F2B5A6647CF9016>, <2 x double> <double 0x40DD3C4488000000, double 0x3F09691ADEFB0870>, <2 x double> <double 0x40F3DE1650000000, double 0x3F53410FC29CDE38>, <2 x double> <double 0x410B00B590000000, double 0x3F46A31A50B6FB3C>, <2 x double> <double 0x412259AC48000000, double 0x3F57DEFC71805C40>, <2 x double> <double 0x4138F0CCA8000000, double 0x3F9EB49FD80E0BAB>, <2 x double> <double 0x4150F2EBD0000000, double 0x3F84FFFC7BCD5920>, <2 x double> <double 0x4167093488000000, double 0x3FC03A93B6C63435>, <2 x double> <double 0x417F4F2208000000, double 0x3FB1940BB255FD1C>, <2 x double> <double 0x419546D8F8000000, double 0x3FDED26E14260B50>, <2 x double> <double 0x41ACEB0888000000, double 0x3FFB47401FC9F2A2>, <2 x double> <double 0x41C3A6E1F8000000, double 0x40267BB3F55634F1>, <2 x double> <double 0x41DAB5ADB8000000, double 0x401C435FF8194DDC>, <2 x double> <double 0x41F226AF30000000, double 0x404D8FEE052BA63A>, <2 x double> <double 0x4208AB7FB0000000, double 0x40651D7EDCCDE3F6>, <2 x double> <double 0x4220C3D390000000, double 0x40704B1644557D1A>, <2 x double> <double 0x4236C93268000000, double 0x4076A6B5CA0A9DC4>, <2 x double> <double 0x424EF822F0000000, double 0x40AFD9CC72249ABA>, <2 x double> <double 0x42650BBA30000000, double 0x40CE58DE693EDAB5>, <2 x double> <double 0x427C9AAE40000000, double 0x40D8C70158AC6363>, <2 x double> <double 0x4293704708000000, double 0x40E7614764F43E20>, <2 x double> <double 0x42AA6B7658000000, double 0x4106337DB36FC718>, <2 x double> <double 0x42C1F43FC8000000, double 0x41212D98B1F611E2>, <2 x double> <double 0x42D866F348000000, double 0x412392BC108B37CC>, <2 x double> <double 0x42F0953E28000000, double 0x415CE87BDC3473DC>, <2 x double> <double 0x430689E220000000, double 0x414BC8D5AE99AD14>, <2 x double> <double 0x431EA215A0000000, double 0x415D20D76744835C>], align 16
@COSH_TBL = internal unnamed_addr constant [37 x <2 x double>] [<2 x double> <double 1.000000e+00, double 0.000000e+00>, <2 x double> <double 0x3FF8B07550000000, double 0x3E3D9F5504C2BD28>, <2 x double> <double 0x400E18FA08000000, double 0x3E67CB66F0A4C9FD>, <2 x double> <double 0x402422A490000000, double 0x3E8F58617928E588>, <2 x double> <double 0x403B4EE858000000, double 0x3E6BC7D000C38D48>, <2 x double> <double 0x40528D6FC8000000, double 0x3EAF7F9D4E329998>, <2 x double> <double 0x406936E678000000, double 0x3EC6E6E464885269>, <2 x double> <double 0x4081228948000000, double 0x3ECBA3A8B946C154>, <2 x double> <double 0x409749EAA8000000, double 0x3ED3F4E76110D5A4>, <2 x double> <double 0x40AFA71580000000, double 0x3F017622515A3E2B>, <2 x double> <double 0x40C5829DD0000000, double 0x3EE4DC4B528AF3D0>, <2 x double> <double 0x40DD3C4488000000, double 0x3F11156278615E10>, <2 x double> <double 0x40F3DE1650000000, double 0x3F535AD50ED821F5>, <2 x double> <double 0x410B00B590000000, double 0x3F46B61055F2935C>, <2 x double> <double 0x412259AC48000000, double 0x3F57E2794A601240>, <2 x double> <double 0x4138F0CCA8000000, double 0x3F9EB4B45F6AADD3>, <2 x double> <double 0x4150F2EBD0000000, double 0x3F85000B967B3698>, <2 x double> <double 0x4167093488000000, double 0x3FC03A940FADC092>, <2 x double> <double 0x417F4F2208000000, double 0x3FB1940BF3BF874C>, <2 x double> <double 0x419546D8F8000000, double 0x3FDED26E1A2A2110>, <2 x double> <double 0x41ACEB0888000000, double 0x3FFB4740205796D6>, <2 x double> <double 0x41C3A6E1F8000000, double 0x40267BB3F55CB85D>, <2 x double> <double 0x41DAB5ADB8000000, double 0x401C435FF81E18AC>, <2 x double> <double 0x41F226AF30000000, double 0x404D8FEE052BDEA4>, <2 x double> <double 0x4208AB7FB0000000, double 0x40651D7EDCCDE926>, <2 x double> <double 0x4220C3D390000000, double 0x40704B1644557E0E>, <2 x double> <double 0x4236C93268000000, double 0x4076A6B5CA0A9E1C>, <2 x double> <double 0x424EF822F0000000, double 0x40AFD9CC72249ABE>, <2 x double> <double 0x42650BBA30000000, double 0x40CE58DE693EDAB5>, <2 x double> <double 0x427C9AAE40000000, double 0x40D8C70158AC6364>, <2 x double> <double 0x4293704708000000, double 0x40E7614764F43E20>, <2 x double> <double 0x42AA6B7658000000, double 0x4106337DB36FC718>, <2 x double> <double 0x42C1F43FC8000000, double 0x41212D98B1F611E2>, <2 x double> <double 0x42D866F348000000, double 0x412392BC108B37CC>, <2 x double> <double 0x42F0953E28000000, double 0x415CE87BDC3473DC>, <2 x double> <double 0x430689E220000000, double 0x414BC8D5AE99AD14>, <2 x double> <double 0x431EA215A0000000, double 0x415D20D76744835C>], align 16
@CBRT_DBL_TBL = internal unnamed_addr constant [257 x <2 x double>] [<2 x double> <double 1.000000e+00, double 0.000000e+00>, <2 x double> <double 0x3FF0055380000000, double 0x3E6E6A24C81E4294>, <2 x double> <double 0x3FF00AA390000000, double 0x3E58548511E3A785>, <2 x double> <double 0x3FF00FF010000000, double 0x3E64EB9336EC07F6>, <2 x double> <double 0x3FF0153920000000, double 0x3E40EA64B8B750E1>, <2 x double> <double 0x3FF01A7EB0000000, double 0x3E461637CFF8A53C>, <2 x double> <double 0x3FF01FC0D0000000, double 0x3E40733BF7BD1943>, <2 x double> <double 0x3FF024FF80000000, double 0x3E5666911345CCED>, <2 x double> <double 0x3FF02A3AD0000000, double 0x3E477B7A3F592F14>, <2 x double> <double 0x3FF02F72B0000000, double 0x3E6F18D3DD1A5402>, <2 x double> <double 0x3FF034A750000000, double 0x3E2BE2F5A58EE9A4>, <2 x double> <double 0x3FF039D880000000, double 0x3E68901F8F085FA7>, <2 x double> <double 0x3FF03F0670000000, double 0x3E5C68B8CD5B5D69>, <2 x double> <double 0x3FF0443110000000, double 0x3E5A6B0E8624BE42>, <2 x double> <double 0x3FF0495870000000, double 0x3DBC4B22B06F68E7>, <2 x double> <double 0x3FF04E7C80000000, double 0x3E60F3F0AFCABE9B>, <2 x double> <double 0x3FF0539D60000000, double 0x3E548495BCA4E1B7>, <2 x double> <double 0x3FF058BB00000000, double 0x3E66107F1ABDFDC3>, <2 x double> <double 0x3FF05DD570000000, double 0x3E6E67261878288A>, <2 x double> <double 0x3FF062ECC0000000, double 0x3E5A6BC155286F1E>, <2 x double> <double 0x3FF06800E0000000, double 0x3E58A759C64A85F2>, <2 x double> <double 0x3FF06D11E0000000, double 0x3E45FCE70A4A8D09>, <2 x double> <double 0x3FF0721FC0000000, double 0x3E32F9CBF373FE1D>, <2 x double> <double 0x3FF0772A80000000, double 0x3E590564CE4AC359>, <2 x double> <double 0x3FF07C3230000000, double 0x3E5AC29CE761B02F>, <2 x double> <double 0x3FF08136D0000000, double 0x3E5CB752F497381C>, <2 x double> <double 0x3FF0863860000000, double 0x3E68BB9E1CFB35E0>, <2 x double> <double 0x3FF08B36F0000000, double 0x3E65B4917099DE90>, <2 x double> <double 0x3FF0903280000000, double 0x3E5CC77AC9C65EF2>, <2 x double> <double 0x3FF0952B10000000, double 0x3E57A0F3E7BE3DBA>, <2 x double> <double 0x3FF09A20A0000000, double 0x3E66EC851EE0C16F>, <2 x double> <double 0x3FF09F1340000000, double 0x3E689449BF2946DA>, <2 x double> <double 0x3FF0A402F0000000, double 0x3E698F25301BA223>, <2 x double> <double 0x3FF0A8EFC0000000, double 0x3E347D5EC651F549>, <2 x double> <double 0x3FF0ADD990000000, double 0x3E6C33EC9A86007A>, <2 x double> <double 0x3FF0B2C090000000, double 0x3E5E0B6653E92649>, <2 x double> <double 0x3FF0B7A4B0000000, double 0x3E3BD64AC09D755F>, <2 x double> <double 0x3FF0BC85F0000000, double 0x3E2F537506F78167>, <2 x double> <double 0x3FF0C16450000000, double 0x3E62C382D1B3735E>, <2 x double> <double 0x3FF0C63FE0000000, double 0x3E6E20ED659F99E1>, <2 x double> <double 0x3FF0CB18B0000000, double 0x3E586B633A9C182A>, <2 x double> <double 0x3FF0CFEEB0000000, double 0x3E445CFD5A65E777>, <2 x double> <double 0x3FF0D4C1E0000000, double 0x3E60C8770F58BCA4>, <2 x double> <double 0x3FF0D99250000000, double 0x3E6739E44B0933C5>, <2 x double> <double 0x3FF0DE6010000000, double 0x3E027DC3D9CE7BD8>, <2 x double> <double 0x3FF0E32B00000000, double 0x3E63C53C7C5A7B64>, <2 x double> <double 0x3FF0E7F340000000, double 0x3E69669683830CEC>, <2 x double> <double 0x3FF0ECB8D0000000, double 0x3E68D772C39BDCC4>, <2 x double> <double 0x3FF0F17BB0000000, double 0x3E69B0008BCF6D7B>, <2 x double> <double 0x3FF0F63BF0000000, double 0x3E3BBB305825CE4F>, <2 x double> <double 0x3FF0FAF970000000, double 0x3E6DA3F4AF13A406>, <2 x double> <double 0x3FF0FFB460000000, double 0x3E5F36B96F74CE86>, <2 x double> <double 0x3FF1046CB0000000, double 0x3E165C002303F790>, <2 x double> <double 0x3FF1092250000000, double 0x3E682F84095BA7D5>, <2 x double> <double 0x3FF10DD560000000, double 0x3E6D46433541B2C6>, <2 x double> <double 0x3FF11285E0000000, double 0x3E671C3D56E93A89>, <2 x double> <double 0x3FF11733D0000000, double 0x3E598DCEF4E40012>, <2 x double> <double 0x3FF11BDF30000000, double 0x3E4530EBEF17FE03>, <2 x double> <double 0x3FF1208800000000, double 0x3E4E8B8FA3715066>, <2 x double> <double 0x3FF1252E40000000, double 0x3E6AB26EB3B211DC>, <2 x double> <double 0x3FF129D210000000, double 0x3E454DD4DC906307>, <2 x double> <double 0x3FF12E7350000000, double 0x3E5C9F962387984E>, <2 x double> <double 0x3FF1331210000000, double 0x3E6C62A959AFEC09>, <2 x double> <double 0x3FF137AE60000000, double 0x3E6638D9AC6A866A>, <2 x double> <double 0x3FF13C4840000000, double 0x3E338704ECA8A22D>, <2 x double> <double 0x3FF140DFA0000000, double 0x3E4E6C9E1DB14F8F>, <2 x double> <double 0x3FF1457490000000, double 0x3E58744B7F9C9EAA>, <2 x double> <double 0x3FF14A0710000000, double 0x3E66C2893486373B>, <2 x double> <double 0x3FF14E9730000000, double 0x3E5B36BCE31699B7>, <2 x double> <double 0x3FF15324E0000000, double 0x3E671E3813D200C7>, <2 x double> <double 0x3FF157B030000000, double 0x3E699755AB40AA88>, <2 x double> <double 0x3FF15C3920000000, double 0x3E6B45CA0E4BCFC0>, <2 x double> <double 0x3FF160BFC0000000, double 0x3E32DD090D869C5D>, <2 x double> <double 0x3FF16543F0000000, double 0x3E64FE0516B917DA>, <2 x double> <double 0x3FF169C5D0000000, double 0x3E694563226317A2>, <2 x double> <double 0x3FF16E4560000000, double 0x3E653D8FAFC2C851>, <2 x double> <double 0x3FF172C2A0000000, double 0x3E5DCBD41FBD41A3>, <2 x double> <double 0x3FF1773D90000000, double 0x3E5862FF5285F59C>, <2 x double> <double 0x3FF17BB630000000, double 0x3E63072EA97A1E1C>, <2 x double> <double 0x3FF1802C90000000, double 0x3E52839075184805>, <2 x double> <double 0x3FF184A0A0000000, double 0x3E64B0323E9EFF42>, <2 x double> <double 0x3FF1891270000000, double 0x3E6B158893C45484>, <2 x double> <double 0x3FF18D8210000000, double 0x3E3149EF0FC35826>, <2 x double> <double 0x3FF191EF60000000, double 0x3E5F2E77EA96ACAA>, <2 x double> <double 0x3FF1965A80000000, double 0x3E5200074C471A95>, <2 x double> <double 0x3FF19AC360000000, double 0x3E63F8CC517F6F04>, <2 x double> <double 0x3FF19F2A10000000, double 0x3E660BA2E311BB55>, <2 x double> <double 0x3FF1A38E90000000, double 0x3E64B788730BBEC3>, <2 x double> <double 0x3FF1A7F0E0000000, double 0x3E657090795EE20C>, <2 x double> <double 0x3FF1AC5100000000, double 0x3E6D9FFE983670B1>, <2 x double> <double 0x3FF1B0AF00000000, double 0x3E62A463FF61BFDA>, <2 x double> <double 0x3FF1B50AD0000000, double 0x3E69D1BC6A5E65CF>, <2 x double> <double 0x3FF1B96480000000, double 0x3E68718ABAA9E922>, <2 x double> <double 0x3FF1BDBC10000000, double 0x3E63C2F52FFA342E>, <2 x double> <double 0x3FF1C21180000000, double 0x3E60FAE13FF42C80>, <2 x double> <double 0x3FF1C664D0000000, double 0x3E65440F0EF00D57>, <2 x double> <double 0x3FF1CAB610000000, double 0x3E46FCD22D4E3C1E>, <2 x double> <double 0x3FF1CF0530000000, double 0x3E4E0C60B409E863>, <2 x double> <double 0x3FF1D35230000000, double 0x3E6F9CAB5A5F0333>, <2 x double> <double 0x3FF1D79D30000000, double 0x3E630F24744C333D>, <2 x double> <double 0x3FF1DBE620000000, double 0x3E4B50622A76B2FE>, <2 x double> <double 0x3FF1E02CF0000000, double 0x3E6FDB94BA595375>, <2 x double> <double 0x3FF1E471D0000000, double 0x3E3861B9B945A171>, <2 x double> <double 0x3FF1E8B490000000, double 0x3E654348015188C4>, <2 x double> <double 0x3FF1ECF550000000, double 0x3E6B54D149865523>, <2 x double> <double 0x3FF1F13410000000, double 0x3E6A0BB783D9DE33>, <2 x double> <double 0x3FF1F570D0000000, double 0x3E6629D12B1A2157>, <2 x double> <double 0x3FF1F9AB90000000, double 0x3E6467FE35D179DF>, <2 x double> <double 0x3FF1FDE450000000, double 0x3E69763F3E26C8F7>, <2 x double> <double 0x3FF2021B20000000, double 0x3E53F798BB9F7679>, <2 x double> <double 0x3FF2064FF0000000, double 0x3E552E577E855898>, <2 x double> <double 0x3FF20A82C0000000, double 0x3E6FDE47E5502C3A>, <2 x double> <double 0x3FF20EB3B0000000, double 0x3E5CBD0B548D96A0>, <2 x double> <double 0x3FF212E2A0000000, double 0x3E6A9CD9F7BE8DE8>, <2 x double> <double 0x3FF2170FB0000000, double 0x3E522BBE704886DE>, <2 x double> <double 0x3FF21B3AC0000000, double 0x3E6E3DEA8317F020>, <2 x double> <double 0x3FF21F63F0000000, double 0x3E6E812085AC8855>, <2 x double> <double 0x3FF2238B40000000, double 0x3E5C87144F24CB07>, <2 x double> <double 0x3FF227B0A0000000, double 0x3E61E128EE311FA2>, <2 x double> <double 0x3FF22BD420000000, double 0x3E5B5C163D61A2D3>, <2 x double> <double 0x3FF22FF5C0000000, double 0x3E47D97E7FB90633>, <2 x double> <double 0x3FF2341570000000, double 0x3E6EFE899D50F6A7>, <2 x double> <double 0x3FF2383350000000, double 0x3E6D0333EB75DE5A>, <2 x double> <double 0x3FF23C4F60000000, double 0x3E40E590BE73A573>, <2 x double> <double 0x3FF2406980000000, double 0x3E68CE8DCAC3CDD2>, <2 x double> <double 0x3FF24481D0000000, double 0x3E6EE8A48954064B>, <2 x double> <double 0x3FF2489850000000, double 0x3E6AA62F18461E09>, <2 x double> <double 0x3FF24CAD00000000, double 0x3E601E5940986A15>, <2 x double> <double 0x3FF250BFE0000000, double 0x3E3B082F4F9B8D4C>, <2 x double> <double 0x3FF254D0E0000000, double 0x3E6876E0E5527F5A>, <2 x double> <double 0x3FF258E020000000, double 0x3E63617080831E6B>, <2 x double> <double 0x3FF25CED90000000, double 0x3E681B26E34AA4A2>, <2 x double> <double 0x3FF260F940000000, double 0x3E552EE66DFAB0C1>, <2 x double> <double 0x3FF2650320000000, double 0x3E5D85A5329E8819>, <2 x double> <double 0x3FF2690B40000000, double 0x3E5105C1B646B5D1>, <2 x double> <double 0x3FF26D1190000000, double 0x3E6BB6690C1A379C>, <2 x double> <double 0x3FF2711630000000, double 0x3E586AEBA73CE3A9>, <2 x double> <double 0x3FF2751900000000, double 0x3E6DD16198294DD4>, <2 x double> <double 0x3FF2791A20000000, double 0x3E6454E675775E83>, <2 x double> <double 0x3FF27D1980000000, double 0x3E63842E026197EA>, <2 x double> <double 0x3FF2811720000000, double 0x3E6F1CE0E70C44D2>, <2 x double> <double 0x3FF2851310000000, double 0x3E6AD636441A5627>, <2 x double> <double 0x3FF2890D50000000, double 0x3E54C205D7212ABB>, <2 x double> <double 0x3FF28D05D0000000, double 0x3E6167C86C116419>, <2 x double> <double 0x3FF290FCA0000000, double 0x3E638EC3EF16E294>, <2 x double> <double 0x3FF294F1C0000000, double 0x3E6473FCEACE9321>, <2 x double> <double 0x3FF298E530000000, double 0x3E67AF53A836DBA7>, <2 x double> <double 0x3FF29CD700000000, double 0x3E1A51F3C383B652>, <2 x double> <double 0x3FF2A0C710000000, double 0x3E63696DA190822D>, <2 x double> <double 0x3FF2A4B580000000, double 0x3E62F9ADEC77074B>, <2 x double> <double 0x3FF2A8A250000000, double 0x3E38190FD5BEE55F>, <2 x double> <double 0x3FF2AC8D70000000, double 0x3E4BFEE8FAC68E55>, <2 x double> <double 0x3FF2B076F0000000, double 0x3E331C9D6BC5F68A>, <2 x double> <double 0x3FF2B45EC0000000, double 0x3E689D0523737EDF>, <2 x double> <double 0x3FF2B84500000000, double 0x3E5A295943BF47BB>, <2 x double> <double 0x3FF2BC29A0000000, double 0x3E396BE32E5B3207>, <2 x double> <double 0x3FF2C00C90000000, double 0x3E6E44C7D909FA0E>, <2 x double> <double 0x3FF2C3EE00000000, double 0x3E2B2505DA94D9EA>, <2 x double> <double 0x3FF2C7CDC0000000, double 0x3E60C851F46C9C98>, <2 x double> <double 0x3FF2CBABF0000000, double 0x3E5DA71F7D9AA3B7>, <2 x double> <double 0x3FF2CF8880000000, double 0x3E6F1B605D019EF1>, <2 x double> <double 0x3FF2D36390000000, double 0x3E4386E8A2189563>, <2 x double> <double 0x3FF2D73D00000000, double 0x3E3B19FA5D306BA7>, <2 x double> <double 0x3FF2DB14D0000000, double 0x3E6DD749B67AEF76>, <2 x double> <double 0x3FF2DEEB20000000, double 0x3E676FF6F1DC04B0>, <2 x double> <double 0x3FF2E2BFE0000000, double 0x3E635A33D0B232A6>, <2 x double> <double 0x3FF2E69310000000, double 0x3E64BDC80024A4E1>, <2 x double> <double 0x3FF2EA64B0000000, double 0x3E6EBD61770FD723>, <2 x double> <double 0x3FF2EE34D0000000, double 0x3E64769FC537264D>, <2 x double> <double 0x3FF2F20360000000, double 0x3E69021F429F3B98>, <2 x double> <double 0x3FF2F5D070000000, double 0x3E5EE7083EFBD606>, <2 x double> <double 0x3FF2F99BF0000000, double 0x3E6AD985552A6B1A>, <2 x double> <double 0x3FF2FD65F0000000, double 0x3E6E3DF778772160>, <2 x double> <double 0x3FF3012E70000000, double 0x3E6CA5D76DDC9B34>, <2 x double> <double 0x3FF304F570000000, double 0x3E691154FFDBAF74>, <2 x double> <double 0x3FF308BAF0000000, double 0x3E667BDD57FB306A>, <2 x double> <double 0x3FF30C7EF0000000, double 0x3E67DC255AC40886>, <2 x double> <double 0x3FF3104180000000, double 0x3DF219F38E8AFAFE>, <2 x double> <double 0x3FF3140280000000, double 0x3E62416BF9669A04>, <2 x double> <double 0x3FF317C210000000, double 0x3E611C96B2B3987F>, <2 x double> <double 0x3FF31B8020000000, double 0x3E6F99ED447E1177>, <2 x double> <double 0x3FF31F3CD0000000, double 0x3E13245826328A11>, <2 x double> <double 0x3FF322F7F0000000, double 0x3E66F56DD1E645F8>, <2 x double> <double 0x3FF326B1B0000000, double 0x3E46164946945535>, <2 x double> <double 0x3FF32A69F0000000, double 0x3E5E37D59D190028>, <2 x double> <double 0x3FF32E20C0000000, double 0x3E668671F12BF828>, <2 x double> <double 0x3FF331D620000000, double 0x3E6E8ECBCA6AABBD>, <2 x double> <double 0x3FF3358A20000000, double 0x3E53F49E109A5912>, <2 x double> <double 0x3FF3393CA0000000, double 0x3E6B8A0E11EC3043>, <2 x double> <double 0x3FF33CEDC0000000, double 0x3E65FAE00AED691A>, <2 x double> <double 0x3FF3409D70000000, double 0x3E6C0569BECE3E4A>, <2 x double> <double 0x3FF3444BC0000000, double 0x3E605E26744EFBFE>, <2 x double> <double 0x3FF347F8A0000000, double 0x3E65B570A94BE5C5>, <2 x double> <double 0x3FF34BA420000000, double 0x3E5D6F156EA0E063>, <2 x double> <double 0x3FF34F4E30000000, double 0x3E6E0CA7612FC484>, <2 x double> <double 0x3FF352F6F0000000, double 0x3E4963C927B25258>, <2 x double> <double 0x3FF3569E40000000, double 0x3E547930AA725A5C>, <2 x double> <double 0x3FF35A4430000000, double 0x3E58A79FE3AF43B3>, <2 x double> <double 0x3FF35DE8C0000000, double 0x3E5E6DC29C41BDAF>, <2 x double> <double 0x3FF3618BF0000000, double 0x3E657A2E76F863A5>, <2 x double> <double 0x3FF3652DD0000000, double 0x3E2AE3B61716354D>, <2 x double> <double 0x3FF368CE40000000, double 0x3E665FB5DF6906B1>, <2 x double> <double 0x3FF36C6D60000000, double 0x3E66177D7F588F7B>, <2 x double> <double 0x3FF3700B30000000, double 0x3E3AD55ABD091B67>, <2 x double> <double 0x3FF373A7A0000000, double 0x3E155337B2422D76>, <2 x double> <double 0x3FF37742B0000000, double 0x3E6084EBE86972D5>, <2 x double> <double 0x3FF37ADC70000000, double 0x3E656395808E1EA3>, <2 x double> <double 0x3FF37E74E0000000, double 0x3E61BCE21B40FBA7>, <2 x double> <double 0x3FF3820C00000000, double 0x3E5006F94605B515>, <2 x double> <double 0x3FF385A1C0000000, double 0x3E6AA676ACEB1F7D>, <2 x double> <double 0x3FF3893640000000, double 0x3E58229F76554CE6>, <2 x double> <double 0x3FF38CC960000000, double 0x3E6EABFC6CF57330>, <2 x double> <double 0x3FF3905B40000000, double 0x3E64DAED9C0CE8BC>, <2 x double> <double 0x3FF393EBD0000000, double 0x3E60FF1768237141>, <2 x double> <double 0x3FF3977B10000000, double 0x3E6575F83051B085>, <2 x double> <double 0x3FF39B0910000000, double 0x3E42667DEB523E29>, <2 x double> <double 0x3FF39E95C0000000, double 0x3E1816996954F4FD>, <2 x double> <double 0x3FF3A22120000000, double 0x3E587CFCCF4D9CD4>, <2 x double> <double 0x3FF3A5AB40000000, double 0x3E52C5D018198353>, <2 x double> <double 0x3FF3A93410000000, double 0x3E6A7A898DCC34AA>, <2 x double> <double 0x3FF3ACBBB0000000, double 0x3E2CEAD6DADC36D1>, <2 x double> <double 0x3FF3B04200000000, double 0x3E2A55759C498BDF>, <2 x double> <double 0x3FF3B3C700000000, double 0x3E6C414A9EF6DE04>, <2 x double> <double 0x3FF3B74AD0000000, double 0x3E63E2108A6E58FA>, <2 x double> <double 0x3FF3BACD60000000, double 0x3E5587FD7643D77C>, <2 x double> <double 0x3FF3BE4EB0000000, double 0x3E3901EB1D3FF3DF>, <2 x double> <double 0x3FF3C1CEB0000000, double 0x3E6F2CCD7C812FC6>, <2 x double> <double 0x3FF3C54D90000000, double 0x3E21C8EE70A01049>, <2 x double> <double 0x3FF3C8CB20000000, double 0x3E563E8D02831EEC>, <2 x double> <double 0x3FF3CC4770000000, double 0x3E6F61A42A92C7FF>, <2 x double> <double 0x3FF3CFC2A0000000, double 0x3DDA917399C84D24>, <2 x double> <double 0x3FF3D33C80000000, double 0x3E5E9197C8EEC2F0>, <2 x double> <double 0x3FF3D6B530000000, double 0x3E5E6F842F5A1378>, <2 x double> <double 0x3FF3DA2CB0000000, double 0x3E2FAC242A90A0FC>, <2 x double> <double 0x3FF3DDA2F0000000, double 0x3E535ED726610227>, <2 x double> <double 0x3FF3E11800000000, double 0x3E50E0D64804B15B>, <2 x double> <double 0x3FF3E48BE0000000, double 0x3E0560675DABA814>, <2 x double> <double 0x3FF3E7FE80000000, double 0x3E637388C8768032>, <2 x double> <double 0x3FF3EB7000000000, double 0x3E3EE3C89F9E01F5>, <2 x double> <double 0x3FF3EEE040000000, double 0x3E639F6F0D09747C>, <2 x double> <double 0x3FF3F24F60000000, double 0x3E4322C327ABB8F0>, <2 x double> <double 0x3FF3F5BD40000000, double 0x3E6961B347C8AC80>, <2 x double> <double 0x3FF3F92A00000000, double 0x3E63711FBBD0F118>, <2 x double> <double 0x3FF3FC9590000000, double 0x3E64FAD8D7718FFB>, <2 x double> <double 0x3FF3FFFFF0000000, double 0x3E6FFFFFFFFFFFFF>, <2 x double> <double 0x3FF4036930000000, double 0x3E667EFA79EC35B4>, <2 x double> <double 0x3FF406D140000000, double 0x3E6A737687A254A8>, <2 x double> <double 0x3FF40A3830000000, double 0x3E5BACE0F87D924D>, <2 x double> <double 0x3FF40D9DF0000000, double 0x3E629E37C237E392>, <2 x double> <double 0x3FF4110290000000, double 0x3E557CE7AC3F3012>, <2 x double> <double 0x3FF4146600000000, double 0x3E682829359F8FBD>, <2 x double> <double 0x3FF417C850000000, double 0x3E6CC9BE42D14676>, <2 x double> <double 0x3FF41B2980000000, double 0x3E6A8F001C137D0B>, <2 x double> <double 0x3FF41E8990000000, double 0x3E636127687DDA05>, <2 x double> <double 0x3FF421E880000000, double 0x3E524DBA322646F0>, <2 x double> <double 0x3FF4254640000000, double 0x3E6DC43F1ED210B4>, <2 x double> <double 0x3FF428A2F0000000, double 0x3E631AE515C447BB>], align 16
@CBRT_REM_TBL = internal unnamed_addr constant [5 x <2 x double>] [<2 x double> <double 0x3FE428A2F0000000, double 0x3E531AE515C447BB>, <2 x double> <double 0x3FE965FEA0000000, double 0x3E44F5B8F20AC166>, <2 x double> <double 1.000000e+00, double 0.000000e+00>, <2 x double> <double 0x3FF428A2F0000000, double 0x3E631AE515C447BB>, <2 x double> <double 0x3FF965FEA0000000, double 0x3E54F5B8F20AC166>], align 16
; Function Attrs: convergent nounwind
define dso_local spir_kernel void @transpose(i32 %P, i32 %Q, float* nocapture readonly %input, float* nocapture %output) local_unnamed_addr #0 !kernel_arg_addr_space !7 !kernel_arg_access_qual !8 !kernel_arg_type !9 !kernel_arg_base_type !9 !kernel_arg_type_qual !10 !kernel_arg_name !11 {
entry:
%call = tail call i64 @_Z12get_local_idj(i32 signext 0) #3
%call1 = tail call i64 @_Z12get_local_idj(i32 signext 1) #3
%call3 = tail call i64 @_Z12get_group_idj(i32 signext 0) #3
%mul = shl i64 %call3, 3
%conv4 = and i64 %call, 4294967295
%add = add i64 %mul, %call
%conv5 = trunc i64 %add to i32
%call6 = tail call i64 @_Z12get_group_idj(i32 signext 1) #3
%mul7 = shl i64 %call6, 3
%conv8 = and i64 %call1, 4294967295
%add9 = add i64 %mul7, %call1
%conv10 = trunc i64 %add9 to i32
%mul11 = mul i32 %conv10, %P
%add12 = add i32 %mul11, %conv5
%idxprom = zext i32 %add12 to i64
%arrayidx = getelementptr inbounds float, float* %input, i64 %idxprom
%0 = load float, float* %arrayidx, align 4, !tbaa !12
%arrayidx16 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* @transpose.buffer, i64 0, i64 %conv8, i64 %conv4
store float %0, float* %arrayidx16, align 4, !tbaa !12
tail call void @_Z7barrierj(i32 signext 1) #4
%add20 = add i64 %mul7, %call
%conv21 = trunc i64 %add20 to i32
%add25 = add i64 %mul, %call1
%conv26 = trunc i64 %add25 to i32
%arrayidx30 = getelementptr inbounds [8 x [8 x float]], [8 x [8 x float]]* @transpose.buffer, i64 0, i64 %conv4, i64 %conv8
%1 = load float, float* %arrayidx30, align 4, !tbaa !12
%mul31 = mul i32 %conv26, %Q
%add32 = add i32 %mul31, %conv21
%idxprom33 = zext i32 %add32 to i64
%arrayidx34 = getelementptr inbounds float, float* %output, i64 %idxprom33
store float %1, float* %arrayidx34, align 4, !tbaa !12
ret void
}
; Function Attrs: noinline norecurse nounwind readonly
define i64 @_Z12get_local_idj(i32 signext %dimindx) local_unnamed_addr #1 {
entry:
switch i32 %dimindx, label %return [
i32 0, label %sw.bb
i32 1, label %sw.bb1
i32 2, label %sw.bb2
]
sw.bb: ; preds = %entry
%0 = load i64, i64* @_local_id_x, align 8, !tbaa !16
br label %return
sw.bb1: ; preds = %entry
%1 = load i64, i64* @_local_id_y, align 8, !tbaa !16
br label %return
sw.bb2: ; preds = %entry
%2 = load i64, i64* @_local_id_z, align 8, !tbaa !16
br label %return
return: ; preds = %sw.bb2, %sw.bb1, %sw.bb, %entry
%retval.0 = phi i64 [ %2, %sw.bb2 ], [ %1, %sw.bb1 ], [ %0, %sw.bb ], [ 0, %entry ]
ret i64 %retval.0
}
; Function Attrs: noinline norecurse nounwind readonly
define i64 @_Z12get_group_idj(i32 signext %dimindx) local_unnamed_addr #1 {
entry:
switch i32 %dimindx, label %return [
i32 0, label %sw.bb
i32 1, label %sw.bb1
i32 2, label %sw.bb2
]
sw.bb: ; preds = %entry
%0 = load i64, i64* @_group_id_x, align 8, !tbaa !16
br label %return
sw.bb1: ; preds = %entry
%1 = load i64, i64* @_group_id_y, align 8, !tbaa !16
br label %return
sw.bb2: ; preds = %entry
%2 = load i64, i64* @_group_id_z, align 8, !tbaa !16
br label %return
return: ; preds = %sw.bb2, %sw.bb1, %sw.bb, %entry
%retval.0 = phi i64 [ %2, %sw.bb2 ], [ %1, %sw.bb1 ], [ %0, %sw.bb ], [ 0, %entry ]
ret i64 %retval.0
}
; Function Attrs: noduplicate
define void @_Z7barrierj(i32 %flags) local_unnamed_addr #2 {
entry:
tail call void @pocl.barrier()
ret void
}
; Function Attrs: noduplicate
declare void @pocl.barrier() local_unnamed_addr #2
attributes #0 = { convergent nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "denorms-are-zero"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-builtins" "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" "uniform-work-group-size"="true" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #1 = { noinline norecurse nounwind readonly "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "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" "target-cpu"="nx25" "target-features"="+a,+c,+d,+div,+f,+fdiv,+m,+relax,-save-restore" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #2 = { noduplicate "target-cpu"="nx25" }
attributes #3 = { convergent nobuiltin nounwind readnone "no-builtins" }
attributes #4 = { convergent nobuiltin nounwind "no-builtins" }
!llvm.module.flags = !{!0, !1, !2, !3, !4}
!opencl.ocl.version = !{!5}
!llvm.ident = !{!6}
!opencl.spir.version = !{!5}
!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 1, !"target-abi", !""}
!2 = !{i32 7, !"PIC Level", i32 2}
!3 = !{i32 7, !"PIE Level", i32 2}
!4 = !{i32 7, !"SmallDataLimit", i32 0}
!5 = !{i32 1, i32 2}
!6 = !{!"clang version 10.0.1 (2020-08-12_nds64le-linux-glibc-v5d-pocl-5222bcc_experimental 5222bcc4c7aa70deaea4e14b047fcdfa362cadb8)"}
!7 = !{i32 0, i32 0, i32 1, i32 1}
!8 = !{!"none", !"none", !"none", !"none"}
!9 = !{!"uint", !"uint", !"float*", !"float*"}
!10 = !{!"", !"", !"const", !""}
!11 = !{!"P", !"Q", !"input", !"output"}
!12 = !{!13, !13, i64 0}
!13 = !{!"float", !14, i64 0}
!14 = !{!"omnipotent char", !15, i64 0}
!15 = !{!"Simple C/C++ TBAA"}
!16 = !{!17, !17, i64 0}
!17 = !{!"long", !14, i64 0}
// P is matrix row
// Q is matrix column
__kernel void
transpose (const uint P, const uint Q, const __global float *input,
__global float *output)
{
const uint tx = get_local_id (0);
const uint ty = get_local_id (1);
const uint ID0 = get_group_id (0) * 8 + tx;
const uint ID1 = get_group_id (1) * 8 + ty;
__local float buffer[8][8];
buffer[ty][tx] = input[ID1 * P + ID0];
barrier (CLK_LOCAL_MEM_FENCE);
const uint newID0 = get_group_id (1) * 8 + tx;
const uint newID1 = get_group_id (0) * 8 + ty;
output[newID1 * Q + newID0] = buffer[tx][ty];
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment