Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
; ModuleID = './core.bc'
source_filename = "src/core.c"
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
%struct.image = type { i8*, i64, i64 }
; Function Attrs: alwaysinline norecurse nounwind readnone uwtable
define i8* @at(i8* readnone, i64, i64, i64) local_unnamed_addr #0 {
%5 = mul nsw i64 %3, %1
%6 = add nsw i64 %5, %2
%7 = getelementptr inbounds i8, i8* %0, i64 %6
ret i8* %7
}
; Function Attrs: alwaysinline nounwind uwtable
define i64 @core_isqrt(i64) local_unnamed_addr #1 {
%2 = sitofp i64 %0 to double
%3 = tail call double @sqrt(double %2) #5
%4 = fptosi double %3 to i64
ret i64 %4
}
; Function Attrs: alwaysinline nounwind
declare double @sqrt(double) local_unnamed_addr #2
; Function Attrs: alwaysinline inlinehint nounwind uwtable
define i64 @core_input_at(i64, i64, %struct.image* nocapture readonly, i64, i64) local_unnamed_addr #3 {
%6 = getelementptr inbounds %struct.image, %struct.image* %2, i64 %4, i32 1
%7 = load i64, i64* %6, align 8
%8 = icmp sle i64 %7, %0
%9 = icmp slt i64 %0, 0
%or.cond = or i1 %9, %8
br i1 %or.cond, label %21, label %10
; <label>:10: ; preds = %5
%11 = getelementptr inbounds %struct.image, %struct.image* %2, i64 %4, i32 2
%12 = load i64, i64* %11, align 8
%13 = icmp sle i64 %12, %1
%14 = icmp slt i64 %1, 0
%or.cond1 = or i1 %14, %13
br i1 %or.cond1, label %21, label %15
; <label>:15: ; preds = %10
%.sroa.0.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 %4, i32 0
%.sroa.0.0.copyload = load i8*, i8** %.sroa.0.0..sroa_idx, align 8
%16 = mul nsw i64 %7, %1
%17 = add nsw i64 %16, %0
%18 = getelementptr inbounds i8, i8* %.sroa.0.0.copyload, i64 %17
%19 = load i8, i8* %18, align 1
%20 = zext i8 %19 to i64
br label %21
; <label>:21: ; preds = %10, %5, %15
%.0 = phi i64 [ %20, %15 ], [ 0, %5 ], [ 0, %10 ]
ret i64 %.0
}
; Function Attrs: alwaysinline nounwind uwtable
define void @jitfunction(i64, i64, i8*, i8** nocapture readonly, i64) local_unnamed_addr #1 {
%6 = alloca %struct.image, i64 %4, align 16
%7 = icmp eq i64 %4, 0
br i1 %7, label %.preheader312, label %.lr.ph318.preheader
.lr.ph318.preheader: ; preds = %5
br label %.lr.ph318
.preheader312.loopexit: ; preds = %.lr.ph318
br label %.preheader312
.preheader312: ; preds = %.preheader312.loopexit, %5
%8 = icmp sgt i64 %0, 0
br i1 %8, label %.preheader.lr.ph, label %._crit_edge315
.preheader.lr.ph: ; preds = %.preheader312
%9 = icmp sgt i64 %1, 0
%10 = getelementptr inbounds %struct.image, %struct.image* %6, i64 0, i32 1
%11 = getelementptr inbounds %struct.image, %struct.image* %6, i64 0, i32 2
%.sroa.0214.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %6, i64 0, i32 0
br label %.preheader
.lr.ph318: ; preds = %.lr.ph318.preheader, %.lr.ph318
%.02316 = phi i64 [ %19, %.lr.ph318 ], [ 0, %.lr.ph318.preheader ]
%12 = getelementptr inbounds i8*, i8** %3, i64 %.02316
%13 = bitcast i8** %12 to i64*
%14 = load i64, i64* %13, align 8
%15 = getelementptr inbounds %struct.image, %struct.image* %6, i64 %.02316
%16 = bitcast %struct.image* %15 to i64*
store i64 %14, i64* %16, align 8
%17 = getelementptr inbounds %struct.image, %struct.image* %6, i64 %.02316, i32 1
store i64 %0, i64* %17, align 8
%18 = getelementptr inbounds %struct.image, %struct.image* %6, i64 %.02316, i32 2
store i64 %1, i64* %18, align 8
%19 = add nuw i64 %.02316, 1
%exitcond = icmp eq i64 %19, %4
br i1 %exitcond, label %.preheader312.loopexit, label %.lr.ph318
.preheader: ; preds = %.preheader.lr.ph, %._crit_edge
%indvars.iv320 = phi i64 [ 0, %.preheader.lr.ph ], [ %indvars.iv.next321.pre-phi, %._crit_edge ]
br i1 %9, label %.lr.ph, label %.preheader.._crit_edge_crit_edge
.preheader.._crit_edge_crit_edge: ; preds = %.preheader
%.pre322 = add nuw i64 %indvars.iv320, 1
br label %._crit_edge
.lr.ph: ; preds = %.preheader
%add.i.i.i = add nsw i64 %indvars.iv320, -1
%20 = icmp slt i64 %indvars.iv320, 1
%add22.i.i.i = add nuw nsw i64 %indvars.iv320, 1
%.pre = load i64, i64* %10, align 8
%21 = icmp sgt i64 %indvars.iv320, %.pre
%or.cond = or i1 %20, %21
%22 = icmp sge i64 %add22.i.i.i, %.pre
%23 = icmp sge i64 %indvars.iv320, %.pre
br label %24
; <label>:24: ; preds = %.lr.ph, %function.exit
%indvars.iv = phi i64 [ 0, %.lr.ph ], [ %add7.i.i.i332, %function.exit ]
%add1.i.i.i = add nsw i64 %indvars.iv, -1
br i1 %or.cond, label %image_source.exit43.i.i.i.thread333, label %25
image_source.exit43.i.i.i.thread333: ; preds = %24
%add7.i.i.i334 = add nuw i64 %indvars.iv, 1
br label %image_source.exit42.i.i.i
; <label>:25: ; preds = %24
%26 = load i64, i64* %11, align 16
%27 = icmp sgt i64 %indvars.iv, %26
%28 = icmp slt i64 %indvars.iv, 1
%or.cond39 = or i1 %28, %27
br i1 %or.cond39, label %35, label %29
; <label>:29: ; preds = %25
%.sroa.0111.0.copyload = load i8*, i8** %.sroa.0214.0..sroa_idx, align 16
%30 = mul nsw i64 %.pre, %add1.i.i.i
%31 = add nsw i64 %30, %add.i.i.i
%32 = getelementptr inbounds i8, i8* %.sroa.0111.0.copyload, i64 %31
%33 = load i8, i8* %32, align 1
%34 = zext i8 %33 to i64
br label %35
; <label>:35: ; preds = %25, %29
%.03.ph = phi i64 [ 0, %25 ], [ %34, %29 ]
%36 = load i64, i64* %11, align 16
%37 = icmp slt i64 %indvars.iv, %36
br i1 %37, label %38, label %44
; <label>:38: ; preds = %35
%.sroa.0150.0.copyload = load i8*, i8** %.sroa.0214.0..sroa_idx, align 16
%39 = mul nsw i64 %.pre, %indvars.iv
%40 = add nsw i64 %39, %add.i.i.i
%41 = getelementptr inbounds i8, i8* %.sroa.0150.0.copyload, i64 %40
%42 = load i8, i8* %41, align 1
%43 = zext i8 %42 to i64
br label %44
; <label>:44: ; preds = %35, %38
%.013.ph = phi i64 [ 0, %35 ], [ %43, %38 ]
%add7.i.i.i326 = add nuw i64 %indvars.iv, 1
%45 = load i64, i64* %11, align 16
%46 = icmp slt i64 %add7.i.i.i326, %45
br i1 %46, label %47, label %image_source.exit42.i.i.i
; <label>:47: ; preds = %44
%.sroa.0142.0.copyload = load i8*, i8** %.sroa.0214.0..sroa_idx, align 16
%48 = mul nsw i64 %.pre, %add7.i.i.i326
%49 = add nsw i64 %48, %add.i.i.i
%50 = getelementptr inbounds i8, i8* %.sroa.0142.0.copyload, i64 %49
%51 = load i8, i8* %50, align 1
%52 = zext i8 %51 to i64
br label %image_source.exit42.i.i.i
image_source.exit42.i.i.i: ; preds = %image_source.exit43.i.i.i.thread333, %44, %47
%add7.i.i.i332 = phi i64 [ %add7.i.i.i326, %47 ], [ %add7.i.i.i326, %44 ], [ %add7.i.i.i334, %image_source.exit43.i.i.i.thread333 ]
%.013330 = phi i64 [ %.013.ph, %47 ], [ %.013.ph, %44 ], [ 0, %image_source.exit43.i.i.i.thread333 ]
%.03324328 = phi i64 [ %.03.ph, %47 ], [ %.03.ph, %44 ], [ 0, %image_source.exit43.i.i.i.thread333 ]
%.012 = phi i64 [ %52, %47 ], [ 0, %44 ], [ 0, %image_source.exit43.i.i.i.thread333 ]
br i1 %22, label %compiled_fn.exit.i.i, label %53
; <label>:53: ; preds = %image_source.exit42.i.i.i
%54 = load i64, i64* %11, align 16
%55 = icmp sgt i64 %indvars.iv, %54
%56 = icmp slt i64 %indvars.iv, 1
%or.cond51 = or i1 %56, %55
br i1 %or.cond51, label %63, label %57
; <label>:57: ; preds = %53
%.sroa.0134.0.copyload = load i8*, i8** %.sroa.0214.0..sroa_idx, align 16
%58 = mul nsw i64 %.pre, %add1.i.i.i
%59 = add nsw i64 %58, %add22.i.i.i
%60 = getelementptr inbounds i8, i8* %.sroa.0134.0.copyload, i64 %59
%61 = load i8, i8* %60, align 1
%62 = zext i8 %61 to i64
br label %63
; <label>:63: ; preds = %53, %57
%.07.ph = phi i64 [ 0, %53 ], [ %62, %57 ]
%64 = load i64, i64* %11, align 16
%65 = icmp slt i64 %indvars.iv, %64
br i1 %65, label %66, label %72
; <label>:66: ; preds = %63
%.sroa.0126.0.copyload = load i8*, i8** %.sroa.0214.0..sroa_idx, align 16
%67 = mul nsw i64 %.pre, %indvars.iv
%68 = add nsw i64 %67, %add22.i.i.i
%69 = getelementptr inbounds i8, i8* %.sroa.0126.0.copyload, i64 %68
%70 = load i8, i8* %69, align 1
%71 = zext i8 %70 to i64
br label %72
; <label>:72: ; preds = %63, %66
%.06.ph = phi i64 [ 0, %63 ], [ %71, %66 ]
%73 = load i64, i64* %11, align 16
%74 = icmp slt i64 %add7.i.i.i332, %73
br i1 %74, label %75, label %compiled_fn.exit.i.i
; <label>:75: ; preds = %72
%.sroa.0118.0.copyload = load i8*, i8** %.sroa.0214.0..sroa_idx, align 16
%76 = mul nsw i64 %.pre, %add7.i.i.i332
%77 = add nsw i64 %76, %add22.i.i.i
%78 = getelementptr inbounds i8, i8* %.sroa.0118.0.copyload, i64 %77
%79 = load i8, i8* %78, align 1
%80 = zext i8 %79 to i64
br label %compiled_fn.exit.i.i
compiled_fn.exit.i.i: ; preds = %image_source.exit42.i.i.i, %72, %75
%.06341 = phi i64 [ %.06.ph, %75 ], [ %.06.ph, %72 ], [ 0, %image_source.exit42.i.i.i ]
%.07336339 = phi i64 [ %.07.ph, %75 ], [ %.07.ph, %72 ], [ 0, %image_source.exit42.i.i.i ]
%.05 = phi i64 [ %80, %75 ], [ 0, %72 ], [ 0, %image_source.exit42.i.i.i ]
%tmp = sub nsw i64 %.06341, %.013330
%tmp302 = shl nsw i64 %tmp, 1
%sum = add nuw nsw i64 %.012, %.03324328
%add26.i.i.i = sub nsw i64 %.07336339, %sum
%add30.i.i.i = add nsw i64 %add26.i.i.i, %.05
%add35.i.i.i = add nsw i64 %add30.i.i.i, %tmp302
br i1 %or.cond, label %image_source.exit42.i19.i.i, label %81
; <label>:81: ; preds = %compiled_fn.exit.i.i
%82 = load i64, i64* %11, align 16
%83 = icmp sgt i64 %indvars.iv, %82
%84 = icmp slt i64 %indvars.iv, 1
%or.cond57 = or i1 %84, %83
br i1 %or.cond57, label %91, label %85
; <label>:85: ; preds = %81
%.sroa.0158.0.copyload = load i8*, i8** %.sroa.0214.0..sroa_idx, align 16
%86 = mul nsw i64 %.pre, %add1.i.i.i
%87 = add nsw i64 %86, %add.i.i.i
%88 = getelementptr inbounds i8, i8* %.sroa.0158.0.copyload, i64 %87
%89 = load i8, i8* %88, align 1
%90 = zext i8 %89 to i64
br label %91
; <label>:91: ; preds = %81, %85
%.014.ph = phi i64 [ 0, %81 ], [ %90, %85 ]
%92 = load i64, i64* %11, align 16
%93 = icmp slt i64 %indvars.iv, %92
br i1 %93, label %94, label %100
; <label>:94: ; preds = %91
%.sroa.0198.0.copyload = load i8*, i8** %.sroa.0214.0..sroa_idx, align 16
%95 = mul nsw i64 %.pre, %indvars.iv
%96 = add nsw i64 %95, %add.i.i.i
%97 = getelementptr inbounds i8, i8* %.sroa.0198.0.copyload, i64 %96
%98 = load i8, i8* %97, align 1
%99 = zext i8 %98 to i64
br label %100
; <label>:100: ; preds = %91, %94
%.024.ph = phi i64 [ 0, %91 ], [ %99, %94 ]
%101 = load i64, i64* %11, align 16
%102 = icmp slt i64 %add7.i.i.i332, %101
br i1 %102, label %103, label %image_source.exit42.i19.i.i
; <label>:103: ; preds = %100
%.sroa.0190.0.copyload = load i8*, i8** %.sroa.0214.0..sroa_idx, align 16
%104 = mul nsw i64 %.pre, %add7.i.i.i332
%105 = add nsw i64 %104, %add.i.i.i
%106 = getelementptr inbounds i8, i8* %.sroa.0190.0.copyload, i64 %105
%107 = load i8, i8* %106, align 1
%108 = zext i8 %107 to i64
br label %image_source.exit42.i19.i.i
image_source.exit42.i19.i.i: ; preds = %compiled_fn.exit.i.i, %100, %103
%.024349 = phi i64 [ %.024.ph, %103 ], [ %.024.ph, %100 ], [ 0, %compiled_fn.exit.i.i ]
%.014344347 = phi i64 [ %.014.ph, %103 ], [ %.014.ph, %100 ], [ 0, %compiled_fn.exit.i.i ]
%.023 = phi i64 [ %108, %103 ], [ 0, %100 ], [ 0, %compiled_fn.exit.i.i ]
br i1 %22, label %compiled_fn.exit35.i.i, label %109
; <label>:109: ; preds = %image_source.exit42.i19.i.i
%110 = load i64, i64* %11, align 16
%111 = icmp sgt i64 %indvars.iv, %110
%112 = icmp slt i64 %indvars.iv, 1
%or.cond69 = or i1 %112, %111
br i1 %or.cond69, label %119, label %113
; <label>:113: ; preds = %109
%.sroa.0182.0.copyload = load i8*, i8** %.sroa.0214.0..sroa_idx, align 16
%114 = mul nsw i64 %.pre, %add1.i.i.i
%115 = add nsw i64 %114, %add22.i.i.i
%116 = getelementptr inbounds i8, i8* %.sroa.0182.0.copyload, i64 %115
%117 = load i8, i8* %116, align 1
%118 = zext i8 %117 to i64
br label %119
; <label>:119: ; preds = %109, %113
%.018.ph = phi i64 [ 0, %109 ], [ %118, %113 ]
%120 = load i64, i64* %11, align 16
%121 = icmp slt i64 %indvars.iv, %120
br i1 %121, label %122, label %128
; <label>:122: ; preds = %119
%.sroa.0174.0.copyload = load i8*, i8** %.sroa.0214.0..sroa_idx, align 16
%123 = mul nsw i64 %.pre, %indvars.iv
%124 = add nsw i64 %123, %add22.i.i.i
%125 = getelementptr inbounds i8, i8* %.sroa.0174.0.copyload, i64 %124
%126 = load i8, i8* %125, align 1
%127 = zext i8 %126 to i64
br label %128
; <label>:128: ; preds = %119, %122
%.017.ph = phi i64 [ 0, %119 ], [ %127, %122 ]
%129 = load i64, i64* %11, align 16
%130 = icmp slt i64 %add7.i.i.i332, %129
br i1 %130, label %131, label %compiled_fn.exit35.i.i
; <label>:131: ; preds = %128
%.sroa.0166.0.copyload = load i8*, i8** %.sroa.0214.0..sroa_idx, align 16
%132 = mul nsw i64 %.pre, %add7.i.i.i332
%133 = add nsw i64 %132, %add22.i.i.i
%134 = getelementptr inbounds i8, i8* %.sroa.0166.0.copyload, i64 %133
%135 = load i8, i8* %134, align 1
%136 = zext i8 %135 to i64
br label %compiled_fn.exit35.i.i
compiled_fn.exit35.i.i: ; preds = %image_source.exit42.i19.i.i, %128, %131
%.017357 = phi i64 [ %.017.ph, %131 ], [ %.017.ph, %128 ], [ 0, %image_source.exit42.i19.i.i ]
%.018352355 = phi i64 [ %.018.ph, %131 ], [ %.018.ph, %128 ], [ 0, %image_source.exit42.i19.i.i ]
%.015 = phi i64 [ %136, %131 ], [ 0, %128 ], [ 0, %image_source.exit42.i19.i.i ]
%tmp304 = sub nsw i64 %.017357, %.024349
%tmp305 = shl nsw i64 %tmp304, 1
%sum319 = add nuw nsw i64 %.023, %.014344347
%add26.i26.i.i = sub nsw i64 %.018352355, %sum319
%add30.i30.i.i = add nsw i64 %add26.i26.i.i, %.015
%add35.i34.i.i = add nsw i64 %add30.i30.i.i, %tmp305
%mul.i.i = mul nsw i64 %add35.i34.i.i, %add35.i.i.i
br i1 %or.cond, label %image_source.1.exit42.i62.i.i, label %137
; <label>:137: ; preds = %compiled_fn.exit35.i.i
%138 = load i64, i64* %11, align 16
%139 = icmp sgt i64 %indvars.iv, %138
%140 = icmp slt i64 %indvars.iv, 1
%or.cond75 = or i1 %140, %139
br i1 %or.cond75, label %147, label %141
; <label>:141: ; preds = %137
%.sroa.0254.0.copyload = load i8*, i8** %.sroa.0214.0..sroa_idx, align 16
%142 = mul nsw i64 %.pre, %add1.i.i.i
%143 = add nsw i64 %142, %add.i.i.i
%144 = getelementptr inbounds i8, i8* %.sroa.0254.0.copyload, i64 %143
%145 = load i8, i8* %144, align 1
%146 = zext i8 %145 to i64
br label %147
; <label>:147: ; preds = %137, %141
%.036.ph = phi i64 [ 0, %137 ], [ %146, %141 ]
%148 = load i64, i64* %11, align 16
%149 = icmp slt i64 %add7.i.i.i332, %148
br i1 %149, label %150, label %image_source.1.exit42.i62.i.i
; <label>:150: ; preds = %147
%.sroa.0294.0.copyload = load i8*, i8** %.sroa.0214.0..sroa_idx, align 16
%151 = mul nsw i64 %.pre, %add7.i.i.i332
%152 = add nsw i64 %151, %add.i.i.i
%153 = getelementptr inbounds i8, i8* %.sroa.0294.0.copyload, i64 %152
%154 = load i8, i8* %153, align 1
%155 = zext i8 %154 to i64
br label %image_source.1.exit42.i62.i.i
image_source.1.exit42.i62.i.i: ; preds = %compiled_fn.exit35.i.i, %147, %150
%.036360 = phi i64 [ %.036.ph, %150 ], [ %.036.ph, %147 ], [ 0, %compiled_fn.exit35.i.i ]
%.010 = phi i64 [ %155, %150 ], [ 0, %147 ], [ 0, %compiled_fn.exit35.i.i ]
br i1 %23, label %image_source.1.exit39.i72.i.i, label %156
; <label>:156: ; preds = %image_source.1.exit42.i62.i.i
%157 = load i64, i64* %11, align 16
%158 = icmp sgt i64 %indvars.iv, %157
%159 = icmp slt i64 %indvars.iv, 1
%or.cond81 = or i1 %159, %158
br i1 %or.cond81, label %166, label %160
; <label>:160: ; preds = %156
%.sroa.0286.0.copyload = load i8*, i8** %.sroa.0214.0..sroa_idx, align 16
%161 = mul nsw i64 %.pre, %add1.i.i.i
%162 = add nsw i64 %161, %indvars.iv320
%163 = getelementptr inbounds i8, i8* %.sroa.0286.0.copyload, i64 %162
%164 = load i8, i8* %163, align 1
%165 = zext i8 %164 to i64
br label %166
; <label>:166: ; preds = %156, %160
%.016.ph = phi i64 [ 0, %156 ], [ %165, %160 ]
%167 = load i64, i64* %11, align 16
%168 = icmp slt i64 %add7.i.i.i332, %167
br i1 %168, label %169, label %image_source.1.exit39.i72.i.i
; <label>:169: ; preds = %166
%.sroa.0278.0.copyload = load i8*, i8** %.sroa.0214.0..sroa_idx, align 16
%170 = mul nsw i64 %.pre, %add7.i.i.i332
%171 = add nsw i64 %170, %indvars.iv320
%172 = getelementptr inbounds i8, i8* %.sroa.0278.0.copyload, i64 %171
%173 = load i8, i8* %172, align 1
%174 = zext i8 %173 to i64
br label %image_source.1.exit39.i72.i.i
image_source.1.exit39.i72.i.i: ; preds = %image_source.1.exit42.i62.i.i, %166, %169
%.016363 = phi i64 [ %.016.ph, %169 ], [ %.016.ph, %166 ], [ 0, %image_source.1.exit42.i62.i.i ]
%.028 = phi i64 [ %174, %169 ], [ 0, %166 ], [ 0, %image_source.1.exit42.i62.i.i ]
br i1 %22, label %compiled_fn.2.exit81.i.i, label %175
; <label>:175: ; preds = %image_source.1.exit39.i72.i.i
%176 = load i64, i64* %11, align 16
%177 = icmp sgt i64 %indvars.iv, %176
%178 = icmp slt i64 %indvars.iv, 1
%or.cond87 = or i1 %178, %177
br i1 %or.cond87, label %185, label %179
; <label>:179: ; preds = %175
%.sroa.0270.0.copyload = load i8*, i8** %.sroa.0214.0..sroa_idx, align 16
%180 = mul nsw i64 %.pre, %add1.i.i.i
%181 = add nsw i64 %180, %add22.i.i.i
%182 = getelementptr inbounds i8, i8* %.sroa.0270.0.copyload, i64 %181
%183 = load i8, i8* %182, align 1
%184 = zext i8 %183 to i64
br label %185
; <label>:185: ; preds = %175, %179
%.034.ph = phi i64 [ 0, %175 ], [ %184, %179 ]
%186 = load i64, i64* %11, align 16
%187 = icmp slt i64 %add7.i.i.i332, %186
br i1 %187, label %188, label %compiled_fn.2.exit81.i.i
; <label>:188: ; preds = %185
%.sroa.0262.0.copyload = load i8*, i8** %.sroa.0214.0..sroa_idx, align 16
%189 = mul nsw i64 %.pre, %add7.i.i.i332
%190 = add nsw i64 %189, %add22.i.i.i
%191 = getelementptr inbounds i8, i8* %.sroa.0262.0.copyload, i64 %190
%192 = load i8, i8* %191, align 1
%193 = zext i8 %192 to i64
br label %compiled_fn.2.exit81.i.i
compiled_fn.2.exit81.i.i: ; preds = %image_source.1.exit39.i72.i.i, %185, %188
%.034366 = phi i64 [ %.034.ph, %188 ], [ %.034.ph, %185 ], [ 0, %image_source.1.exit39.i72.i.i ]
%.037 = phi i64 [ %193, %188 ], [ 0, %185 ], [ 0, %image_source.1.exit39.i72.i.i ]
%tmp307 = sub nsw i64 %.028, %.016363
%tmp308 = shl nsw i64 %tmp307, 1
%add14.i64.i.i = sub nsw i64 %.010, %.036360
%add21.i69.i.i = sub nsw i64 %add14.i64.i.i, %.034366
%add26.i74.i.i = add nsw i64 %add21.i69.i.i, %.037
%add35.i80.i.i = add nsw i64 %add26.i74.i.i, %tmp308
br i1 %or.cond, label %image_source.1.exit42.i.i.i, label %194
; <label>:194: ; preds = %compiled_fn.2.exit81.i.i
%195 = load i64, i64* %11, align 16
%196 = icmp sgt i64 %indvars.iv, %195
%197 = icmp slt i64 %indvars.iv, 1
%or.cond93 = or i1 %197, %196
br i1 %or.cond93, label %204, label %198
; <label>:198: ; preds = %194
%.sroa.0206.0.copyload = load i8*, i8** %.sroa.0214.0..sroa_idx, align 16
%199 = mul nsw i64 %.pre, %add1.i.i.i
%200 = add nsw i64 %199, %add.i.i.i
%201 = getelementptr inbounds i8, i8* %.sroa.0206.0.copyload, i64 %200
%202 = load i8, i8* %201, align 1
%203 = zext i8 %202 to i64
br label %204
; <label>:204: ; preds = %194, %198
%.025.ph = phi i64 [ 0, %194 ], [ %203, %198 ]
%205 = load i64, i64* %11, align 16
%206 = icmp slt i64 %add7.i.i.i332, %205
br i1 %206, label %207, label %image_source.1.exit42.i.i.i
; <label>:207: ; preds = %204
%.sroa.0246.0.copyload = load i8*, i8** %.sroa.0214.0..sroa_idx, align 16
%208 = mul nsw i64 %.pre, %add7.i.i.i332
%209 = add nsw i64 %208, %add.i.i.i
%210 = getelementptr inbounds i8, i8* %.sroa.0246.0.copyload, i64 %209
%211 = load i8, i8* %210, align 1
%212 = zext i8 %211 to i64
br label %image_source.1.exit42.i.i.i
image_source.1.exit42.i.i.i: ; preds = %compiled_fn.2.exit81.i.i, %204, %207
%.025369 = phi i64 [ %.025.ph, %207 ], [ %.025.ph, %204 ], [ 0, %compiled_fn.2.exit81.i.i ]
%.033 = phi i64 [ %212, %207 ], [ 0, %204 ], [ 0, %compiled_fn.2.exit81.i.i ]
br i1 %23, label %image_source.1.exit39.i.i.i, label %213
; <label>:213: ; preds = %image_source.1.exit42.i.i.i
%214 = load i64, i64* %11, align 16
%215 = icmp sgt i64 %indvars.iv, %214
%216 = icmp slt i64 %indvars.iv, 1
%or.cond99 = or i1 %216, %215
br i1 %or.cond99, label %223, label %217
; <label>:217: ; preds = %213
%.sroa.0238.0.copyload = load i8*, i8** %.sroa.0214.0..sroa_idx, align 16
%218 = mul nsw i64 %.pre, %add1.i.i.i
%219 = add nsw i64 %218, %indvars.iv320
%220 = getelementptr inbounds i8, i8* %.sroa.0238.0.copyload, i64 %219
%221 = load i8, i8* %220, align 1
%222 = zext i8 %221 to i64
br label %223
; <label>:223: ; preds = %213, %217
%.032.ph = phi i64 [ 0, %213 ], [ %222, %217 ]
%224 = load i64, i64* %11, align 16
%225 = icmp slt i64 %add7.i.i.i332, %224
br i1 %225, label %226, label %image_source.1.exit39.i.i.i
; <label>:226: ; preds = %223
%.sroa.0230.0.copyload = load i8*, i8** %.sroa.0214.0..sroa_idx, align 16
%227 = mul nsw i64 %.pre, %add7.i.i.i332
%228 = add nsw i64 %227, %indvars.iv320
%229 = getelementptr inbounds i8, i8* %.sroa.0230.0.copyload, i64 %228
%230 = load i8, i8* %229, align 1
%231 = zext i8 %230 to i64
br label %image_source.1.exit39.i.i.i
image_source.1.exit39.i.i.i: ; preds = %image_source.1.exit42.i.i.i, %223, %226
%.032372 = phi i64 [ %.032.ph, %226 ], [ %.032.ph, %223 ], [ 0, %image_source.1.exit42.i.i.i ]
%.030 = phi i64 [ %231, %226 ], [ 0, %223 ], [ 0, %image_source.1.exit42.i.i.i ]
br i1 %22, label %function.exit, label %232
; <label>:232: ; preds = %image_source.1.exit39.i.i.i
%233 = load i64, i64* %11, align 16
%234 = icmp sgt i64 %indvars.iv, %233
%235 = icmp slt i64 %indvars.iv, 1
%or.cond105 = or i1 %235, %234
br i1 %or.cond105, label %242, label %236
; <label>:236: ; preds = %232
%.sroa.0222.0.copyload = load i8*, i8** %.sroa.0214.0..sroa_idx, align 16
%237 = mul nsw i64 %.pre, %add1.i.i.i
%238 = add nsw i64 %237, %add22.i.i.i
%239 = getelementptr inbounds i8, i8* %.sroa.0222.0.copyload, i64 %238
%240 = load i8, i8* %239, align 1
%241 = zext i8 %240 to i64
br label %242
; <label>:242: ; preds = %232, %236
%.029.ph = phi i64 [ 0, %232 ], [ %241, %236 ]
%243 = load i64, i64* %11, align 16
%244 = icmp slt i64 %add7.i.i.i332, %243
br i1 %244, label %245, label %function.exit
; <label>:245: ; preds = %242
%.sroa.0214.0.copyload = load i8*, i8** %.sroa.0214.0..sroa_idx, align 16
%246 = mul nsw i64 %.pre, %add7.i.i.i332
%247 = add nsw i64 %246, %add22.i.i.i
%248 = getelementptr inbounds i8, i8* %.sroa.0214.0.copyload, i64 %247
%249 = load i8, i8* %248, align 1
%250 = zext i8 %249 to i64
br label %function.exit
function.exit: ; preds = %image_source.1.exit39.i.i.i, %242, %245
%.029375 = phi i64 [ %.029.ph, %245 ], [ %.029.ph, %242 ], [ 0, %image_source.1.exit39.i.i.i ]
%.026 = phi i64 [ %250, %245 ], [ 0, %242 ], [ 0, %image_source.1.exit39.i.i.i ]
%tmp310 = sub nsw i64 %.030, %.032372
%tmp311 = shl nsw i64 %tmp310, 1
%add14.i.i.i = sub nsw i64 %.033, %.025369
%add21.i.i.i = sub nsw i64 %add14.i.i.i, %.029375
%add26.i47.i.i = add nsw i64 %add21.i.i.i, %.026
%add35.i51.i.i = add nsw i64 %add26.i47.i.i, %tmp311
%mul4.i.i = mul nsw i64 %add35.i51.i.i, %add35.i80.i.i
%add.i.i = add i64 %mul4.i.i, %mul.i.i
%251 = sitofp i64 %add.i.i to double
%252 = tail call double @sqrt(double %251) #5
%253 = fptosi double %252 to i64
%254 = trunc i64 %253 to i8
%255 = mul nsw i64 %indvars.iv, %0
%256 = add nsw i64 %255, %indvars.iv320
%257 = getelementptr inbounds i8, i8* %2, i64 %256
store i8 %254, i8* %257, align 1
%258 = icmp slt i64 %add7.i.i.i332, %1
br i1 %258, label %24, label %._crit_edge.loopexit
._crit_edge.loopexit: ; preds = %function.exit
br label %._crit_edge
._crit_edge: ; preds = %._crit_edge.loopexit, %.preheader.._crit_edge_crit_edge
%indvars.iv.next321.pre-phi = phi i64 [ %.pre322, %.preheader.._crit_edge_crit_edge ], [ %add22.i.i.i, %._crit_edge.loopexit ]
%259 = icmp slt i64 %indvars.iv.next321.pre-phi, %0
br i1 %259, label %.preheader, label %._crit_edge315.loopexit
._crit_edge315.loopexit: ; preds = %._crit_edge
br label %._crit_edge315
._crit_edge315: ; preds = %._crit_edge315.loopexit, %.preheader312
ret void
}
; Function Attrs: alwaysinline nounwind
define i64 @function(i64, i64, %struct.image* readonly, i64) local_unnamed_addr #2 {
entry:
%add.i.i = add i64 %0, -1
%add1.i.i = add i64 %1, -1
%4 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 1
%5 = load i64, i64* %4, align 8
%6 = icmp sge i64 %add.i.i, %5
%7 = icmp slt i64 %add.i.i, 0
%or.cond = or i1 %7, %6
br i1 %or.cond, label %image_source.exit43.i.i.thread314, label %8
image_source.exit43.i.i.thread314: ; preds = %entry
%add7.i.i315 = add i64 %1, 1
br label %image_source.exit42.i.i
; <label>:8: ; preds = %entry
%9 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%10 = load i64, i64* %9, align 8
%11 = icmp sge i64 %add1.i.i, %10
%12 = icmp slt i64 %add1.i.i, 0
%or.cond36 = or i1 %12, %11
br i1 %or.cond36, label %19, label %13
; <label>:13: ; preds = %8
%.sroa.0.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0.0.copyload = load i8*, i8** %.sroa.0.0..sroa_idx, align 8
%14 = mul nsw i64 %5, %add1.i.i
%15 = add nsw i64 %14, %add.i.i
%16 = getelementptr inbounds i8, i8* %.sroa.0.0.copyload, i64 %15
%17 = load i8, i8* %16, align 1
%18 = zext i8 %17 to i64
br label %19
; <label>:19: ; preds = %8, %13
%.01.ph = phi i64 [ 0, %8 ], [ %18, %13 ]
%20 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%21 = load i64, i64* %20, align 8
%22 = icmp sle i64 %21, %1
%23 = icmp slt i64 %1, 0
%or.cond38 = or i1 %23, %22
br i1 %or.cond38, label %30, label %24
; <label>:24: ; preds = %19
%.sroa.0144.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0144.0.copyload = load i8*, i8** %.sroa.0144.0..sroa_idx, align 8
%25 = mul nsw i64 %5, %1
%26 = add nsw i64 %25, %add.i.i
%27 = getelementptr inbounds i8, i8* %.sroa.0144.0.copyload, i64 %26
%28 = load i8, i8* %27, align 1
%29 = zext i8 %28 to i64
br label %30
; <label>:30: ; preds = %19, %24
%.010.ph = phi i64 [ 0, %19 ], [ %29, %24 ]
%add7.i.i307 = add i64 %1, 1
%31 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%32 = load i64, i64* %31, align 8
%33 = icmp sge i64 %add7.i.i307, %32
%34 = icmp slt i64 %add7.i.i307, 0
%or.cond40 = or i1 %34, %33
br i1 %or.cond40, label %image_source.exit42.i.i, label %35
; <label>:35: ; preds = %30
%.sroa.0136.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0136.0.copyload = load i8*, i8** %.sroa.0136.0..sroa_idx, align 8
%36 = mul nsw i64 %5, %add7.i.i307
%37 = add nsw i64 %36, %add.i.i
%38 = getelementptr inbounds i8, i8* %.sroa.0136.0.copyload, i64 %37
%39 = load i8, i8* %38, align 1
%40 = zext i8 %39 to i64
br label %image_source.exit42.i.i
image_source.exit42.i.i: ; preds = %image_source.exit43.i.i.thread314, %30, %35
%add7.i.i313 = phi i64 [ %add7.i.i307, %35 ], [ %add7.i.i307, %30 ], [ %add7.i.i315, %image_source.exit43.i.i.thread314 ]
%.010311 = phi i64 [ %.010.ph, %35 ], [ %.010.ph, %30 ], [ 0, %image_source.exit43.i.i.thread314 ]
%.01305309 = phi i64 [ %.01.ph, %35 ], [ %.01.ph, %30 ], [ 0, %image_source.exit43.i.i.thread314 ]
%.09 = phi i64 [ %40, %35 ], [ 0, %30 ], [ 0, %image_source.exit43.i.i.thread314 ]
%41 = icmp slt i64 %0, 0
%add22.i.i = add i64 %0, 1
%42 = icmp sge i64 %add22.i.i, %5
%43 = icmp slt i64 %add22.i.i, 0
%or.cond47 = or i1 %43, %42
br i1 %or.cond47, label %compiled_fn.exit.i, label %44
; <label>:44: ; preds = %image_source.exit42.i.i
%45 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%46 = load i64, i64* %45, align 8
%47 = icmp sge i64 %add1.i.i, %46
%48 = icmp slt i64 %add1.i.i, 0
%or.cond48 = or i1 %48, %47
br i1 %or.cond48, label %55, label %49
; <label>:49: ; preds = %44
%.sroa.0128.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0128.0.copyload = load i8*, i8** %.sroa.0128.0..sroa_idx, align 8
%50 = mul nsw i64 %5, %add1.i.i
%51 = add nsw i64 %50, %add22.i.i
%52 = getelementptr inbounds i8, i8* %.sroa.0128.0.copyload, i64 %51
%53 = load i8, i8* %52, align 1
%54 = zext i8 %53 to i64
br label %55
; <label>:55: ; preds = %44, %49
%.04.ph = phi i64 [ 0, %44 ], [ %54, %49 ]
%56 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%57 = load i64, i64* %56, align 8
%58 = icmp sle i64 %57, %1
%59 = icmp slt i64 %1, 0
%or.cond50 = or i1 %59, %58
br i1 %or.cond50, label %66, label %60
; <label>:60: ; preds = %55
%.sroa.0120.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0120.0.copyload = load i8*, i8** %.sroa.0120.0..sroa_idx, align 8
%61 = mul nsw i64 %5, %1
%62 = add nsw i64 %61, %add22.i.i
%63 = getelementptr inbounds i8, i8* %.sroa.0120.0.copyload, i64 %62
%64 = load i8, i8* %63, align 1
%65 = zext i8 %64 to i64
br label %66
; <label>:66: ; preds = %55, %60
%.03.ph = phi i64 [ 0, %55 ], [ %65, %60 ]
%67 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%68 = load i64, i64* %67, align 8
%69 = icmp sge i64 %add7.i.i313, %68
%70 = icmp slt i64 %add7.i.i313, 0
%or.cond52 = or i1 %70, %69
br i1 %or.cond52, label %compiled_fn.exit.i, label %71
; <label>:71: ; preds = %66
%.sroa.0112.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0112.0.copyload = load i8*, i8** %.sroa.0112.0..sroa_idx, align 8
%72 = mul nsw i64 %5, %add7.i.i313
%73 = add nsw i64 %72, %add22.i.i
%74 = getelementptr inbounds i8, i8* %.sroa.0112.0.copyload, i64 %73
%75 = load i8, i8* %74, align 1
%76 = zext i8 %75 to i64
br label %compiled_fn.exit.i
compiled_fn.exit.i: ; preds = %image_source.exit42.i.i, %66, %71
%.03322 = phi i64 [ %.03.ph, %71 ], [ %.03.ph, %66 ], [ 0, %image_source.exit42.i.i ]
%.04317320 = phi i64 [ %.04.ph, %71 ], [ %.04.ph, %66 ], [ 0, %image_source.exit42.i.i ]
%.02 = phi i64 [ %76, %71 ], [ 0, %66 ], [ 0, %image_source.exit42.i.i ]
%tmp = sub nsw i64 %.03322, %.010311
%tmp299 = shl nsw i64 %tmp, 1
%sum = add nuw nsw i64 %.09, %.01305309
%add26.i.i = sub nsw i64 %.04317320, %sum
%add30.i.i = add nsw i64 %add26.i.i, %.02
%add35.i.i = add nsw i64 %add30.i.i, %tmp299
br i1 %or.cond, label %image_source.exit42.i19.i, label %77
; <label>:77: ; preds = %compiled_fn.exit.i
%78 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%79 = load i64, i64* %78, align 8
%80 = icmp sge i64 %add1.i.i, %79
%81 = icmp slt i64 %add1.i.i, 0
%or.cond54 = or i1 %81, %80
br i1 %or.cond54, label %88, label %82
; <label>:82: ; preds = %77
%.sroa.0152.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0152.0.copyload = load i8*, i8** %.sroa.0152.0..sroa_idx, align 8
%83 = mul nsw i64 %5, %add1.i.i
%84 = add nsw i64 %83, %add.i.i
%85 = getelementptr inbounds i8, i8* %.sroa.0152.0.copyload, i64 %84
%86 = load i8, i8* %85, align 1
%87 = zext i8 %86 to i64
br label %88
; <label>:88: ; preds = %77, %82
%.011.ph = phi i64 [ 0, %77 ], [ %87, %82 ]
%89 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%90 = load i64, i64* %89, align 8
%91 = icmp sle i64 %90, %1
%92 = icmp slt i64 %1, 0
%or.cond56 = or i1 %92, %91
br i1 %or.cond56, label %99, label %93
; <label>:93: ; preds = %88
%.sroa.0192.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0192.0.copyload = load i8*, i8** %.sroa.0192.0..sroa_idx, align 8
%94 = mul nsw i64 %5, %1
%95 = add nsw i64 %94, %add.i.i
%96 = getelementptr inbounds i8, i8* %.sroa.0192.0.copyload, i64 %95
%97 = load i8, i8* %96, align 1
%98 = zext i8 %97 to i64
br label %99
; <label>:99: ; preds = %88, %93
%.021.ph = phi i64 [ 0, %88 ], [ %98, %93 ]
%100 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%101 = load i64, i64* %100, align 8
%102 = icmp sge i64 %add7.i.i313, %101
%103 = icmp slt i64 %add7.i.i313, 0
%or.cond58 = or i1 %103, %102
br i1 %or.cond58, label %image_source.exit42.i19.i, label %104
; <label>:104: ; preds = %99
%.sroa.0184.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0184.0.copyload = load i8*, i8** %.sroa.0184.0..sroa_idx, align 8
%105 = mul nsw i64 %5, %add7.i.i313
%106 = add nsw i64 %105, %add.i.i
%107 = getelementptr inbounds i8, i8* %.sroa.0184.0.copyload, i64 %106
%108 = load i8, i8* %107, align 1
%109 = zext i8 %108 to i64
br label %image_source.exit42.i19.i
image_source.exit42.i19.i: ; preds = %compiled_fn.exit.i, %99, %104
%.021330 = phi i64 [ %.021.ph, %104 ], [ %.021.ph, %99 ], [ 0, %compiled_fn.exit.i ]
%.011325328 = phi i64 [ %.011.ph, %104 ], [ %.011.ph, %99 ], [ 0, %compiled_fn.exit.i ]
%.020 = phi i64 [ %109, %104 ], [ 0, %99 ], [ 0, %compiled_fn.exit.i ]
br i1 %or.cond47, label %compiled_fn.exit35.i, label %110
; <label>:110: ; preds = %image_source.exit42.i19.i
%111 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%112 = load i64, i64* %111, align 8
%113 = icmp sge i64 %add1.i.i, %112
%114 = icmp slt i64 %add1.i.i, 0
%or.cond66 = or i1 %114, %113
br i1 %or.cond66, label %121, label %115
; <label>:115: ; preds = %110
%.sroa.0176.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0176.0.copyload = load i8*, i8** %.sroa.0176.0..sroa_idx, align 8
%116 = mul nsw i64 %5, %add1.i.i
%117 = add nsw i64 %116, %add22.i.i
%118 = getelementptr inbounds i8, i8* %.sroa.0176.0.copyload, i64 %117
%119 = load i8, i8* %118, align 1
%120 = zext i8 %119 to i64
br label %121
; <label>:121: ; preds = %110, %115
%.015.ph = phi i64 [ 0, %110 ], [ %120, %115 ]
%122 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%123 = load i64, i64* %122, align 8
%124 = icmp sle i64 %123, %1
%125 = icmp slt i64 %1, 0
%or.cond68 = or i1 %125, %124
br i1 %or.cond68, label %132, label %126
; <label>:126: ; preds = %121
%.sroa.0168.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0168.0.copyload = load i8*, i8** %.sroa.0168.0..sroa_idx, align 8
%127 = mul nsw i64 %5, %1
%128 = add nsw i64 %127, %add22.i.i
%129 = getelementptr inbounds i8, i8* %.sroa.0168.0.copyload, i64 %128
%130 = load i8, i8* %129, align 1
%131 = zext i8 %130 to i64
br label %132
; <label>:132: ; preds = %121, %126
%.014.ph = phi i64 [ 0, %121 ], [ %131, %126 ]
%133 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%134 = load i64, i64* %133, align 8
%135 = icmp sge i64 %add7.i.i313, %134
%136 = icmp slt i64 %add7.i.i313, 0
%or.cond70 = or i1 %136, %135
br i1 %or.cond70, label %compiled_fn.exit35.i, label %137
; <label>:137: ; preds = %132
%.sroa.0160.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0160.0.copyload = load i8*, i8** %.sroa.0160.0..sroa_idx, align 8
%138 = mul nsw i64 %5, %add7.i.i313
%139 = add nsw i64 %138, %add22.i.i
%140 = getelementptr inbounds i8, i8* %.sroa.0160.0.copyload, i64 %139
%141 = load i8, i8* %140, align 1
%142 = zext i8 %141 to i64
br label %compiled_fn.exit35.i
compiled_fn.exit35.i: ; preds = %image_source.exit42.i19.i, %132, %137
%.014338 = phi i64 [ %.014.ph, %137 ], [ %.014.ph, %132 ], [ 0, %image_source.exit42.i19.i ]
%.015333336 = phi i64 [ %.015.ph, %137 ], [ %.015.ph, %132 ], [ 0, %image_source.exit42.i19.i ]
%.013 = phi i64 [ %142, %137 ], [ 0, %132 ], [ 0, %image_source.exit42.i19.i ]
%tmp301 = sub nsw i64 %.014338, %.021330
%tmp302 = shl nsw i64 %tmp301, 1
%sum303 = add nuw nsw i64 %.020, %.011325328
%add26.i26.i = sub nsw i64 %.015333336, %sum303
%add30.i30.i = add nsw i64 %add26.i26.i, %.013
%add35.i34.i = add nsw i64 %add30.i30.i, %tmp302
%mul.i = mul nsw i64 %add35.i34.i, %add35.i.i
br i1 %or.cond, label %image_source.1.exit42.i62.i, label %143
; <label>:143: ; preds = %compiled_fn.exit35.i
%144 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%145 = load i64, i64* %144, align 8
%146 = icmp sge i64 %add1.i.i, %145
%147 = icmp slt i64 %add1.i.i, 0
%or.cond72 = or i1 %147, %146
br i1 %or.cond72, label %154, label %148
; <label>:148: ; preds = %143
%.sroa.0248.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0248.0.copyload = load i8*, i8** %.sroa.0248.0..sroa_idx, align 8
%149 = mul nsw i64 %5, %add1.i.i
%150 = add nsw i64 %149, %add.i.i
%151 = getelementptr inbounds i8, i8* %.sroa.0248.0.copyload, i64 %150
%152 = load i8, i8* %151, align 1
%153 = zext i8 %152 to i64
br label %154
; <label>:154: ; preds = %143, %148
%.033.ph = phi i64 [ 0, %143 ], [ %153, %148 ]
%155 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%156 = load i64, i64* %155, align 8
%157 = icmp sge i64 %add7.i.i313, %156
%158 = icmp slt i64 %add7.i.i313, 0
%or.cond76 = or i1 %158, %157
br i1 %or.cond76, label %image_source.1.exit42.i62.i, label %159
; <label>:159: ; preds = %154
%.sroa.0288.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0288.0.copyload = load i8*, i8** %.sroa.0288.0..sroa_idx, align 8
%160 = mul nsw i64 %5, %add7.i.i313
%161 = add nsw i64 %160, %add.i.i
%162 = getelementptr inbounds i8, i8* %.sroa.0288.0.copyload, i64 %161
%163 = load i8, i8* %162, align 1
%164 = zext i8 %163 to i64
br label %image_source.1.exit42.i62.i
image_source.1.exit42.i62.i: ; preds = %compiled_fn.exit35.i, %154, %159
%.033341 = phi i64 [ %.033.ph, %159 ], [ %.033.ph, %154 ], [ 0, %compiled_fn.exit35.i ]
%.06 = phi i64 [ %164, %159 ], [ 0, %154 ], [ 0, %compiled_fn.exit35.i ]
%add10.i60.i = sub nsw i64 %.06, %.033341
%165 = icmp sle i64 %5, %0
%or.cond77 = or i1 %41, %165
br i1 %or.cond77, label %image_source.1.exit39.i72.i, label %166
; <label>:166: ; preds = %image_source.1.exit42.i62.i
%167 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%168 = load i64, i64* %167, align 8
%169 = icmp sge i64 %add1.i.i, %168
%170 = icmp slt i64 %add1.i.i, 0
%or.cond78 = or i1 %170, %169
br i1 %or.cond78, label %177, label %171
; <label>:171: ; preds = %166
%.sroa.0280.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0280.0.copyload = load i8*, i8** %.sroa.0280.0..sroa_idx, align 8
%172 = mul nsw i64 %5, %add1.i.i
%173 = add nsw i64 %172, %0
%174 = getelementptr inbounds i8, i8* %.sroa.0280.0.copyload, i64 %173
%175 = load i8, i8* %174, align 1
%176 = zext i8 %175 to i64
%phitmp296 = mul nsw i64 %176, -2
br label %177
; <label>:177: ; preds = %166, %171
%.012.ph = phi i64 [ 0, %166 ], [ %phitmp296, %171 ]
%add14.i64.i343 = add i64 %add10.i60.i, %.012.ph
%178 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%179 = load i64, i64* %178, align 8
%180 = icmp sge i64 %add7.i.i313, %179
%181 = icmp slt i64 %add7.i.i313, 0
%or.cond82 = or i1 %181, %180
br i1 %or.cond82, label %image_source.1.exit39.i72.i, label %182
; <label>:182: ; preds = %177
%.sroa.0272.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0272.0.copyload = load i8*, i8** %.sroa.0272.0..sroa_idx, align 8
%183 = mul nsw i64 %5, %add7.i.i313
%184 = add nsw i64 %183, %0
%185 = getelementptr inbounds i8, i8* %.sroa.0272.0.copyload, i64 %184
%186 = load i8, i8* %185, align 1
%187 = zext i8 %186 to i64
%phitmp297 = shl nuw nsw i64 %187, 1
br label %image_source.1.exit39.i72.i
image_source.1.exit39.i72.i: ; preds = %image_source.1.exit42.i62.i, %177, %182
%add14.i64.i345 = phi i64 [ %add14.i64.i343, %182 ], [ %add14.i64.i343, %177 ], [ %add10.i60.i, %image_source.1.exit42.i62.i ]
%.024 = phi i64 [ %phitmp297, %182 ], [ 0, %177 ], [ 0, %image_source.1.exit42.i62.i ]
%add21.i69.i = add i64 %add14.i64.i345, %.024
br i1 %or.cond47, label %compiled_fn.2.exit81.i, label %188
; <label>:188: ; preds = %image_source.1.exit39.i72.i
%189 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%190 = load i64, i64* %189, align 8
%191 = icmp sge i64 %add1.i.i, %190
%192 = icmp slt i64 %add1.i.i, 0
%or.cond84 = or i1 %192, %191
br i1 %or.cond84, label %199, label %193
; <label>:193: ; preds = %188
%.sroa.0264.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0264.0.copyload = load i8*, i8** %.sroa.0264.0..sroa_idx, align 8
%194 = mul nsw i64 %5, %add1.i.i
%195 = add nsw i64 %194, %add22.i.i
%196 = getelementptr inbounds i8, i8* %.sroa.0264.0.copyload, i64 %195
%197 = load i8, i8* %196, align 1
%198 = zext i8 %197 to i64
br label %199
; <label>:199: ; preds = %188, %193
%.030.ph = phi i64 [ 0, %188 ], [ %198, %193 ]
%add26.i74.i348 = sub i64 %add21.i69.i, %.030.ph
%200 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%201 = load i64, i64* %200, align 8
%202 = icmp sge i64 %add7.i.i313, %201
%203 = icmp slt i64 %add7.i.i313, 0
%or.cond88 = or i1 %203, %202
br i1 %or.cond88, label %compiled_fn.2.exit81.i, label %204
; <label>:204: ; preds = %199
%.sroa.0256.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0256.0.copyload = load i8*, i8** %.sroa.0256.0..sroa_idx, align 8
%205 = mul nsw i64 %5, %add7.i.i313
%206 = add nsw i64 %205, %add22.i.i
%207 = getelementptr inbounds i8, i8* %.sroa.0256.0.copyload, i64 %206
%208 = load i8, i8* %207, align 1
%209 = zext i8 %208 to i64
br label %compiled_fn.2.exit81.i
compiled_fn.2.exit81.i: ; preds = %image_source.1.exit39.i72.i, %199, %204
%add26.i74.i350 = phi i64 [ %add26.i74.i348, %204 ], [ %add26.i74.i348, %199 ], [ %add21.i69.i, %image_source.1.exit39.i72.i ]
%.034 = phi i64 [ %209, %204 ], [ 0, %199 ], [ 0, %image_source.1.exit39.i72.i ]
%add35.i80.i = add i64 %add26.i74.i350, %.034
br i1 %or.cond, label %image_source.1.exit42.i.i, label %210
; <label>:210: ; preds = %compiled_fn.2.exit81.i
%211 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%212 = load i64, i64* %211, align 8
%213 = icmp sge i64 %add1.i.i, %212
%214 = icmp slt i64 %add1.i.i, 0
%or.cond90 = or i1 %214, %213
br i1 %or.cond90, label %221, label %215
; <label>:215: ; preds = %210
%.sroa.0200.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0200.0.copyload = load i8*, i8** %.sroa.0200.0..sroa_idx, align 8
%216 = mul nsw i64 %5, %add1.i.i
%217 = add nsw i64 %216, %add.i.i
%218 = getelementptr inbounds i8, i8* %.sroa.0200.0.copyload, i64 %217
%219 = load i8, i8* %218, align 1
%220 = zext i8 %219 to i64
br label %221
; <label>:221: ; preds = %210, %215
%.022.ph = phi i64 [ 0, %210 ], [ %220, %215 ]
%222 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%223 = load i64, i64* %222, align 8
%224 = icmp sge i64 %add7.i.i313, %223
%225 = icmp slt i64 %add7.i.i313, 0
%or.cond94 = or i1 %225, %224
br i1 %or.cond94, label %image_source.1.exit42.i.i, label %226
; <label>:226: ; preds = %221
%.sroa.0240.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0240.0.copyload = load i8*, i8** %.sroa.0240.0..sroa_idx, align 8
%227 = mul nsw i64 %5, %add7.i.i313
%228 = add nsw i64 %227, %add.i.i
%229 = getelementptr inbounds i8, i8* %.sroa.0240.0.copyload, i64 %228
%230 = load i8, i8* %229, align 1
%231 = zext i8 %230 to i64
br label %image_source.1.exit42.i.i
image_source.1.exit42.i.i: ; preds = %compiled_fn.2.exit81.i, %221, %226
%.022354 = phi i64 [ %.022.ph, %226 ], [ %.022.ph, %221 ], [ 0, %compiled_fn.2.exit81.i ]
%.031 = phi i64 [ %231, %226 ], [ 0, %221 ], [ 0, %compiled_fn.2.exit81.i ]
%add10.i42.i = sub nsw i64 %.031, %.022354
br i1 %or.cond77, label %image_source.1.exit39.i.i, label %232
; <label>:232: ; preds = %image_source.1.exit42.i.i
%233 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%234 = load i64, i64* %233, align 8
%235 = icmp sge i64 %add1.i.i, %234
%236 = icmp slt i64 %add1.i.i, 0
%or.cond96 = or i1 %236, %235
br i1 %or.cond96, label %243, label %237
; <label>:237: ; preds = %232
%.sroa.0232.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0232.0.copyload = load i8*, i8** %.sroa.0232.0..sroa_idx, align 8
%238 = mul nsw i64 %5, %add1.i.i
%239 = add nsw i64 %238, %0
%240 = getelementptr inbounds i8, i8* %.sroa.0232.0.copyload, i64 %239
%241 = load i8, i8* %240, align 1
%242 = zext i8 %241 to i64
%phitmp298 = mul nsw i64 %242, -2
br label %243
; <label>:243: ; preds = %232, %237
%.029.ph = phi i64 [ 0, %232 ], [ %phitmp298, %237 ]
%add14.i.i356 = add i64 %add10.i42.i, %.029.ph
%244 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%245 = load i64, i64* %244, align 8
%246 = icmp sge i64 %add7.i.i313, %245
%247 = icmp slt i64 %add7.i.i313, 0
%or.cond100 = or i1 %247, %246
br i1 %or.cond100, label %image_source.1.exit39.i.i, label %248
; <label>:248: ; preds = %243
%.sroa.0224.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0224.0.copyload = load i8*, i8** %.sroa.0224.0..sroa_idx, align 8
%249 = mul nsw i64 %5, %add7.i.i313
%250 = add nsw i64 %249, %0
%251 = getelementptr inbounds i8, i8* %.sroa.0224.0.copyload, i64 %250
%252 = load i8, i8* %251, align 1
%253 = zext i8 %252 to i64
%phitmp = shl nuw nsw i64 %253, 1
br label %image_source.1.exit39.i.i
image_source.1.exit39.i.i: ; preds = %image_source.1.exit42.i.i, %243, %248
%add14.i.i358 = phi i64 [ %add14.i.i356, %248 ], [ %add14.i.i356, %243 ], [ %add10.i42.i, %image_source.1.exit42.i.i ]
%.027 = phi i64 [ %phitmp, %248 ], [ 0, %243 ], [ 0, %image_source.1.exit42.i.i ]
%add21.i.i = add i64 %add14.i.i358, %.027
br i1 %or.cond47, label %compiled_fn.3.exit, label %254
; <label>:254: ; preds = %image_source.1.exit39.i.i
%255 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%256 = load i64, i64* %255, align 8
%257 = icmp sge i64 %add1.i.i, %256
%258 = icmp slt i64 %add1.i.i, 0
%or.cond102 = or i1 %258, %257
br i1 %or.cond102, label %265, label %259
; <label>:259: ; preds = %254
%.sroa.0216.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0216.0.copyload = load i8*, i8** %.sroa.0216.0..sroa_idx, align 8
%260 = mul nsw i64 %5, %add1.i.i
%261 = add nsw i64 %260, %add22.i.i
%262 = getelementptr inbounds i8, i8* %.sroa.0216.0.copyload, i64 %261
%263 = load i8, i8* %262, align 1
%264 = zext i8 %263 to i64
br label %265
; <label>:265: ; preds = %254, %259
%.026.ph = phi i64 [ 0, %254 ], [ %264, %259 ]
%add26.i47.i361 = sub i64 %add21.i.i, %.026.ph
%266 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%267 = load i64, i64* %266, align 8
%268 = icmp sge i64 %add7.i.i313, %267
%269 = icmp slt i64 %add7.i.i313, 0
%or.cond106 = or i1 %269, %268
br i1 %or.cond106, label %compiled_fn.3.exit, label %270
; <label>:270: ; preds = %265
%.sroa.0208.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0208.0.copyload = load i8*, i8** %.sroa.0208.0..sroa_idx, align 8
%271 = mul nsw i64 %5, %add7.i.i313
%272 = add nsw i64 %271, %add22.i.i
%273 = getelementptr inbounds i8, i8* %.sroa.0208.0.copyload, i64 %272
%274 = load i8, i8* %273, align 1
%275 = zext i8 %274 to i64
br label %compiled_fn.3.exit
compiled_fn.3.exit: ; preds = %image_source.1.exit39.i.i, %265, %270
%add26.i47.i363 = phi i64 [ %add26.i47.i361, %270 ], [ %add26.i47.i361, %265 ], [ %add21.i.i, %image_source.1.exit39.i.i ]
%.023 = phi i64 [ %275, %270 ], [ 0, %265 ], [ 0, %image_source.1.exit39.i.i ]
%add35.i51.i = add i64 %add26.i47.i363, %.023
%mul4.i = mul i64 %add35.i51.i, %add35.i80.i
%add.i = add i64 %mul4.i, %mul.i
%276 = sitofp i64 %add.i to double
%277 = tail call double @sqrt(double %276) #5
%278 = fptosi double %277 to i64
ret i64 %278
}
; Function Attrs: alwaysinline nounwind
define i64 @image_source(i64, i64, %struct.image* nocapture readonly, i64) local_unnamed_addr #4 {
entry:
%4 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 1
%5 = load i64, i64* %4, align 8
%6 = icmp sle i64 %5, %0
%7 = icmp slt i64 %0, 0
%or.cond = or i1 %7, %6
br i1 %or.cond, label %core_input_at.exit, label %8
; <label>:8: ; preds = %entry
%9 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%10 = load i64, i64* %9, align 8
%11 = icmp sle i64 %10, %1
%12 = icmp slt i64 %1, 0
%or.cond1 = or i1 %12, %11
br i1 %or.cond1, label %core_input_at.exit, label %13
; <label>:13: ; preds = %8
%.sroa.0.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0.0.copyload = load i8*, i8** %.sroa.0.0..sroa_idx, align 8
%14 = mul nsw i64 %5, %1
%15 = add nsw i64 %14, %0
%16 = getelementptr inbounds i8, i8* %.sroa.0.0.copyload, i64 %15
%17 = load i8, i8* %16, align 1
%18 = zext i8 %17 to i64
br label %core_input_at.exit
core_input_at.exit: ; preds = %8, %entry, %13
%.0 = phi i64 [ %18, %13 ], [ 0, %entry ], [ 0, %8 ]
ret i64 %.0
}
; Function Attrs: alwaysinline nounwind
define i64 @compiled_fn(i64, i64, %struct.image* readonly, i64) local_unnamed_addr #4 {
entry:
%add = add i64 %0, -1
%add1 = add i64 %1, -1
%4 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 1
%5 = load i64, i64* %4, align 8
%6 = icmp sge i64 %add, %5
%7 = icmp slt i64 %add, 0
%or.cond = or i1 %7, %6
br i1 %or.cond, label %image_source.exit43.thread124, label %8
image_source.exit43.thread124: ; preds = %entry
%add7126 = add i64 %1, 1
br label %image_source.exit42
; <label>:8: ; preds = %entry
%9 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%10 = load i64, i64* %9, align 8
%11 = icmp sge i64 %add1, %10
%12 = icmp slt i64 %add1, 0
%or.cond52 = or i1 %12, %11
br i1 %or.cond52, label %19, label %13
; <label>:13: ; preds = %8
%.sroa.0.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0.0.copyload = load i8*, i8** %.sroa.0.0..sroa_idx, align 8
%14 = mul nsw i64 %5, %add1
%15 = add nsw i64 %14, %add
%16 = getelementptr inbounds i8, i8* %.sroa.0.0.copyload, i64 %15
%17 = load i8, i8* %16, align 1
%18 = zext i8 %17 to i64
br label %19
; <label>:19: ; preds = %8, %13
%.044.ph = phi i64 [ 0, %8 ], [ %18, %13 ]
%20 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%21 = load i64, i64* %20, align 8
%22 = icmp sle i64 %21, %1
%23 = icmp slt i64 %1, 0
%or.cond54 = or i1 %23, %22
br i1 %or.cond54, label %30, label %24
; <label>:24: ; preds = %19
%.sroa.0106.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0106.0.copyload = load i8*, i8** %.sroa.0106.0..sroa_idx, align 8
%25 = mul nsw i64 %5, %1
%26 = add nsw i64 %25, %add
%27 = getelementptr inbounds i8, i8* %.sroa.0106.0.copyload, i64 %26
%28 = load i8, i8* %27, align 1
%29 = zext i8 %28 to i64
%phitmp114 = mul nsw i64 %29, -2
br label %30
; <label>:30: ; preds = %19, %24
%.0.ph = phi i64 [ 0, %19 ], [ %phitmp114, %24 ]
%add5118 = sub i64 %.0.ph, %.044.ph
%add7119 = add i64 %1, 1
%31 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%32 = load i64, i64* %31, align 8
%33 = icmp sge i64 %add7119, %32
%34 = icmp slt i64 %add7119, 0
%or.cond56 = or i1 %34, %33
br i1 %or.cond56, label %image_source.exit42, label %35
; <label>:35: ; preds = %30
%.sroa.098.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.098.0.copyload = load i8*, i8** %.sroa.098.0..sroa_idx, align 8
%36 = mul nsw i64 %5, %add7119
%37 = add nsw i64 %36, %add
%38 = getelementptr inbounds i8, i8* %.sroa.098.0.copyload, i64 %37
%39 = load i8, i8* %38, align 1
%40 = zext i8 %39 to i64
br label %image_source.exit42
image_source.exit42: ; preds = %image_source.exit43.thread124, %30, %35
%add7123 = phi i64 [ %add7119, %35 ], [ %add7119, %30 ], [ %add7126, %image_source.exit43.thread124 ]
%add5121 = phi i64 [ %add5118, %35 ], [ %add5118, %30 ], [ 0, %image_source.exit43.thread124 ]
%.049 = phi i64 [ %40, %35 ], [ 0, %30 ], [ 0, %image_source.exit43.thread124 ]
%add10 = sub i64 %add5121, %.049
%add22 = add i64 %0, 1
%41 = icmp sge i64 %add22, %5
%42 = icmp slt i64 %add22, 0
%or.cond63 = or i1 %42, %41
br i1 %or.cond63, label %image_source.exit36, label %43
; <label>:43: ; preds = %image_source.exit42
%44 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%45 = load i64, i64* %44, align 8
%46 = icmp sge i64 %add1, %45
%47 = icmp slt i64 %add1, 0
%or.cond64 = or i1 %47, %46
br i1 %or.cond64, label %54, label %48
; <label>:48: ; preds = %43
%.sroa.090.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.090.0.copyload = load i8*, i8** %.sroa.090.0..sroa_idx, align 8
%49 = mul nsw i64 %5, %add1
%50 = add nsw i64 %49, %add22
%51 = getelementptr inbounds i8, i8* %.sroa.090.0.copyload, i64 %50
%52 = load i8, i8* %51, align 1
%53 = zext i8 %52 to i64
br label %54
; <label>:54: ; preds = %43, %48
%.047.ph = phi i64 [ 0, %43 ], [ %53, %48 ]
%add26127 = add i64 %add10, %.047.ph
%55 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%56 = load i64, i64* %55, align 8
%57 = icmp sle i64 %56, %1
%58 = icmp slt i64 %1, 0
%or.cond66 = or i1 %58, %57
br i1 %or.cond66, label %65, label %59
; <label>:59: ; preds = %54
%.sroa.082.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.082.0.copyload = load i8*, i8** %.sroa.082.0..sroa_idx, align 8
%60 = mul nsw i64 %5, %1
%61 = add nsw i64 %60, %add22
%62 = getelementptr inbounds i8, i8* %.sroa.082.0.copyload, i64 %61
%63 = load i8, i8* %62, align 1
%64 = zext i8 %63 to i64
%phitmp = shl nuw nsw i64 %64, 1
br label %65
; <label>:65: ; preds = %54, %59
%.046.ph = phi i64 [ 0, %54 ], [ %phitmp, %59 ]
%add30132 = add i64 %add26127, %.046.ph
%66 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%67 = load i64, i64* %66, align 8
%68 = icmp sge i64 %add7123, %67
%69 = icmp slt i64 %add7123, 0
%or.cond68 = or i1 %69, %68
br i1 %or.cond68, label %image_source.exit36, label %70
; <label>:70: ; preds = %65
%.sroa.074.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.074.0.copyload = load i8*, i8** %.sroa.074.0..sroa_idx, align 8
%71 = mul nsw i64 %5, %add7123
%72 = add nsw i64 %71, %add22
%73 = getelementptr inbounds i8, i8* %.sroa.074.0.copyload, i64 %72
%74 = load i8, i8* %73, align 1
%75 = zext i8 %74 to i64
br label %image_source.exit36
image_source.exit36: ; preds = %image_source.exit42, %65, %70
%add30134 = phi i64 [ %add30132, %70 ], [ %add30132, %65 ], [ %add10, %image_source.exit42 ]
%.045 = phi i64 [ %75, %70 ], [ 0, %65 ], [ 0, %image_source.exit42 ]
%add35 = add i64 %add30134, %.045
ret i64 %add35
}
; Function Attrs: alwaysinline nounwind
define i64 @image_source.1(i64, i64, %struct.image* nocapture readonly, i64) local_unnamed_addr #4 {
entry:
%4 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 1
%5 = load i64, i64* %4, align 8
%6 = icmp sle i64 %5, %0
%7 = icmp slt i64 %0, 0
%or.cond = or i1 %7, %6
br i1 %or.cond, label %core_input_at.exit, label %8
; <label>:8: ; preds = %entry
%9 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%10 = load i64, i64* %9, align 8
%11 = icmp sle i64 %10, %1
%12 = icmp slt i64 %1, 0
%or.cond1 = or i1 %12, %11
br i1 %or.cond1, label %core_input_at.exit, label %13
; <label>:13: ; preds = %8
%.sroa.0.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0.0.copyload = load i8*, i8** %.sroa.0.0..sroa_idx, align 8
%14 = mul nsw i64 %5, %1
%15 = add nsw i64 %14, %0
%16 = getelementptr inbounds i8, i8* %.sroa.0.0.copyload, i64 %15
%17 = load i8, i8* %16, align 1
%18 = zext i8 %17 to i64
br label %core_input_at.exit
core_input_at.exit: ; preds = %8, %entry, %13
%.0 = phi i64 [ %18, %13 ], [ 0, %entry ], [ 0, %8 ]
ret i64 %.0
}
; Function Attrs: alwaysinline nounwind
define i64 @compiled_fn.2(i64, i64, %struct.image* readonly, i64) local_unnamed_addr #4 {
entry:
%add = add i64 %0, -1
%add1 = add i64 %1, -1
%4 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 1
%5 = load i64, i64* %4, align 8
%6 = icmp sge i64 %add, %5
%7 = icmp slt i64 %add, 0
%or.cond = or i1 %7, %6
br i1 %or.cond, label %image_source.1.exit.thread120, label %8
image_source.1.exit.thread120: ; preds = %entry
%add7121 = add i64 %1, 1
br label %image_source.1.exit42
; <label>:8: ; preds = %entry
%9 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%10 = load i64, i64* %9, align 8
%11 = icmp sge i64 %add1, %10
%12 = icmp slt i64 %add1, 0
%or.cond52 = or i1 %12, %11
br i1 %or.cond52, label %19, label %13
; <label>:13: ; preds = %8
%.sroa.0.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0.0.copyload = load i8*, i8** %.sroa.0.0..sroa_idx, align 8
%14 = mul nsw i64 %5, %add1
%15 = add nsw i64 %14, %add
%16 = getelementptr inbounds i8, i8* %.sroa.0.0.copyload, i64 %15
%17 = load i8, i8* %16, align 1
%18 = zext i8 %17 to i64
br label %19
; <label>:19: ; preds = %8, %13
%.044.ph = phi i64 [ 0, %8 ], [ %18, %13 ]
%add7115 = add i64 %1, 1
%20 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%21 = load i64, i64* %20, align 8
%22 = icmp sge i64 %add7115, %21
%23 = icmp slt i64 %add7115, 0
%or.cond56 = or i1 %23, %22
br i1 %or.cond56, label %image_source.1.exit42, label %24
; <label>:24: ; preds = %19
%.sroa.0106.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0106.0.copyload = load i8*, i8** %.sroa.0106.0..sroa_idx, align 8
%25 = mul nsw i64 %5, %add7115
%26 = add nsw i64 %25, %add
%27 = getelementptr inbounds i8, i8* %.sroa.0106.0.copyload, i64 %26
%28 = load i8, i8* %27, align 1
%29 = zext i8 %28 to i64
br label %image_source.1.exit42
image_source.1.exit42: ; preds = %image_source.1.exit.thread120, %19, %24
%add7119 = phi i64 [ %add7115, %24 ], [ %add7115, %19 ], [ %add7121, %image_source.1.exit.thread120 ]
%.044117 = phi i64 [ %.044.ph, %24 ], [ %.044.ph, %19 ], [ 0, %image_source.1.exit.thread120 ]
%.049 = phi i64 [ %29, %24 ], [ 0, %19 ], [ 0, %image_source.1.exit.thread120 ]
%add10 = sub nsw i64 %.049, %.044117
%30 = icmp sle i64 %5, %0
%31 = icmp slt i64 %0, 0
%or.cond57 = or i1 %31, %30
br i1 %or.cond57, label %image_source.1.exit39, label %32
; <label>:32: ; preds = %image_source.1.exit42
%33 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%34 = load i64, i64* %33, align 8
%35 = icmp sge i64 %add1, %34
%36 = icmp slt i64 %add1, 0
%or.cond58 = or i1 %36, %35
br i1 %or.cond58, label %43, label %37
; <label>:37: ; preds = %32
%.sroa.098.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.098.0.copyload = load i8*, i8** %.sroa.098.0..sroa_idx, align 8
%38 = mul nsw i64 %5, %add1
%39 = add nsw i64 %38, %0
%40 = getelementptr inbounds i8, i8* %.sroa.098.0.copyload, i64 %39
%41 = load i8, i8* %40, align 1
%42 = zext i8 %41 to i64
%phitmp114 = mul nsw i64 %42, -2
br label %43
; <label>:43: ; preds = %32, %37
%.051.ph = phi i64 [ 0, %32 ], [ %phitmp114, %37 ]
%add17122 = add i64 %add10, %.051.ph
%44 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%45 = load i64, i64* %44, align 8
%46 = icmp sge i64 %add7119, %45
%47 = icmp slt i64 %add7119, 0
%or.cond62 = or i1 %47, %46
br i1 %or.cond62, label %image_source.1.exit39, label %48
; <label>:48: ; preds = %43
%.sroa.090.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.090.0.copyload = load i8*, i8** %.sroa.090.0..sroa_idx, align 8
%49 = mul nsw i64 %5, %add7119
%50 = add nsw i64 %49, %0
%51 = getelementptr inbounds i8, i8* %.sroa.090.0.copyload, i64 %50
%52 = load i8, i8* %51, align 1
%53 = zext i8 %52 to i64
%phitmp = shl nuw nsw i64 %53, 1
br label %image_source.1.exit39
image_source.1.exit39: ; preds = %image_source.1.exit42, %43, %48
%add17124 = phi i64 [ %add17122, %48 ], [ %add17122, %43 ], [ %add10, %image_source.1.exit42 ]
%.048 = phi i64 [ %phitmp, %48 ], [ 0, %43 ], [ 0, %image_source.1.exit42 ]
%add21 = add i64 %add17124, %.048
%add22 = add i64 %0, 1
%54 = icmp sge i64 %add22, %5
%55 = icmp slt i64 %add22, 0
%or.cond63 = or i1 %55, %54
br i1 %or.cond63, label %image_source.1.exit36, label %56
; <label>:56: ; preds = %image_source.1.exit39
%57 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%58 = load i64, i64* %57, align 8
%59 = icmp sge i64 %add1, %58
%60 = icmp slt i64 %add1, 0
%or.cond64 = or i1 %60, %59
br i1 %or.cond64, label %67, label %61
; <label>:61: ; preds = %56
%.sroa.082.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.082.0.copyload = load i8*, i8** %.sroa.082.0..sroa_idx, align 8
%62 = mul nsw i64 %5, %add1
%63 = add nsw i64 %62, %add22
%64 = getelementptr inbounds i8, i8* %.sroa.082.0.copyload, i64 %63
%65 = load i8, i8* %64, align 1
%66 = zext i8 %65 to i64
br label %67
; <label>:67: ; preds = %56, %61
%.047.ph = phi i64 [ 0, %56 ], [ %66, %61 ]
%add26127 = sub i64 %add21, %.047.ph
%68 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%69 = load i64, i64* %68, align 8
%70 = icmp sge i64 %add7119, %69
%71 = icmp slt i64 %add7119, 0
%or.cond68 = or i1 %71, %70
br i1 %or.cond68, label %image_source.1.exit36, label %72
; <label>:72: ; preds = %67
%.sroa.074.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.074.0.copyload = load i8*, i8** %.sroa.074.0..sroa_idx, align 8
%73 = mul nsw i64 %5, %add7119
%74 = add nsw i64 %73, %add22
%75 = getelementptr inbounds i8, i8* %.sroa.074.0.copyload, i64 %74
%76 = load i8, i8* %75, align 1
%77 = zext i8 %76 to i64
br label %image_source.1.exit36
image_source.1.exit36: ; preds = %image_source.1.exit39, %67, %72
%add26129 = phi i64 [ %add26127, %72 ], [ %add26127, %67 ], [ %add21, %image_source.1.exit39 ]
%.045 = phi i64 [ %77, %72 ], [ 0, %67 ], [ 0, %image_source.1.exit39 ]
%add35 = add i64 %add26129, %.045
ret i64 %add35
}
; Function Attrs: alwaysinline nounwind
define i64 @compiled_fn.3(i64, i64, %struct.image* readonly, i64) local_unnamed_addr #4 {
entry:
%add.i = add i64 %0, -1
%add1.i = add i64 %1, -1
%4 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 1
%5 = load i64, i64* %4, align 8
%6 = icmp sge i64 %add.i, %5
%7 = icmp slt i64 %add.i, 0
%or.cond = or i1 %7, %6
br i1 %or.cond, label %image_source.exit43.i.thread395, label %8
image_source.exit43.i.thread395: ; preds = %entry
%add7.i396 = add i64 %1, 1
br label %image_source.exit42.i
; <label>:8: ; preds = %entry
%9 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%10 = load i64, i64* %9, align 8
%11 = icmp sge i64 %add1.i, %10
%12 = icmp slt i64 %add1.i, 0
%or.cond117 = or i1 %12, %11
br i1 %or.cond117, label %19, label %13
; <label>:13: ; preds = %8
%.sroa.0.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0.0.copyload = load i8*, i8** %.sroa.0.0..sroa_idx, align 8
%14 = mul nsw i64 %5, %add1.i
%15 = add nsw i64 %14, %add.i
%16 = getelementptr inbounds i8, i8* %.sroa.0.0.copyload, i64 %15
%17 = load i8, i8* %16, align 1
%18 = zext i8 %17 to i64
br label %19
; <label>:19: ; preds = %8, %13
%.082.ph = phi i64 [ 0, %8 ], [ %18, %13 ]
%20 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%21 = load i64, i64* %20, align 8
%22 = icmp sle i64 %21, %1
%23 = icmp slt i64 %1, 0
%or.cond119 = or i1 %23, %22
br i1 %or.cond119, label %30, label %24
; <label>:24: ; preds = %19
%.sroa.0225.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0225.0.copyload = load i8*, i8** %.sroa.0225.0..sroa_idx, align 8
%25 = mul nsw i64 %5, %1
%26 = add nsw i64 %25, %add.i
%27 = getelementptr inbounds i8, i8* %.sroa.0225.0.copyload, i64 %26
%28 = load i8, i8* %27, align 1
%29 = zext i8 %28 to i64
br label %30
; <label>:30: ; preds = %19, %24
%.091.ph = phi i64 [ 0, %19 ], [ %29, %24 ]
%add7.i388 = add i64 %1, 1
%31 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%32 = load i64, i64* %31, align 8
%33 = icmp sge i64 %add7.i388, %32
%34 = icmp slt i64 %add7.i388, 0
%or.cond121 = or i1 %34, %33
br i1 %or.cond121, label %image_source.exit42.i, label %35
; <label>:35: ; preds = %30
%.sroa.0217.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0217.0.copyload = load i8*, i8** %.sroa.0217.0..sroa_idx, align 8
%36 = mul nsw i64 %5, %add7.i388
%37 = add nsw i64 %36, %add.i
%38 = getelementptr inbounds i8, i8* %.sroa.0217.0.copyload, i64 %37
%39 = load i8, i8* %38, align 1
%40 = zext i8 %39 to i64
br label %image_source.exit42.i
image_source.exit42.i: ; preds = %image_source.exit43.i.thread395, %30, %35
%add7.i394 = phi i64 [ %add7.i388, %35 ], [ %add7.i388, %30 ], [ %add7.i396, %image_source.exit43.i.thread395 ]
%.091392 = phi i64 [ %.091.ph, %35 ], [ %.091.ph, %30 ], [ 0, %image_source.exit43.i.thread395 ]
%.082386390 = phi i64 [ %.082.ph, %35 ], [ %.082.ph, %30 ], [ 0, %image_source.exit43.i.thread395 ]
%.090 = phi i64 [ %40, %35 ], [ 0, %30 ], [ 0, %image_source.exit43.i.thread395 ]
%41 = icmp slt i64 %0, 0
%add22.i = add i64 %0, 1
%42 = icmp sge i64 %add22.i, %5
%43 = icmp slt i64 %add22.i, 0
%or.cond128 = or i1 %43, %42
br i1 %or.cond128, label %compiled_fn.exit, label %44
; <label>:44: ; preds = %image_source.exit42.i
%45 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%46 = load i64, i64* %45, align 8
%47 = icmp sge i64 %add1.i, %46
%48 = icmp slt i64 %add1.i, 0
%or.cond129 = or i1 %48, %47
br i1 %or.cond129, label %55, label %49
; <label>:49: ; preds = %44
%.sroa.0209.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0209.0.copyload = load i8*, i8** %.sroa.0209.0..sroa_idx, align 8
%50 = mul nsw i64 %5, %add1.i
%51 = add nsw i64 %50, %add22.i
%52 = getelementptr inbounds i8, i8* %.sroa.0209.0.copyload, i64 %51
%53 = load i8, i8* %52, align 1
%54 = zext i8 %53 to i64
br label %55
; <label>:55: ; preds = %44, %49
%.085.ph = phi i64 [ 0, %44 ], [ %54, %49 ]
%56 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%57 = load i64, i64* %56, align 8
%58 = icmp sle i64 %57, %1
%59 = icmp slt i64 %1, 0
%or.cond131 = or i1 %59, %58
br i1 %or.cond131, label %66, label %60
; <label>:60: ; preds = %55
%.sroa.0201.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0201.0.copyload = load i8*, i8** %.sroa.0201.0..sroa_idx, align 8
%61 = mul nsw i64 %5, %1
%62 = add nsw i64 %61, %add22.i
%63 = getelementptr inbounds i8, i8* %.sroa.0201.0.copyload, i64 %62
%64 = load i8, i8* %63, align 1
%65 = zext i8 %64 to i64
br label %66
; <label>:66: ; preds = %55, %60
%.084.ph = phi i64 [ 0, %55 ], [ %65, %60 ]
%67 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%68 = load i64, i64* %67, align 8
%69 = icmp sge i64 %add7.i394, %68
%70 = icmp slt i64 %add7.i394, 0
%or.cond133 = or i1 %70, %69
br i1 %or.cond133, label %compiled_fn.exit, label %71
; <label>:71: ; preds = %66
%.sroa.0193.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0193.0.copyload = load i8*, i8** %.sroa.0193.0..sroa_idx, align 8
%72 = mul nsw i64 %5, %add7.i394
%73 = add nsw i64 %72, %add22.i
%74 = getelementptr inbounds i8, i8* %.sroa.0193.0.copyload, i64 %73
%75 = load i8, i8* %74, align 1
%76 = zext i8 %75 to i64
br label %compiled_fn.exit
compiled_fn.exit: ; preds = %image_source.exit42.i, %66, %71
%.084403 = phi i64 [ %.084.ph, %71 ], [ %.084.ph, %66 ], [ 0, %image_source.exit42.i ]
%.085398401 = phi i64 [ %.085.ph, %71 ], [ %.085.ph, %66 ], [ 0, %image_source.exit42.i ]
%.083 = phi i64 [ %76, %71 ], [ 0, %66 ], [ 0, %image_source.exit42.i ]
%tmp = sub nsw i64 %.084403, %.091392
%tmp380 = shl nsw i64 %tmp, 1
%sum = add nuw nsw i64 %.090, %.082386390
%add26.i = sub nsw i64 %.085398401, %sum
%add30.i = add nsw i64 %add26.i, %.083
%add35.i = add nsw i64 %add30.i, %tmp380
br i1 %or.cond, label %image_source.exit42.i19, label %77
; <label>:77: ; preds = %compiled_fn.exit
%78 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%79 = load i64, i64* %78, align 8
%80 = icmp sge i64 %add1.i, %79
%81 = icmp slt i64 %add1.i, 0
%or.cond135 = or i1 %81, %80
br i1 %or.cond135, label %88, label %82
; <label>:82: ; preds = %77
%.sroa.0233.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0233.0.copyload = load i8*, i8** %.sroa.0233.0..sroa_idx, align 8
%83 = mul nsw i64 %5, %add1.i
%84 = add nsw i64 %83, %add.i
%85 = getelementptr inbounds i8, i8* %.sroa.0233.0.copyload, i64 %84
%86 = load i8, i8* %85, align 1
%87 = zext i8 %86 to i64
br label %88
; <label>:88: ; preds = %77, %82
%.092.ph = phi i64 [ 0, %77 ], [ %87, %82 ]
%89 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%90 = load i64, i64* %89, align 8
%91 = icmp sle i64 %90, %1
%92 = icmp slt i64 %1, 0
%or.cond137 = or i1 %92, %91
br i1 %or.cond137, label %99, label %93
; <label>:93: ; preds = %88
%.sroa.0273.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0273.0.copyload = load i8*, i8** %.sroa.0273.0..sroa_idx, align 8
%94 = mul nsw i64 %5, %1
%95 = add nsw i64 %94, %add.i
%96 = getelementptr inbounds i8, i8* %.sroa.0273.0.copyload, i64 %95
%97 = load i8, i8* %96, align 1
%98 = zext i8 %97 to i64
br label %99
; <label>:99: ; preds = %88, %93
%.0102.ph = phi i64 [ 0, %88 ], [ %98, %93 ]
%100 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%101 = load i64, i64* %100, align 8
%102 = icmp sge i64 %add7.i394, %101
%103 = icmp slt i64 %add7.i394, 0
%or.cond139 = or i1 %103, %102
br i1 %or.cond139, label %image_source.exit42.i19, label %104
; <label>:104: ; preds = %99
%.sroa.0265.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0265.0.copyload = load i8*, i8** %.sroa.0265.0..sroa_idx, align 8
%105 = mul nsw i64 %5, %add7.i394
%106 = add nsw i64 %105, %add.i
%107 = getelementptr inbounds i8, i8* %.sroa.0265.0.copyload, i64 %106
%108 = load i8, i8* %107, align 1
%109 = zext i8 %108 to i64
br label %image_source.exit42.i19
image_source.exit42.i19: ; preds = %compiled_fn.exit, %99, %104
%.0102411 = phi i64 [ %.0102.ph, %104 ], [ %.0102.ph, %99 ], [ 0, %compiled_fn.exit ]
%.092406409 = phi i64 [ %.092.ph, %104 ], [ %.092.ph, %99 ], [ 0, %compiled_fn.exit ]
%.0101 = phi i64 [ %109, %104 ], [ 0, %99 ], [ 0, %compiled_fn.exit ]
br i1 %or.cond128, label %compiled_fn.exit35, label %110
; <label>:110: ; preds = %image_source.exit42.i19
%111 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%112 = load i64, i64* %111, align 8
%113 = icmp sge i64 %add1.i, %112
%114 = icmp slt i64 %add1.i, 0
%or.cond147 = or i1 %114, %113
br i1 %or.cond147, label %121, label %115
; <label>:115: ; preds = %110
%.sroa.0257.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0257.0.copyload = load i8*, i8** %.sroa.0257.0..sroa_idx, align 8
%116 = mul nsw i64 %5, %add1.i
%117 = add nsw i64 %116, %add22.i
%118 = getelementptr inbounds i8, i8* %.sroa.0257.0.copyload, i64 %117
%119 = load i8, i8* %118, align 1
%120 = zext i8 %119 to i64
br label %121
; <label>:121: ; preds = %110, %115
%.096.ph = phi i64 [ 0, %110 ], [ %120, %115 ]
%122 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%123 = load i64, i64* %122, align 8
%124 = icmp sle i64 %123, %1
%125 = icmp slt i64 %1, 0
%or.cond149 = or i1 %125, %124
br i1 %or.cond149, label %132, label %126
; <label>:126: ; preds = %121
%.sroa.0249.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0249.0.copyload = load i8*, i8** %.sroa.0249.0..sroa_idx, align 8
%127 = mul nsw i64 %5, %1
%128 = add nsw i64 %127, %add22.i
%129 = getelementptr inbounds i8, i8* %.sroa.0249.0.copyload, i64 %128
%130 = load i8, i8* %129, align 1
%131 = zext i8 %130 to i64
br label %132
; <label>:132: ; preds = %121, %126
%.095.ph = phi i64 [ 0, %121 ], [ %131, %126 ]
%133 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%134 = load i64, i64* %133, align 8
%135 = icmp sge i64 %add7.i394, %134
%136 = icmp slt i64 %add7.i394, 0
%or.cond151 = or i1 %136, %135
br i1 %or.cond151, label %compiled_fn.exit35, label %137
; <label>:137: ; preds = %132
%.sroa.0241.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0241.0.copyload = load i8*, i8** %.sroa.0241.0..sroa_idx, align 8
%138 = mul nsw i64 %5, %add7.i394
%139 = add nsw i64 %138, %add22.i
%140 = getelementptr inbounds i8, i8* %.sroa.0241.0.copyload, i64 %139
%141 = load i8, i8* %140, align 1
%142 = zext i8 %141 to i64
br label %compiled_fn.exit35
compiled_fn.exit35: ; preds = %image_source.exit42.i19, %132, %137
%.095419 = phi i64 [ %.095.ph, %137 ], [ %.095.ph, %132 ], [ 0, %image_source.exit42.i19 ]
%.096414417 = phi i64 [ %.096.ph, %137 ], [ %.096.ph, %132 ], [ 0, %image_source.exit42.i19 ]
%.094 = phi i64 [ %142, %137 ], [ 0, %132 ], [ 0, %image_source.exit42.i19 ]
%tmp382 = sub nsw i64 %.095419, %.0102411
%tmp383 = shl nsw i64 %tmp382, 1
%sum384 = add nuw nsw i64 %.0101, %.092406409
%add26.i26 = sub nsw i64 %.096414417, %sum384
%add30.i30 = add nsw i64 %add26.i26, %.094
%add35.i34 = add nsw i64 %add30.i30, %tmp383
%mul = mul nsw i64 %add35.i34, %add35.i
br i1 %or.cond, label %image_source.1.exit42.i62, label %143
; <label>:143: ; preds = %compiled_fn.exit35
%144 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%145 = load i64, i64* %144, align 8
%146 = icmp sge i64 %add1.i, %145
%147 = icmp slt i64 %add1.i, 0
%or.cond153 = or i1 %147, %146
br i1 %or.cond153, label %154, label %148
; <label>:148: ; preds = %143
%.sroa.0329.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0329.0.copyload = load i8*, i8** %.sroa.0329.0..sroa_idx, align 8
%149 = mul nsw i64 %5, %add1.i
%150 = add nsw i64 %149, %add.i
%151 = getelementptr inbounds i8, i8* %.sroa.0329.0.copyload, i64 %150
%152 = load i8, i8* %151, align 1
%153 = zext i8 %152 to i64
br label %154
; <label>:154: ; preds = %143, %148
%.0114.ph = phi i64 [ 0, %143 ], [ %153, %148 ]
%155 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%156 = load i64, i64* %155, align 8
%157 = icmp sge i64 %add7.i394, %156
%158 = icmp slt i64 %add7.i394, 0
%or.cond157 = or i1 %158, %157
br i1 %or.cond157, label %image_source.1.exit42.i62, label %159
; <label>:159: ; preds = %154
%.sroa.0369.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0369.0.copyload = load i8*, i8** %.sroa.0369.0..sroa_idx, align 8
%160 = mul nsw i64 %5, %add7.i394
%161 = add nsw i64 %160, %add.i
%162 = getelementptr inbounds i8, i8* %.sroa.0369.0.copyload, i64 %161
%163 = load i8, i8* %162, align 1
%164 = zext i8 %163 to i64
br label %image_source.1.exit42.i62
image_source.1.exit42.i62: ; preds = %compiled_fn.exit35, %154, %159
%.0114422 = phi i64 [ %.0114.ph, %159 ], [ %.0114.ph, %154 ], [ 0, %compiled_fn.exit35 ]
%.087 = phi i64 [ %164, %159 ], [ 0, %154 ], [ 0, %compiled_fn.exit35 ]
%add10.i60 = sub nsw i64 %.087, %.0114422
%165 = icmp sle i64 %5, %0
%or.cond158 = or i1 %41, %165
br i1 %or.cond158, label %image_source.1.exit39.i72, label %166
; <label>:166: ; preds = %image_source.1.exit42.i62
%167 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%168 = load i64, i64* %167, align 8
%169 = icmp sge i64 %add1.i, %168
%170 = icmp slt i64 %add1.i, 0
%or.cond159 = or i1 %170, %169
br i1 %or.cond159, label %177, label %171
; <label>:171: ; preds = %166
%.sroa.0361.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0361.0.copyload = load i8*, i8** %.sroa.0361.0..sroa_idx, align 8
%172 = mul nsw i64 %5, %add1.i
%173 = add nsw i64 %172, %0
%174 = getelementptr inbounds i8, i8* %.sroa.0361.0.copyload, i64 %173
%175 = load i8, i8* %174, align 1
%176 = zext i8 %175 to i64
%phitmp377 = mul nsw i64 %176, -2
br label %177
; <label>:177: ; preds = %166, %171
%.093.ph = phi i64 [ 0, %166 ], [ %phitmp377, %171 ]
%add14.i64424 = add i64 %add10.i60, %.093.ph
%178 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%179 = load i64, i64* %178, align 8
%180 = icmp sge i64 %add7.i394, %179
%181 = icmp slt i64 %add7.i394, 0
%or.cond163 = or i1 %181, %180
br i1 %or.cond163, label %image_source.1.exit39.i72, label %182
; <label>:182: ; preds = %177
%.sroa.0353.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0353.0.copyload = load i8*, i8** %.sroa.0353.0..sroa_idx, align 8
%183 = mul nsw i64 %5, %add7.i394
%184 = add nsw i64 %183, %0
%185 = getelementptr inbounds i8, i8* %.sroa.0353.0.copyload, i64 %184
%186 = load i8, i8* %185, align 1
%187 = zext i8 %186 to i64
%phitmp378 = shl nuw nsw i64 %187, 1
br label %image_source.1.exit39.i72
image_source.1.exit39.i72: ; preds = %image_source.1.exit42.i62, %177, %182
%add14.i64426 = phi i64 [ %add14.i64424, %182 ], [ %add14.i64424, %177 ], [ %add10.i60, %image_source.1.exit42.i62 ]
%.0105 = phi i64 [ %phitmp378, %182 ], [ 0, %177 ], [ 0, %image_source.1.exit42.i62 ]
%add21.i69 = add i64 %add14.i64426, %.0105
br i1 %or.cond128, label %compiled_fn.2.exit81, label %188
; <label>:188: ; preds = %image_source.1.exit39.i72
%189 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%190 = load i64, i64* %189, align 8
%191 = icmp sge i64 %add1.i, %190
%192 = icmp slt i64 %add1.i, 0
%or.cond165 = or i1 %192, %191
br i1 %or.cond165, label %199, label %193
; <label>:193: ; preds = %188
%.sroa.0345.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0345.0.copyload = load i8*, i8** %.sroa.0345.0..sroa_idx, align 8
%194 = mul nsw i64 %5, %add1.i
%195 = add nsw i64 %194, %add22.i
%196 = getelementptr inbounds i8, i8* %.sroa.0345.0.copyload, i64 %195
%197 = load i8, i8* %196, align 1
%198 = zext i8 %197 to i64
br label %199
; <label>:199: ; preds = %188, %193
%.0111.ph = phi i64 [ 0, %188 ], [ %198, %193 ]
%add26.i74429 = sub i64 %add21.i69, %.0111.ph
%200 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%201 = load i64, i64* %200, align 8
%202 = icmp sge i64 %add7.i394, %201
%203 = icmp slt i64 %add7.i394, 0
%or.cond169 = or i1 %203, %202
br i1 %or.cond169, label %compiled_fn.2.exit81, label %204
; <label>:204: ; preds = %199
%.sroa.0337.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0337.0.copyload = load i8*, i8** %.sroa.0337.0..sroa_idx, align 8
%205 = mul nsw i64 %5, %add7.i394
%206 = add nsw i64 %205, %add22.i
%207 = getelementptr inbounds i8, i8* %.sroa.0337.0.copyload, i64 %206
%208 = load i8, i8* %207, align 1
%209 = zext i8 %208 to i64
br label %compiled_fn.2.exit81
compiled_fn.2.exit81: ; preds = %image_source.1.exit39.i72, %199, %204
%add26.i74431 = phi i64 [ %add26.i74429, %204 ], [ %add26.i74429, %199 ], [ %add21.i69, %image_source.1.exit39.i72 ]
%.0115 = phi i64 [ %209, %204 ], [ 0, %199 ], [ 0, %image_source.1.exit39.i72 ]
%add35.i80 = add i64 %add26.i74431, %.0115
br i1 %or.cond, label %image_source.1.exit42.i, label %210
; <label>:210: ; preds = %compiled_fn.2.exit81
%211 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%212 = load i64, i64* %211, align 8
%213 = icmp sge i64 %add1.i, %212
%214 = icmp slt i64 %add1.i, 0
%or.cond171 = or i1 %214, %213
br i1 %or.cond171, label %221, label %215
; <label>:215: ; preds = %210
%.sroa.0281.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0281.0.copyload = load i8*, i8** %.sroa.0281.0..sroa_idx, align 8
%216 = mul nsw i64 %5, %add1.i
%217 = add nsw i64 %216, %add.i
%218 = getelementptr inbounds i8, i8* %.sroa.0281.0.copyload, i64 %217
%219 = load i8, i8* %218, align 1
%220 = zext i8 %219 to i64
br label %221
; <label>:221: ; preds = %210, %215
%.0103.ph = phi i64 [ 0, %210 ], [ %220, %215 ]
%222 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%223 = load i64, i64* %222, align 8
%224 = icmp sge i64 %add7.i394, %223
%225 = icmp slt i64 %add7.i394, 0
%or.cond175 = or i1 %225, %224
br i1 %or.cond175, label %image_source.1.exit42.i, label %226
; <label>:226: ; preds = %221
%.sroa.0321.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0321.0.copyload = load i8*, i8** %.sroa.0321.0..sroa_idx, align 8
%227 = mul nsw i64 %5, %add7.i394
%228 = add nsw i64 %227, %add.i
%229 = getelementptr inbounds i8, i8* %.sroa.0321.0.copyload, i64 %228
%230 = load i8, i8* %229, align 1
%231 = zext i8 %230 to i64
br label %image_source.1.exit42.i
image_source.1.exit42.i: ; preds = %compiled_fn.2.exit81, %221, %226
%.0103435 = phi i64 [ %.0103.ph, %226 ], [ %.0103.ph, %221 ], [ 0, %compiled_fn.2.exit81 ]
%.0112 = phi i64 [ %231, %226 ], [ 0, %221 ], [ 0, %compiled_fn.2.exit81 ]
%add10.i42 = sub nsw i64 %.0112, %.0103435
br i1 %or.cond158, label %image_source.1.exit39.i, label %232
; <label>:232: ; preds = %image_source.1.exit42.i
%233 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%234 = load i64, i64* %233, align 8
%235 = icmp sge i64 %add1.i, %234
%236 = icmp slt i64 %add1.i, 0
%or.cond177 = or i1 %236, %235
br i1 %or.cond177, label %243, label %237
; <label>:237: ; preds = %232
%.sroa.0313.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0313.0.copyload = load i8*, i8** %.sroa.0313.0..sroa_idx, align 8
%238 = mul nsw i64 %5, %add1.i
%239 = add nsw i64 %238, %0
%240 = getelementptr inbounds i8, i8* %.sroa.0313.0.copyload, i64 %239
%241 = load i8, i8* %240, align 1
%242 = zext i8 %241 to i64
%phitmp379 = mul nsw i64 %242, -2
br label %243
; <label>:243: ; preds = %232, %237
%.0110.ph = phi i64 [ 0, %232 ], [ %phitmp379, %237 ]
%add14.i437 = add i64 %add10.i42, %.0110.ph
%244 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%245 = load i64, i64* %244, align 8
%246 = icmp sge i64 %add7.i394, %245
%247 = icmp slt i64 %add7.i394, 0
%or.cond181 = or i1 %247, %246
br i1 %or.cond181, label %image_source.1.exit39.i, label %248
; <label>:248: ; preds = %243
%.sroa.0305.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0305.0.copyload = load i8*, i8** %.sroa.0305.0..sroa_idx, align 8
%249 = mul nsw i64 %5, %add7.i394
%250 = add nsw i64 %249, %0
%251 = getelementptr inbounds i8, i8* %.sroa.0305.0.copyload, i64 %250
%252 = load i8, i8* %251, align 1
%253 = zext i8 %252 to i64
%phitmp = shl nuw nsw i64 %253, 1
br label %image_source.1.exit39.i
image_source.1.exit39.i: ; preds = %image_source.1.exit42.i, %243, %248
%add14.i439 = phi i64 [ %add14.i437, %248 ], [ %add14.i437, %243 ], [ %add10.i42, %image_source.1.exit42.i ]
%.0108 = phi i64 [ %phitmp, %248 ], [ 0, %243 ], [ 0, %image_source.1.exit42.i ]
%add21.i = add i64 %add14.i439, %.0108
br i1 %or.cond128, label %compiled_fn.2.exit, label %254
; <label>:254: ; preds = %image_source.1.exit39.i
%255 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%256 = load i64, i64* %255, align 8
%257 = icmp sge i64 %add1.i, %256
%258 = icmp slt i64 %add1.i, 0
%or.cond183 = or i1 %258, %257
br i1 %or.cond183, label %265, label %259
; <label>:259: ; preds = %254
%.sroa.0297.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0297.0.copyload = load i8*, i8** %.sroa.0297.0..sroa_idx, align 8
%260 = mul nsw i64 %5, %add1.i
%261 = add nsw i64 %260, %add22.i
%262 = getelementptr inbounds i8, i8* %.sroa.0297.0.copyload, i64 %261
%263 = load i8, i8* %262, align 1
%264 = zext i8 %263 to i64
br label %265
; <label>:265: ; preds = %254, %259
%.0107.ph = phi i64 [ 0, %254 ], [ %264, %259 ]
%add26.i47442 = sub i64 %add21.i, %.0107.ph
%266 = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 2
%267 = load i64, i64* %266, align 8
%268 = icmp sge i64 %add7.i394, %267
%269 = icmp slt i64 %add7.i394, 0
%or.cond187 = or i1 %269, %268
br i1 %or.cond187, label %compiled_fn.2.exit, label %270
; <label>:270: ; preds = %265
%.sroa.0289.0..sroa_idx = getelementptr inbounds %struct.image, %struct.image* %2, i64 0, i32 0
%.sroa.0289.0.copyload = load i8*, i8** %.sroa.0289.0..sroa_idx, align 8
%271 = mul nsw i64 %5, %add7.i394
%272 = add nsw i64 %271, %add22.i
%273 = getelementptr inbounds i8, i8* %.sroa.0289.0.copyload, i64 %272
%274 = load i8, i8* %273, align 1
%275 = zext i8 %274 to i64
br label %compiled_fn.2.exit
compiled_fn.2.exit: ; preds = %image_source.1.exit39.i, %265, %270
%add26.i47444 = phi i64 [ %add26.i47442, %270 ], [ %add26.i47442, %265 ], [ %add21.i, %image_source.1.exit39.i ]
%.0104 = phi i64 [ %275, %270 ], [ 0, %265 ], [ 0, %image_source.1.exit39.i ]
%add35.i51 = add i64 %add26.i47444, %.0104
%mul4 = mul i64 %add35.i51, %add35.i80
%add = add i64 %mul4, %mul
%276 = sitofp i64 %add to double
%277 = tail call double @sqrt(double %276) #5
%278 = fptosi double %277 to i64
ret i64 %278
}
attributes #0 = { alwaysinline norecurse nounwind readnone uwtable "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #1 = { alwaysinline nounwind uwtable "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #2 = { alwaysinline nounwind "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #3 = { alwaysinline inlinehint nounwind uwtable "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #4 = { alwaysinline nounwind }
attributes #5 = { nounwind }
!llvm.ident = !{!0}
!0 = !{!"clang version 3.9.0 (https://github.com/llvm-mirror/clang.git 4d2d3547c6bcc274ef94482d7899f57d0a8e0967) (https://github.com/llvm-mirror/llvm.git 2605c1b13c0b3b5dafd6af8dd38c29a441e7be74)"}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment