; ModuleID = 'f'
source_filename = "<string>"
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-grtev4-linux-gnu"
@.const.pickledata.92013167184064 = internal constant [137 x i8] c"\80\04\95~\00\00\00\00\00\00\00\8C\08builtins\94\8C\0AValueError\94\93\94\8C[array is too big; `arr.size * arr.dtype.itemsize` is larger than the maximum possible size.\94\85\94N\87\94."
@.const.pickledata.92013167184064.sha1 = internal constant [20 x i8] c"X\E1N\CC\B5\07\B1\E0 i\81t\02#\E6\85\CB\8C<W"
@.const.picklebuf.92013167184064 = internal constant { ptr, i32, ptr, ptr, i32 } { ptr @.const.pickledata.92013167184064, i32 137, ptr @.const.pickledata.92013167184064.sha1, ptr null, i32 0 }
@.const.f = internal constant [2 x i8] c"f\00"
@_ZN08NumbaEnv8__main__1fB2v1B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dE5ArrayIdLi2E1C7mutable7alignedE = common local_unnamed_addr global ptr null
@".const.missing Environment: _ZN08NumbaEnv8__main__1fB2v1B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dE5ArrayIdLi2E1C7mutable7alignedE" = internal constant [123 x i8] c"missing Environment: _ZN08NumbaEnv8__main__1fB2v1B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dE5ArrayIdLi2E1C7mutable7alignedE\00"
@PyExc_TypeError = external global i8
@".const.can't unbox array from PyObject into native value. The object maybe of a different type" = internal constant [89 x i8] c"can't unbox array from PyObject into native value. The object maybe of a different type\00"
@".const.`env.consts` is NULL in `read_const`" = internal constant [37 x i8] c"`env.consts` is NULL in `read_const`\00"
@.const.pickledata.93842500064544 = internal constant [32 x i8] c"\80\04\95\15\00\00\00\00\00\00\00\8C\05numpy\94\8C\07ndarray\94\93\94."
@.const.pickledata.93842500064544.sha1 = internal constant [20 x i8] c"\DF\BC\FD\D3\9F\CB&\F4\D0\C6\80\95D\87\B8\C0\B5;\B8\A3"
@".const.Error creating Python tuple from runtime exception arguments" = internal constant [61 x i8] c"Error creating Python tuple from runtime exception arguments\00"
@PyExc_RuntimeError = external global i8
@".const.Error creating Python tuple from runtime exception arguments.1" = internal constant [61 x i8] c"Error creating Python tuple from runtime exception arguments\00"
@".const.<numba.core.cpu.CPUContext object at 0x53af7c21d190>" = internal constant [53 x i8] c"<numba.core.cpu.CPUContext object at 0x53af7c21d190>\00"
@_ZN08NumbaEnv13_3cdynamic_3e33__numba_array_expr_0x53af7c21e310B2v2B72c8tJTIeFIjxB2IKSgI4CrvQCk0Z4yRYcWsBAQ4s_2fqEpEUkESQI1_2bmEQRxHRNAA_3d_3dEd = common local_unnamed_addr global ptr null
@_ZN08NumbaEnv5numba2np7npyimpl15_broadcast_ontoB2v3B42c8tJTC_2fWQA93W1AaAIYBPIqRBFCjDSZRVAJmaQIAEx8int64_2ax8int64_2a = common local_unnamed_addr global ptr null
@_ZN08NumbaEnv5numba2np8arrayobj15_call_allocatorB2v4B42c8tJTC_2fWQA93W1AaAIYBPIqRBFCjDSZRVAJmaQIAEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj = common local_unnamed_addr global ptr null
@_ZN08NumbaEnv5numba2np8arrayobj18_ol_array_allocate12_3clocals_3e4implB2v5B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj = common local_unnamed_addr global ptr null
@.const.pickledata.92013159063168 = internal constant [86 x i8] c"\80\04\95K\00\00\00\00\00\00\00\8C\08builtins\94\8C\0BMemoryError\94\93\94\8C'Allocation failed (probably too large).\94\85\94N\87\94."
@.const.pickledata.92013159063168.sha1 = internal constant [20 x i8] c"\BA(\9D\81\F0\\p \F3G|\15sH\04\DFe\AB\E2\09"
@.const.picklebuf.92013159063168 = internal constant { ptr, i32, ptr, ptr, i32 } { ptr @.const.pickledata.92013159063168, i32 86, ptr @.const.pickledata.92013159063168.sha1, ptr null, i32 0 }
define range(i32 0, 2) i32 @_ZN8__main__1fB2v1B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dE5ArrayIdLi2E1C7mutable7alignedE(ptr noalias writeonly captures(none) %retptr, ptr noalias writeonly captures(none) %excinfo, ptr %arg.arr1.0, ptr readnone captures(none) %arg.arr1.1, i64 %arg.arr1.2, i64 %arg.arr1.3, ptr readonly captures(none) %arg.arr1.4, i64 %arg.arr1.5.0, i64 %arg.arr1.5.1, i64 %arg.arr1.6.0, i64 %arg.arr1.6.1) local_unnamed_addr {
B128.i:
%arg.arr1.5.1.fr = freeze i64 %arg.arr1.5.1
%arg.arr1.5.0.fr = freeze i64 %arg.arr1.5.0
tail call void @NRT_incref(ptr %arg.arr1.0)
%.93 = tail call { i64, i1 } @llvm.smul.with.overflow.i64(i64 %arg.arr1.5.0.fr, i64 %arg.arr1.5.1.fr)
%.94 = extractvalue { i64, i1 } %.93, 0
%.95 = extractvalue { i64, i1 } %.93, 1
%.97 = shl i64 %arg.arr1.5.1.fr, 3
%0 = add i64 %.94, -1152921504606846976
%.100 = icmp ult i64 %0, -2305843009213693952
%.101 = or i1 %.95, %.100
br i1 %.101, label %B0.endif.endif.if, label %B0.endif.endif.endif, !prof !0
common.ret: ; preds = %for.end, %B0.endif.endif.endif.if.if, %B0.endif.endif.if
%common.ret.op = phi i32 [ 1, %B0.endif.endif.if ], [ 1, %B0.endif.endif.endif.if.if ], [ 0, %for.end ]
ret i32 %common.ret.op
B0.endif.endif.if: ; preds = %B128.i
store ptr @.const.picklebuf.92013167184064, ptr %excinfo, align 8, !numba_exception_output !1
br label %common.ret
B0.endif.endif.endif: ; preds = %B128.i
%.99 = shl nsw i64 %.94, 3
%.7.i.i = tail call ptr @NRT_MemInfo_alloc_aligned(i64 %.99, i32 32), !noalias !2
%.8.i.i = icmp eq ptr %.7.i.i, null
br i1 %.8.i.i, label %B0.endif.endif.endif.if.if, label %B0.endif.endif.endif.endif, !prof !0
B0.endif.endif.endif.endif: ; preds = %B0.endif.endif.endif
%.5.i = getelementptr i8, ptr %.7.i.i, i64 24
%.6.i = load ptr, ptr %.5.i, align 8
%.17977 = icmp sgt i64 %arg.arr1.5.0.fr, 0
br i1 %.17977, label %for.cond.1.preheader.lr.ph, label %for.end
for.cond.1.preheader.lr.ph: ; preds = %B0.endif.endif.endif.endif
%.18248 = icmp sgt i64 %arg.arr1.5.1.fr, 0
br i1 %.18248, label %for.cond.1.preheader.lr.ph.split.us, label %for.end
for.cond.1.preheader.lr.ph.split.us: ; preds = %for.cond.1.preheader.lr.ph
%.184.not = icmp eq i64 %arg.arr1.5.0.fr, 1
br i1 %.184.not, label %for.cond.1.preheader.lr.ph.split.us.split, label %for.cond.1.preheader.lr.ph.split.us.split.us
for.cond.1.preheader.lr.ph.split.us.split.us: ; preds = %for.cond.1.preheader.lr.ph.split.us
%1 = icmp ugt i64 %arg.arr1.5.1.fr, 1
br i1 %1, label %for.cond.1.preheader.us.us.us.preheader, label %iter.check42
iter.check42: ; preds = %for.cond.1.preheader.lr.ph.split.us.split.us
%2 = ptrtoint ptr %.6.i to i64
%3 = ptrtoint ptr %arg.arr1.4 to i64
%min.iters.check40 = icmp ult i64 %arg.arr1.5.0.fr, 4
%ident.check.not = icmp ne i64 %arg.arr1.5.1.fr, 1
%or.cond.not109 = or i1 %min.iters.check40, %ident.check.not
%4 = sub i64 %2, %3
%diff.check39 = icmp ult i64 %4, 128
%or.cond106 = select i1 %or.cond.not109, i1 true, i1 %diff.check39
br i1 %or.cond106, label %for.body.1.endif.endif.endif.us.us98.us.preheader, label %vector.main.loop.iter.check44
vector.main.loop.iter.check44: ; preds = %iter.check42
%const = bitcast i64 9223372036854775792 to i64
%min.iters.check43 = icmp ult i64 %arg.arr1.5.0.fr, 16
br i1 %min.iters.check43, label %vec.epilog.ph59, label %vector.ph45
vector.ph45: ; preds = %vector.main.loop.iter.check44
%n.vec47 = and i64 %arg.arr1.5.0.fr, %const
br label %vector.body48
vector.body48: ; preds = %vector.body48, %vector.ph45
%index49 = phi i64 [ 0, %vector.ph45 ], [ %index.next54, %vector.body48 ]
%sunkaddr = mul i64 %index49, 8
%sunkaddr282 = getelementptr i8, ptr %arg.arr1.4, i64 %sunkaddr
%wide.load50 = load <4 x double>, ptr %sunkaddr282, align 8
%sunkaddr283 = mul i64 %index49, 8
%sunkaddr284 = getelementptr i8, ptr %arg.arr1.4, i64 %sunkaddr283
%sunkaddr285 = getelementptr i8, ptr %sunkaddr284, i64 32
%wide.load51 = load <4 x double>, ptr %sunkaddr285, align 8
%sunkaddr286 = mul i64 %index49, 8
%sunkaddr287 = getelementptr i8, ptr %arg.arr1.4, i64 %sunkaddr286
%sunkaddr288 = getelementptr i8, ptr %sunkaddr287, i64 64
%wide.load52 = load <4 x double>, ptr %sunkaddr288, align 8
%sunkaddr289 = mul i64 %index49, 8
%sunkaddr290 = getelementptr i8, ptr %arg.arr1.4, i64 %sunkaddr289
%sunkaddr291 = getelementptr i8, ptr %sunkaddr290, i64 96
%wide.load53 = load <4 x double>, ptr %sunkaddr291, align 8
%5 = fadd <4 x double> %wide.load50, splat (double 2.000000e+00)
%6 = fadd <4 x double> %wide.load51, splat (double 2.000000e+00)
%7 = fadd <4 x double> %wide.load52, splat (double 2.000000e+00)
%8 = fadd <4 x double> %wide.load53, splat (double 2.000000e+00)
%sunkaddr292 = mul i64 %index49, 8
%sunkaddr293 = getelementptr i8, ptr %.6.i, i64 %sunkaddr292
store <4 x double> %5, ptr %sunkaddr293, align 8
%sunkaddr294 = mul i64 %index49, 8
%sunkaddr295 = getelementptr i8, ptr %.6.i, i64 %sunkaddr294
%sunkaddr296 = getelementptr i8, ptr %sunkaddr295, i64 32
store <4 x double> %6, ptr %sunkaddr296, align 8
%sunkaddr297 = mul i64 %index49, 8
%sunkaddr298 = getelementptr i8, ptr %.6.i, i64 %sunkaddr297
%sunkaddr299 = getelementptr i8, ptr %sunkaddr298, i64 64
store <4 x double> %7, ptr %sunkaddr299, align 8
%sunkaddr300 = mul i64 %index49, 8
%sunkaddr301 = getelementptr i8, ptr %.6.i, i64 %sunkaddr300
%sunkaddr302 = getelementptr i8, ptr %sunkaddr301, i64 96
store <4 x double> %8, ptr %sunkaddr302, align 8
%index.next54 = add nuw i64 %index49, 16
%9 = icmp eq i64 %n.vec47, %index.next54
br i1 %9, label %middle.block55, label %vector.body48, !llvm.loop !9
middle.block55: ; preds = %vector.body48
%cmp.n56 = icmp eq i64 %arg.arr1.5.0.fr, %n.vec47
br i1 %cmp.n56, label %for.end, label %vec.epilog.iter.check60
vec.epilog.iter.check60: ; preds = %middle.block55
%n.vec.remaining61 = and i64 %arg.arr1.5.0.fr, 12
%min.epilog.iters.check62 = icmp eq i64 %n.vec.remaining61, 0
br i1 %min.epilog.iters.check62, label %for.body.1.endif.endif.endif.us.us98.us.preheader, label %vec.epilog.ph59
for.body.1.endif.endif.endif.us.us98.us.preheader: ; preds = %iter.check42, %vec.epilog.middle.block69, %vec.epilog.iter.check60
%loop.index80.us.us.ph = phi i64 [ 0, %iter.check42 ], [ %n.vec47, %vec.epilog.iter.check60 ], [ %n.vec64, %vec.epilog.middle.block69 ]
%10 = sub nsw i64 %arg.arr1.5.0.fr, %loop.index80.us.us.ph
%xtraiter = and i64 %10, 7
%lcmp.mod.not = icmp eq i64 %xtraiter, 0
br i1 %lcmp.mod.not, label %for.body.1.endif.endif.endif.us.us98.us.prol.loopexit, label %for.body.1.endif.endif.endif.us.us98.us.prol.preheader
for.body.1.endif.endif.endif.us.us98.us.prol.preheader: ; preds = %for.body.1.endif.endif.endif.us.us98.us.preheader
%11 = mul i64 %arg.arr1.5.1.fr, %loop.index80.us.us.ph
%12 = shl i64 %11, 3
%13 = shl i64 %arg.arr1.5.1.fr, 3
%14 = sub i64 0, %xtraiter
br label %for.body.1.endif.endif.endif.us.us98.us.prol
for.body.1.endif.endif.endif.us.us98.us.prol: ; preds = %for.body.1.endif.endif.endif.us.us98.us.prol.preheader, %for.body.1.endif.endif.endif.us.us98.us.prol
%lsr.iv256 = phi i64 [ %12, %for.body.1.endif.endif.endif.us.us98.us.prol.preheader ], [ %lsr.iv.next257, %for.body.1.endif.endif.endif.us.us98.us.prol ]
%lsr.iv254 = phi i64 [ 0, %for.body.1.endif.endif.endif.us.us98.us.prol.preheader ], [ %lsr.iv.next255, %for.body.1.endif.endif.endif.us.us98.us.prol ]
%scevgep259 = getelementptr i8, ptr %arg.arr1.4, i64 %lsr.iv256
%scevgep258 = getelementptr i8, ptr %.6.i, i64 %lsr.iv256
%.200.us.us96.us.prol = load double, ptr %scevgep259, align 8
%.6.i2.prol = fadd double %.200.us.us96.us.prol, 2.000000e+00
store double %.6.i2.prol, ptr %scevgep258, align 8
%lsr.iv.next255 = add nsw i64 %lsr.iv254, -1
%lsr.iv.next257 = add i64 %lsr.iv256, %13
%prol.iter.cmp.not = icmp eq i64 %14, %lsr.iv.next255
br i1 %prol.iter.cmp.not, label %for.body.1.endif.endif.endif.us.us98.us.prol.loopexit.loopexit, label %for.body.1.endif.endif.endif.us.us98.us.prol, !llvm.loop !12
for.body.1.endif.endif.endif.us.us98.us.prol.loopexit.loopexit: ; preds = %for.body.1.endif.endif.endif.us.us98.us.prol
%15 = sub i64 %loop.index80.us.us.ph, %lsr.iv.next255
br label %for.body.1.endif.endif.endif.us.us98.us.prol.loopexit
for.body.1.endif.endif.endif.us.us98.us.prol.loopexit: ; preds = %for.body.1.endif.endif.endif.us.us98.us.prol.loopexit.loopexit, %for.body.1.endif.endif.endif.us.us98.us.preheader
%loop.index80.us.us.unr = phi i64 [ %loop.index80.us.us.ph, %for.body.1.endif.endif.endif.us.us98.us.preheader ], [ %15, %for.body.1.endif.endif.endif.us.us98.us.prol.loopexit.loopexit ]
%16 = sub nsw i64 %loop.index80.us.us.ph, %arg.arr1.5.0.fr
%17 = icmp ugt i64 %16, -8
br i1 %17, label %for.end, label %for.body.1.endif.endif.endif.us.us98.us.preheader121
for.body.1.endif.endif.endif.us.us98.us.preheader121: ; preds = %for.body.1.endif.endif.endif.us.us98.us.prol.loopexit
%18 = sub i64 %arg.arr1.5.0.fr, %loop.index80.us.us.unr
%19 = mul i64 %arg.arr1.5.1.fr, %loop.index80.us.us.unr
%20 = shl i64 %19, 3
%21 = shl i64 %arg.arr1.5.1.fr, 6
%22 = shl i64 %arg.arr1.5.1.fr, 3
br label %for.body.1.endif.endif.endif.us.us98.us
vec.epilog.ph59: ; preds = %vec.epilog.iter.check60, %vector.main.loop.iter.check44
%vec.epilog.resume.val57 = phi i64 [ %n.vec47, %vec.epilog.iter.check60 ], [ 0, %vector.main.loop.iter.check44 ]
%const_mat = add i64 %const, 12
%n.vec64 = and i64 %arg.arr1.5.0.fr, %const_mat
br label %vec.epilog.vector.body65
vec.epilog.vector.body65: ; preds = %vec.epilog.vector.body65, %vec.epilog.ph59
%index66 = phi i64 [ %vec.epilog.resume.val57, %vec.epilog.ph59 ], [ %index.next68, %vec.epilog.vector.body65 ]
%23 = shl i64 %index66, 3
%scevgep260 = getelementptr i8, ptr %.6.i, i64 %23
%scevgep261 = getelementptr i8, ptr %arg.arr1.4, i64 %23
%wide.load67 = load <4 x double>, ptr %scevgep261, align 8
%24 = fadd <4 x double> %wide.load67, splat (double 2.000000e+00)
store <4 x double> %24, ptr %scevgep260, align 8
%index.next68 = add nuw i64 %index66, 4
%25 = icmp eq i64 %n.vec64, %index.next68
br i1 %25, label %vec.epilog.middle.block69, label %vec.epilog.vector.body65, !llvm.loop !14
vec.epilog.middle.block69: ; preds = %vec.epilog.vector.body65
%cmp.n70 = icmp eq i64 %arg.arr1.5.0.fr, %n.vec64
br i1 %cmp.n70, label %for.end, label %for.body.1.endif.endif.endif.us.us98.us.preheader
for.cond.1.preheader.us.us.us.preheader: ; preds = %for.cond.1.preheader.lr.ph.split.us.split.us
%26 = ptrtoint ptr %.6.i to i64
%27 = ptrtoint ptr %arg.arr1.4 to i64
%const278 = bitcast i64 9223372036854775792 to i64
%28 = sub i64 %26, %27
%min.iters.check74 = icmp ult i64 %arg.arr1.5.1.fr, 4
%diff.check73 = icmp ult i64 %28, 128
%or.cond107 = select i1 %min.iters.check74, i1 true, i1 %diff.check73
%n.vec81 = and i64 %arg.arr1.5.1.fr, %const278
%const_mat279 = add i64 %const278, 12
%n.vec98 = and i64 %arg.arr1.5.1.fr, %const_mat279
%scevgep174 = getelementptr i8, ptr %arg.arr1.4, i64 96
%29 = shl i64 %arg.arr1.5.1.fr, 3
%scevgep184 = getelementptr i8, ptr %.6.i, i64 96
br label %iter.check76
iter.check76: ; preds = %for.cond.1.preheader.us.us.us.preheader, %for.cond.1.for.end.1_crit_edge.split.us.split.us.us.us.us
%lsr.iv197 = phi ptr [ %.6.i, %for.cond.1.preheader.us.us.us.preheader ], [ %scevgep198, %for.cond.1.for.end.1_crit_edge.split.us.split.us.us.us.us ]
%lsr.iv194 = phi ptr [ %arg.arr1.4, %for.cond.1.preheader.us.us.us.preheader ], [ %scevgep195, %for.cond.1.for.end.1_crit_edge.split.us.split.us.us.us.us ]
%lsr.iv185 = phi ptr [ %scevgep184, %for.cond.1.preheader.us.us.us.preheader ], [ %scevgep186, %for.cond.1.for.end.1_crit_edge.split.us.split.us.us.us.us ]
%lsr.iv175 = phi ptr [ %scevgep174, %for.cond.1.preheader.us.us.us.preheader ], [ %scevgep176, %for.cond.1.for.end.1_crit_edge.split.us.split.us.us.us.us ]
%loop.index80.us.us.us = phi i64 [ %.234.us.us.us, %for.cond.1.for.end.1_crit_edge.split.us.split.us.us.us.us ], [ 0, %for.cond.1.preheader.us.us.us.preheader ]
br i1 %or.cond107, label %for.body.1.endif.endif.endif.us.us.us.us.us.preheader, label %vector.main.loop.iter.check78
vector.main.loop.iter.check78: ; preds = %iter.check76
%30 = icmp ult i64 %arg.arr1.5.1.fr, 16
br i1 %30, label %vec.epilog.ph93, label %vector.body82.preheader
vector.body82.preheader: ; preds = %vector.main.loop.iter.check78
br label %vector.body82
vector.body82: ; preds = %vector.body82.preheader, %vector.body82
%index83 = phi i64 [ %index.next88, %vector.body82 ], [ 0, %vector.body82.preheader ]
%31 = shl i64 %index83, 3
%scevgep182 = getelementptr i8, ptr %lsr.iv175, i64 %31
%scevgep183 = getelementptr i8, ptr %scevgep182, i64 -96
%32 = shl i64 %index83, 3
%scevgep180 = getelementptr i8, ptr %lsr.iv175, i64 %32
%scevgep181 = getelementptr i8, ptr %scevgep180, i64 -64
%33 = shl i64 %index83, 3
%scevgep178 = getelementptr i8, ptr %lsr.iv175, i64 %33
%scevgep179 = getelementptr i8, ptr %scevgep178, i64 -32
%34 = shl i64 %index83, 3
%scevgep177 = getelementptr i8, ptr %lsr.iv175, i64 %34
%wide.load84 = load <4 x double>, ptr %scevgep183, align 8
%wide.load85 = load <4 x double>, ptr %scevgep181, align 8
%wide.load86 = load <4 x double>, ptr %scevgep179, align 8
%wide.load87 = load <4 x double>, ptr %scevgep177, align 8
%35 = fadd <4 x double> %wide.load84, splat (double 2.000000e+00)
%36 = fadd <4 x double> %wide.load85, splat (double 2.000000e+00)
%37 = fadd <4 x double> %wide.load86, splat (double 2.000000e+00)
%38 = fadd <4 x double> %wide.load87, splat (double 2.000000e+00)
%39 = shl i64 %index83, 3
%scevgep192 = getelementptr i8, ptr %lsr.iv185, i64 %39
%scevgep193 = getelementptr i8, ptr %scevgep192, i64 -96
%40 = shl i64 %index83, 3
%scevgep190 = getelementptr i8, ptr %lsr.iv185, i64 %40
%scevgep191 = getelementptr i8, ptr %scevgep190, i64 -64
%41 = shl i64 %index83, 3
%scevgep188 = getelementptr i8, ptr %lsr.iv185, i64 %41
%scevgep189 = getelementptr i8, ptr %scevgep188, i64 -32
%42 = shl i64 %index83, 3
%scevgep187 = getelementptr i8, ptr %lsr.iv185, i64 %42
store <4 x double> %35, ptr %scevgep193, align 8
store <4 x double> %36, ptr %scevgep191, align 8
store <4 x double> %37, ptr %scevgep189, align 8
store <4 x double> %38, ptr %scevgep187, align 8
%index.next88 = add nuw i64 %index83, 16
%43 = icmp eq i64 %n.vec81, %index.next88
br i1 %43, label %middle.block89, label %vector.body82, !llvm.loop !15
middle.block89: ; preds = %vector.body82
%44 = icmp eq i64 %arg.arr1.5.1.fr, %n.vec81
br i1 %44, label %for.cond.1.for.end.1_crit_edge.split.us.split.us.us.us.us, label %vec.epilog.iter.check94
vec.epilog.iter.check94: ; preds = %middle.block89
%45 = and i64 %arg.arr1.5.1.fr, 12
%46 = icmp eq i64 %45, 0
br i1 %46, label %for.body.1.endif.endif.endif.us.us.us.us.us.preheader, label %vec.epilog.ph93
vec.epilog.ph93: ; preds = %vec.epilog.iter.check94, %vector.main.loop.iter.check78
%vec.epilog.resume.val91 = phi i64 [ %n.vec81, %vec.epilog.iter.check94 ], [ 0, %vector.main.loop.iter.check78 ]
br label %vec.epilog.vector.body99
vec.epilog.vector.body99: ; preds = %vec.epilog.vector.body99, %vec.epilog.ph93
%index100 = phi i64 [ %vec.epilog.resume.val91, %vec.epilog.ph93 ], [ %index.next102, %vec.epilog.vector.body99 ]
%47 = shl i64 %index100, 3
%scevgep196 = getelementptr i8, ptr %lsr.iv194, i64 %47
%wide.load101 = load <4 x double>, ptr %scevgep196, align 8
%48 = fadd <4 x double> %wide.load101, splat (double 2.000000e+00)
%scevgep199 = getelementptr i8, ptr %lsr.iv197, i64 %47
store <4 x double> %48, ptr %scevgep199, align 8
%index.next102 = add nuw i64 %index100, 4
%49 = icmp eq i64 %n.vec98, %index.next102
br i1 %49, label %vec.epilog.middle.block103, label %vec.epilog.vector.body99, !llvm.loop !16
vec.epilog.middle.block103: ; preds = %vec.epilog.vector.body99
%50 = icmp eq i64 %arg.arr1.5.1.fr, %n.vec98
br i1 %50, label %for.cond.1.for.end.1_crit_edge.split.us.split.us.us.us.us, label %for.body.1.endif.endif.endif.us.us.us.us.us.preheader
for.body.1.endif.endif.endif.us.us.us.us.us.preheader: ; preds = %vec.epilog.iter.check94, %vec.epilog.middle.block103, %iter.check76
%loop.index.151.us.us.us.us.us.ph = phi i64 [ 0, %iter.check76 ], [ %n.vec81, %vec.epilog.iter.check94 ], [ %n.vec98, %vec.epilog.middle.block103 ]
%51 = sub nsw i64 %arg.arr1.5.1.fr, %loop.index.151.us.us.us.us.us.ph
%xtraiter112 = and i64 %51, 7
%lcmp.mod113.not = icmp eq i64 %xtraiter112, 0
br i1 %lcmp.mod113.not, label %for.body.1.endif.endif.endif.us.us.us.us.us.prol.loopexit, label %for.body.1.endif.endif.endif.us.us.us.us.us.prol.preheader
for.body.1.endif.endif.endif.us.us.us.us.us.prol.preheader: ; preds = %for.body.1.endif.endif.endif.us.us.us.us.us.preheader
br label %for.body.1.endif.endif.endif.us.us.us.us.us.prol
for.body.1.endif.endif.endif.us.us.us.us.us.prol: ; preds = %for.body.1.endif.endif.endif.us.us.us.us.us.prol.preheader, %for.body.1.endif.endif.endif.us.us.us.us.us.prol
%lsr.iv202 = phi i64 [ %xtraiter112, %for.body.1.endif.endif.endif.us.us.us.us.us.prol.preheader ], [ %lsr.iv.next203, %for.body.1.endif.endif.endif.us.us.us.us.us.prol ]
%loop.index.151.us.us.us.us.us.prol = phi i64 [ %.232.us.us.us.us.us.prol, %for.body.1.endif.endif.endif.us.us.us.us.us.prol ], [ %loop.index.151.us.us.us.us.us.ph, %for.body.1.endif.endif.endif.us.us.us.us.us.prol.preheader ]
%52 = shl i64 %loop.index.151.us.us.us.us.us.prol, 3
%scevgep201 = getelementptr i8, ptr %lsr.iv194, i64 %52
%.200.us.us.us.us.us.prol = load double, ptr %scevgep201, align 8
%.6.i1.prol = fadd double %.200.us.us.us.us.us.prol, 2.000000e+00
%53 = shl i64 %loop.index.151.us.us.us.us.us.prol, 3
%scevgep200 = getelementptr i8, ptr %lsr.iv197, i64 %53
store double %.6.i1.prol, ptr %scevgep200, align 8
%.232.us.us.us.us.us.prol = add nuw i64 %loop.index.151.us.us.us.us.us.prol, 1
%lsr.iv.next203 = add nsw i64 %lsr.iv202, -1
%prol.iter114.cmp.not = icmp eq i64 %lsr.iv.next203, 0
br i1 %prol.iter114.cmp.not, label %for.body.1.endif.endif.endif.us.us.us.us.us.prol.loopexit, label %for.body.1.endif.endif.endif.us.us.us.us.us.prol, !llvm.loop !17
for.body.1.endif.endif.endif.us.us.us.us.us.prol.loopexit: ; preds = %for.body.1.endif.endif.endif.us.us.us.us.us.prol, %for.body.1.endif.endif.endif.us.us.us.us.us.preheader
%loop.index.151.us.us.us.us.us.unr = phi i64 [ %loop.index.151.us.us.us.us.us.ph, %for.body.1.endif.endif.endif.us.us.us.us.us.preheader ], [ %.232.us.us.us.us.us.prol, %for.body.1.endif.endif.endif.us.us.us.us.us.prol ]
%54 = sub nsw i64 %loop.index.151.us.us.us.us.us.ph, %arg.arr1.5.1.fr
%55 = icmp ugt i64 %54, -8
br i1 %55, label %for.cond.1.for.end.1_crit_edge.split.us.split.us.us.us.us, label %for.body.1.endif.endif.endif.us.us.us.us.us.preheader119
for.body.1.endif.endif.endif.us.us.us.us.us.preheader119: ; preds = %for.body.1.endif.endif.endif.us.us.us.us.us.prol.loopexit
br label %for.body.1.endif.endif.endif.us.us.us.us.us
for.body.1.endif.endif.endif.us.us.us.us.us: ; preds = %for.body.1.endif.endif.endif.us.us.us.us.us.preheader119, %for.body.1.endif.endif.endif.us.us.us.us.us
%loop.index.151.us.us.us.us.us = phi i64 [ %.232.us.us.us.us.us.7, %for.body.1.endif.endif.endif.us.us.us.us.us ], [ %loop.index.151.us.us.us.us.us.unr, %for.body.1.endif.endif.endif.us.us.us.us.us.preheader119 ]
%56 = shl i64 %loop.index.151.us.us.us.us.us, 3
%scevgep221 = getelementptr i8, ptr %lsr.iv194, i64 %56
%.200.us.us.us.us.us = load double, ptr %scevgep221, align 8
%.6.i1 = fadd double %.200.us.us.us.us.us, 2.000000e+00
%57 = shl i64 %loop.index.151.us.us.us.us.us, 3
%scevgep206 = getelementptr i8, ptr %lsr.iv197, i64 %57
store double %.6.i1, ptr %scevgep206, align 8
%scevgep222 = getelementptr i8, ptr %lsr.iv194, i64 %57
%scevgep223 = getelementptr i8, ptr %scevgep222, i64 8
%.200.us.us.us.us.us.1 = load double, ptr %scevgep223, align 8
%.6.i1.1 = fadd double %.200.us.us.us.us.us.1, 2.000000e+00
%58 = shl i64 %loop.index.151.us.us.us.us.us, 3
%scevgep209 = getelementptr i8, ptr %lsr.iv197, i64 %58
%scevgep210 = getelementptr i8, ptr %scevgep209, i64 8
store double %.6.i1.1, ptr %scevgep210, align 8
%scevgep224 = getelementptr i8, ptr %lsr.iv194, i64 %58
%scevgep225 = getelementptr i8, ptr %scevgep224, i64 16
%.200.us.us.us.us.us.2 = load double, ptr %scevgep225, align 8
%.6.i1.2 = fadd double %.200.us.us.us.us.us.2, 2.000000e+00
%59 = shl i64 %loop.index.151.us.us.us.us.us, 3
%scevgep211 = getelementptr i8, ptr %lsr.iv197, i64 %59
%scevgep212 = getelementptr i8, ptr %scevgep211, i64 16
store double %.6.i1.2, ptr %scevgep212, align 8
%scevgep226 = getelementptr i8, ptr %lsr.iv194, i64 %59
%scevgep227 = getelementptr i8, ptr %scevgep226, i64 24
%.200.us.us.us.us.us.3 = load double, ptr %scevgep227, align 8
%.6.i1.3 = fadd double %.200.us.us.us.us.us.3, 2.000000e+00
%60 = shl i64 %loop.index.151.us.us.us.us.us, 3
%scevgep213 = getelementptr i8, ptr %lsr.iv197, i64 %60
%scevgep214 = getelementptr i8, ptr %scevgep213, i64 24
store double %.6.i1.3, ptr %scevgep214, align 8
%scevgep228 = getelementptr i8, ptr %lsr.iv194, i64 %60
%scevgep229 = getelementptr i8, ptr %scevgep228, i64 32
%.200.us.us.us.us.us.4 = load double, ptr %scevgep229, align 8
%.6.i1.4 = fadd double %.200.us.us.us.us.us.4, 2.000000e+00
%61 = shl i64 %loop.index.151.us.us.us.us.us, 3
%scevgep204 = getelementptr i8, ptr %lsr.iv197, i64 %61
%scevgep205 = getelementptr i8, ptr %scevgep204, i64 32
store double %.6.i1.4, ptr %scevgep205, align 8
%scevgep230 = getelementptr i8, ptr %lsr.iv194, i64 %61
%scevgep231 = getelementptr i8, ptr %scevgep230, i64 40
%.200.us.us.us.us.us.5 = load double, ptr %scevgep231, align 8
%.6.i1.5 = fadd double %.200.us.us.us.us.us.5, 2.000000e+00
%62 = shl i64 %loop.index.151.us.us.us.us.us, 3
%scevgep217 = getelementptr i8, ptr %lsr.iv197, i64 %62
%scevgep218 = getelementptr i8, ptr %scevgep217, i64 40
store double %.6.i1.5, ptr %scevgep218, align 8
%scevgep232 = getelementptr i8, ptr %lsr.iv194, i64 %62
%scevgep233 = getelementptr i8, ptr %scevgep232, i64 48
%.200.us.us.us.us.us.6 = load double, ptr %scevgep233, align 8
%.6.i1.6 = fadd double %.200.us.us.us.us.us.6, 2.000000e+00
%63 = shl i64 %loop.index.151.us.us.us.us.us, 3
%scevgep215 = getelementptr i8, ptr %lsr.iv197, i64 %63
%scevgep216 = getelementptr i8, ptr %scevgep215, i64 48
store double %.6.i1.6, ptr %scevgep216, align 8
%scevgep219 = getelementptr i8, ptr %lsr.iv194, i64 %63
%scevgep220 = getelementptr i8, ptr %scevgep219, i64 56
%.200.us.us.us.us.us.7 = load double, ptr %scevgep220, align 8
%.6.i1.7 = fadd double %.200.us.us.us.us.us.7, 2.000000e+00
%64 = shl i64 %loop.index.151.us.us.us.us.us, 3
%scevgep207 = getelementptr i8, ptr %lsr.iv197, i64 %64
%scevgep208 = getelementptr i8, ptr %scevgep207, i64 56
store double %.6.i1.7, ptr %scevgep208, align 8
%.232.us.us.us.us.us.7 = add nuw nsw i64 %loop.index.151.us.us.us.us.us, 8
%exitcond138.not.7 = icmp eq i64 %arg.arr1.5.1.fr, %.232.us.us.us.us.us.7
br i1 %exitcond138.not.7, label %for.cond.1.for.end.1_crit_edge.split.us.split.us.us.us.us, label %for.body.1.endif.endif.endif.us.us.us.us.us, !llvm.loop !18
for.cond.1.for.end.1_crit_edge.split.us.split.us.us.us.us: ; preds = %for.body.1.endif.endif.endif.us.us.us.us.us, %for.body.1.endif.endif.endif.us.us.us.us.us.prol.loopexit, %vec.epilog.middle.block103, %middle.block89
%.234.us.us.us = add nuw nsw i64 %loop.index80.us.us.us, 1
%scevgep176 = getelementptr i8, ptr %lsr.iv175, i64 %29
%scevgep186 = getelementptr i8, ptr %lsr.iv185, i64 %29
%scevgep195 = getelementptr i8, ptr %lsr.iv194, i64 %29
%scevgep198 = getelementptr i8, ptr %lsr.iv197, i64 %29
%exitcond139.not = icmp eq i64 %.234.us.us.us, %arg.arr1.5.0.fr
br i1 %exitcond139.not, label %for.end, label %iter.check76
for.body.1.endif.endif.endif.us.us98.us: ; preds = %for.body.1.endif.endif.endif.us.us98.us.preheader121, %for.body.1.endif.endif.endif.us.us98.us
%lsr.iv236 = phi i64 [ %20, %for.body.1.endif.endif.endif.us.us98.us.preheader121 ], [ %lsr.iv.next237, %for.body.1.endif.endif.endif.us.us98.us ]
%lsr.iv234 = phi i64 [ %18, %for.body.1.endif.endif.endif.us.us98.us.preheader121 ], [ %lsr.iv.next235, %for.body.1.endif.endif.endif.us.us98.us ]
%scevgep238 = getelementptr i8, ptr %arg.arr1.4, i64 %lsr.iv236
%scevgep239 = getelementptr i8, ptr %.6.i, i64 %lsr.iv236
%.200.us.us96.us = load double, ptr %scevgep238, align 8
%.6.i2 = fadd double %.200.us.us96.us, 2.000000e+00
store double %.6.i2, ptr %scevgep239, align 8
%scevgep240 = getelementptr i8, ptr %scevgep238, i64 %22
%sunkaddr375 = mul i64 %arg.arr1.5.1.fr, 8
%sunkaddr376 = getelementptr i8, ptr %scevgep238, i64 %sunkaddr375
%.200.us.us96.us.1 = load double, ptr %sunkaddr376, align 8
%.6.i2.1 = fadd double %.200.us.us96.us.1, 2.000000e+00
%scevgep247 = getelementptr i8, ptr %scevgep239, i64 %22
%sunkaddr377 = mul i64 %arg.arr1.5.1.fr, 8
%sunkaddr378 = getelementptr i8, ptr %scevgep239, i64 %sunkaddr377
store double %.6.i2.1, ptr %sunkaddr378, align 8
%scevgep241 = getelementptr i8, ptr %scevgep240, i64 %22
%sunkaddr379 = mul i64 %arg.arr1.5.1.fr, 8
%sunkaddr380 = getelementptr i8, ptr %scevgep240, i64 %sunkaddr379
%.200.us.us96.us.2 = load double, ptr %sunkaddr380, align 8
%.6.i2.2 = fadd double %.200.us.us96.us.2, 2.000000e+00
%scevgep248 = getelementptr i8, ptr %scevgep247, i64 %22
%sunkaddr381 = mul i64 %arg.arr1.5.1.fr, 8
%sunkaddr382 = getelementptr i8, ptr %scevgep247, i64 %sunkaddr381
store double %.6.i2.2, ptr %sunkaddr382, align 8
%scevgep242 = getelementptr i8, ptr %scevgep241, i64 %22
%sunkaddr383 = mul i64 %arg.arr1.5.1.fr, 8
%sunkaddr384 = getelementptr i8, ptr %scevgep241, i64 %sunkaddr383
%.200.us.us96.us.3 = load double, ptr %sunkaddr384, align 8
%.6.i2.3 = fadd double %.200.us.us96.us.3, 2.000000e+00
%scevgep249 = getelementptr i8, ptr %scevgep248, i64 %22
%sunkaddr385 = mul i64 %arg.arr1.5.1.fr, 8
%sunkaddr386 = getelementptr i8, ptr %scevgep248, i64 %sunkaddr385
store double %.6.i2.3, ptr %sunkaddr386, align 8
%scevgep243 = getelementptr i8, ptr %scevgep242, i64 %22
%sunkaddr387 = mul i64 %arg.arr1.5.1.fr, 8
%sunkaddr388 = getelementptr i8, ptr %scevgep242, i64 %sunkaddr387
%.200.us.us96.us.4 = load double, ptr %sunkaddr388, align 8
%.6.i2.4 = fadd double %.200.us.us96.us.4, 2.000000e+00
%scevgep250 = getelementptr i8, ptr %scevgep249, i64 %22
%sunkaddr389 = mul i64 %arg.arr1.5.1.fr, 8
%sunkaddr390 = getelementptr i8, ptr %scevgep249, i64 %sunkaddr389
store double %.6.i2.4, ptr %sunkaddr390, align 8
%scevgep244 = getelementptr i8, ptr %scevgep243, i64 %22
%sunkaddr391 = mul i64 %arg.arr1.5.1.fr, 8
%sunkaddr392 = getelementptr i8, ptr %scevgep243, i64 %sunkaddr391
%.200.us.us96.us.5 = load double, ptr %sunkaddr392, align 8
%.6.i2.5 = fadd double %.200.us.us96.us.5, 2.000000e+00
%scevgep251 = getelementptr i8, ptr %scevgep250, i64 %22
%sunkaddr393 = mul i64 %arg.arr1.5.1.fr, 8
%sunkaddr394 = getelementptr i8, ptr %scevgep250, i64 %sunkaddr393
store double %.6.i2.5, ptr %sunkaddr394, align 8
%scevgep245 = getelementptr i8, ptr %scevgep244, i64 %22
%sunkaddr395 = mul i64 %arg.arr1.5.1.fr, 8
%sunkaddr396 = getelementptr i8, ptr %scevgep244, i64 %sunkaddr395
%.200.us.us96.us.6 = load double, ptr %sunkaddr396, align 8
%.6.i2.6 = fadd double %.200.us.us96.us.6, 2.000000e+00
%scevgep252 = getelementptr i8, ptr %scevgep251, i64 %22
%sunkaddr397 = mul i64 %arg.arr1.5.1.fr, 8
%sunkaddr398 = getelementptr i8, ptr %scevgep251, i64 %sunkaddr397
store double %.6.i2.6, ptr %sunkaddr398, align 8
%sunkaddr303 = mul i64 %arg.arr1.5.1.fr, 8
%sunkaddr304 = getelementptr i8, ptr %scevgep245, i64 %sunkaddr303
%.200.us.us96.us.7 = load double, ptr %sunkaddr304, align 8
%.6.i2.7 = fadd double %.200.us.us96.us.7, 2.000000e+00
%sunkaddr305 = mul i64 %arg.arr1.5.1.fr, 8
%sunkaddr306 = getelementptr i8, ptr %scevgep252, i64 %sunkaddr305
store double %.6.i2.7, ptr %sunkaddr306, align 8
%lsr.iv.next235 = add i64 %lsr.iv234, -8
%lsr.iv.next237 = add i64 %lsr.iv236, %21
%exitcond137.not.7 = icmp eq i64 %lsr.iv.next235, 0
br i1 %exitcond137.not.7, label %for.end, label %for.body.1.endif.endif.endif.us.us98.us, !llvm.loop !19
for.cond.1.preheader.lr.ph.split.us.split: ; preds = %for.cond.1.preheader.lr.ph.split.us
%65 = icmp ugt i64 %arg.arr1.5.1.fr, 1
br i1 %65, label %iter.check, label %for.body.1.endif.endif.endif.us86
iter.check: ; preds = %for.cond.1.preheader.lr.ph.split.us.split
%66 = ptrtoint ptr %.6.i to i64
%67 = ptrtoint ptr %arg.arr1.4 to i64
%min.iters.check = icmp ult i64 %arg.arr1.5.1.fr, 4
%68 = sub i64 %66, %67
%diff.check = icmp ult i64 %68, 128
%or.cond108 = select i1 %min.iters.check, i1 true, i1 %diff.check
br i1 %or.cond108, label %for.body.1.endif.endif.endif.us58.us.us.preheader, label %vector.main.loop.iter.check
vector.main.loop.iter.check: ; preds = %iter.check
%const280 = bitcast i64 9223372036854775792 to i64
%min.iters.check28 = icmp ult i64 %arg.arr1.5.1.fr, 16
br i1 %min.iters.check28, label %vec.epilog.ph, label %vector.ph
vector.ph: ; preds = %vector.main.loop.iter.check
%n.vec = and i64 %arg.arr1.5.1.fr, %const280
br label %vector.body
vector.body: ; preds = %vector.body, %vector.ph
%index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
%sunkaddr307 = mul i64 %index, 8
%sunkaddr308 = getelementptr i8, ptr %arg.arr1.4, i64 %sunkaddr307
%wide.load = load <4 x double>, ptr %sunkaddr308, align 8
%sunkaddr309 = mul i64 %index, 8
%sunkaddr310 = getelementptr i8, ptr %arg.arr1.4, i64 %sunkaddr309
%sunkaddr311 = getelementptr i8, ptr %sunkaddr310, i64 32
%wide.load29 = load <4 x double>, ptr %sunkaddr311, align 8
%sunkaddr312 = mul i64 %index, 8
%sunkaddr313 = getelementptr i8, ptr %arg.arr1.4, i64 %sunkaddr312
%sunkaddr314 = getelementptr i8, ptr %sunkaddr313, i64 64
%wide.load30 = load <4 x double>, ptr %sunkaddr314, align 8
%sunkaddr315 = mul i64 %index, 8
%sunkaddr316 = getelementptr i8, ptr %arg.arr1.4, i64 %sunkaddr315
%sunkaddr317 = getelementptr i8, ptr %sunkaddr316, i64 96
%wide.load31 = load <4 x double>, ptr %sunkaddr317, align 8
%69 = fadd <4 x double> %wide.load, splat (double 2.000000e+00)
%70 = fadd <4 x double> %wide.load29, splat (double 2.000000e+00)
%71 = fadd <4 x double> %wide.load30, splat (double 2.000000e+00)
%72 = fadd <4 x double> %wide.load31, splat (double 2.000000e+00)
%sunkaddr318 = mul i64 %index, 8
%sunkaddr319 = getelementptr i8, ptr %.6.i, i64 %sunkaddr318
store <4 x double> %69, ptr %sunkaddr319, align 8
%sunkaddr320 = mul i64 %index, 8
%sunkaddr321 = getelementptr i8, ptr %.6.i, i64 %sunkaddr320
%sunkaddr322 = getelementptr i8, ptr %sunkaddr321, i64 32
store <4 x double> %70, ptr %sunkaddr322, align 8
%sunkaddr323 = mul i64 %index, 8
%sunkaddr324 = getelementptr i8, ptr %.6.i, i64 %sunkaddr323
%sunkaddr325 = getelementptr i8, ptr %sunkaddr324, i64 64
store <4 x double> %71, ptr %sunkaddr325, align 8
%sunkaddr326 = mul i64 %index, 8
%sunkaddr327 = getelementptr i8, ptr %.6.i, i64 %sunkaddr326
%sunkaddr328 = getelementptr i8, ptr %sunkaddr327, i64 96
store <4 x double> %72, ptr %sunkaddr328, align 8
%index.next = add nuw i64 %index, 16
%73 = icmp eq i64 %n.vec, %index.next
br i1 %73, label %middle.block, label %vector.body, !llvm.loop !20
middle.block: ; preds = %vector.body
%cmp.n = icmp eq i64 %arg.arr1.5.1.fr, %n.vec
br i1 %cmp.n, label %for.end, label %vec.epilog.iter.check
vec.epilog.iter.check: ; preds = %middle.block
%n.vec.remaining = and i64 %arg.arr1.5.1.fr, 12
%min.epilog.iters.check = icmp eq i64 %n.vec.remaining, 0
br i1 %min.epilog.iters.check, label %for.body.1.endif.endif.endif.us58.us.us.preheader, label %vec.epilog.ph
vec.epilog.ph: ; preds = %vec.epilog.iter.check, %vector.main.loop.iter.check
%vec.epilog.resume.val = phi i64 [ %n.vec, %vec.epilog.iter.check ], [ 0, %vector.main.loop.iter.check ]
%const_mat281 = add i64 %const280, 12
%n.vec33 = and i64 %arg.arr1.5.1.fr, %const_mat281
br label %vec.epilog.vector.body
vec.epilog.vector.body: ; preds = %vec.epilog.vector.body, %vec.epilog.ph
%index34 = phi i64 [ %vec.epilog.resume.val, %vec.epilog.ph ], [ %index.next36, %vec.epilog.vector.body ]
%74 = shl i64 %index34, 3
%scevgep156 = getelementptr i8, ptr %arg.arr1.4, i64 %74
%wide.load35 = load <4 x double>, ptr %scevgep156, align 8
%75 = fadd <4 x double> %wide.load35, splat (double 2.000000e+00)
%scevgep157 = getelementptr i8, ptr %.6.i, i64 %74
store <4 x double> %75, ptr %scevgep157, align 8
%index.next36 = add nuw i64 %index34, 4
%76 = icmp eq i64 %n.vec33, %index.next36
br i1 %76, label %vec.epilog.middle.block, label %vec.epilog.vector.body, !llvm.loop !21
vec.epilog.middle.block: ; preds = %vec.epilog.vector.body
%cmp.n37 = icmp eq i64 %arg.arr1.5.1.fr, %n.vec33
br i1 %cmp.n37, label %for.end, label %for.body.1.endif.endif.endif.us58.us.us.preheader
for.body.1.endif.endif.endif.us58.us.us.preheader: ; preds = %vec.epilog.iter.check, %vec.epilog.middle.block, %iter.check
%loop.index.151.us56.us.us.ph = phi i64 [ 0, %iter.check ], [ %n.vec, %vec.epilog.iter.check ], [ %n.vec33, %vec.epilog.middle.block ]
%77 = sub nsw i64 %arg.arr1.5.1.fr, %loop.index.151.us56.us.us.ph
%xtraiter115 = and i64 %77, 7
%lcmp.mod116.not = icmp eq i64 %xtraiter115, 0
br i1 %lcmp.mod116.not, label %for.body.1.endif.endif.endif.us58.us.us.prol.loopexit, label %for.body.1.endif.endif.endif.us58.us.us.prol.preheader
for.body.1.endif.endif.endif.us58.us.us.prol.preheader: ; preds = %for.body.1.endif.endif.endif.us58.us.us.preheader
br label %for.body.1.endif.endif.endif.us58.us.us.prol
for.body.1.endif.endif.endif.us58.us.us.prol: ; preds = %for.body.1.endif.endif.endif.us58.us.us.prol.preheader, %for.body.1.endif.endif.endif.us58.us.us.prol
%lsr.iv = phi i64 [ %xtraiter115, %for.body.1.endif.endif.endif.us58.us.us.prol.preheader ], [ %lsr.iv.next, %for.body.1.endif.endif.endif.us58.us.us.prol ]
%loop.index.151.us56.us.us.prol = phi i64 [ %.232.us61.us.us.prol, %for.body.1.endif.endif.endif.us58.us.us.prol ], [ %loop.index.151.us56.us.us.ph, %for.body.1.endif.endif.endif.us58.us.us.prol.preheader ]
%78 = shl i64 %loop.index.151.us56.us.us.prol, 3
%scevgep155 = getelementptr i8, ptr %arg.arr1.4, i64 %78
%.200.us65.us.us.prol = load double, ptr %scevgep155, align 8
%.6.i3.prol = fadd double %.200.us65.us.us.prol, 2.000000e+00
%79 = shl i64 %loop.index.151.us56.us.us.prol, 3
%scevgep154 = getelementptr i8, ptr %.6.i, i64 %79
store double %.6.i3.prol, ptr %scevgep154, align 8
%.232.us61.us.us.prol = add nuw i64 %loop.index.151.us56.us.us.prol, 1
%lsr.iv.next = add nsw i64 %lsr.iv, -1
%prol.iter117.cmp.not = icmp eq i64 %lsr.iv.next, 0
br i1 %prol.iter117.cmp.not, label %for.body.1.endif.endif.endif.us58.us.us.prol.loopexit, label %for.body.1.endif.endif.endif.us58.us.us.prol, !llvm.loop !22
for.body.1.endif.endif.endif.us58.us.us.prol.loopexit: ; preds = %for.body.1.endif.endif.endif.us58.us.us.prol, %for.body.1.endif.endif.endif.us58.us.us.preheader
%loop.index.151.us56.us.us.unr = phi i64 [ %loop.index.151.us56.us.us.ph, %for.body.1.endif.endif.endif.us58.us.us.preheader ], [ %.232.us61.us.us.prol, %for.body.1.endif.endif.endif.us58.us.us.prol ]
%80 = sub nsw i64 %loop.index.151.us56.us.us.ph, %arg.arr1.5.1.fr
%81 = icmp ugt i64 %80, -8
br i1 %81, label %for.end, label %for.body.1.endif.endif.endif.us58.us.us.preheader118
for.body.1.endif.endif.endif.us58.us.us.preheader118: ; preds = %for.body.1.endif.endif.endif.us58.us.us.prol.loopexit
br label %for.body.1.endif.endif.endif.us58.us.us
for.body.1.endif.endif.endif.us58.us.us: ; preds = %for.body.1.endif.endif.endif.us58.us.us.preheader118, %for.body.1.endif.endif.endif.us58.us.us
%loop.index.151.us56.us.us = phi i64 [ %.232.us61.us.us.7, %for.body.1.endif.endif.endif.us58.us.us ], [ %loop.index.151.us56.us.us.unr, %for.body.1.endif.endif.endif.us58.us.us.preheader118 ]
%sunkaddr329 = mul i64 %loop.index.151.us56.us.us, 8
%sunkaddr330 = getelementptr i8, ptr %arg.arr1.4, i64 %sunkaddr329
%.200.us65.us.us = load double, ptr %sunkaddr330, align 8
%.6.i3 = fadd double %.200.us65.us.us, 2.000000e+00
%sunkaddr331 = mul i64 %loop.index.151.us56.us.us, 8
%sunkaddr332 = getelementptr i8, ptr %.6.i, i64 %sunkaddr331
store double %.6.i3, ptr %sunkaddr332, align 8
%sunkaddr333 = mul i64 %loop.index.151.us56.us.us, 8
%sunkaddr334 = getelementptr i8, ptr %arg.arr1.4, i64 %sunkaddr333
%sunkaddr335 = getelementptr i8, ptr %sunkaddr334, i64 8
%.200.us65.us.us.1 = load double, ptr %sunkaddr335, align 8
%.6.i3.1 = fadd double %.200.us65.us.us.1, 2.000000e+00
%sunkaddr336 = mul i64 %loop.index.151.us56.us.us, 8
%sunkaddr337 = getelementptr i8, ptr %.6.i, i64 %sunkaddr336
%sunkaddr338 = getelementptr i8, ptr %sunkaddr337, i64 8
store double %.6.i3.1, ptr %sunkaddr338, align 8
%sunkaddr339 = mul i64 %loop.index.151.us56.us.us, 8
%sunkaddr340 = getelementptr i8, ptr %arg.arr1.4, i64 %sunkaddr339
%sunkaddr341 = getelementptr i8, ptr %sunkaddr340, i64 16
%.200.us65.us.us.2 = load double, ptr %sunkaddr341, align 8
%.6.i3.2 = fadd double %.200.us65.us.us.2, 2.000000e+00
%sunkaddr342 = mul i64 %loop.index.151.us56.us.us, 8
%sunkaddr343 = getelementptr i8, ptr %.6.i, i64 %sunkaddr342
%sunkaddr344 = getelementptr i8, ptr %sunkaddr343, i64 16
store double %.6.i3.2, ptr %sunkaddr344, align 8
%sunkaddr345 = mul i64 %loop.index.151.us56.us.us, 8
%sunkaddr346 = getelementptr i8, ptr %arg.arr1.4, i64 %sunkaddr345
%sunkaddr347 = getelementptr i8, ptr %sunkaddr346, i64 24
%.200.us65.us.us.3 = load double, ptr %sunkaddr347, align 8
%.6.i3.3 = fadd double %.200.us65.us.us.3, 2.000000e+00
%sunkaddr348 = mul i64 %loop.index.151.us56.us.us, 8
%sunkaddr349 = getelementptr i8, ptr %.6.i, i64 %sunkaddr348
%sunkaddr350 = getelementptr i8, ptr %sunkaddr349, i64 24
store double %.6.i3.3, ptr %sunkaddr350, align 8
%sunkaddr351 = mul i64 %loop.index.151.us56.us.us, 8
%sunkaddr352 = getelementptr i8, ptr %arg.arr1.4, i64 %sunkaddr351
%sunkaddr353 = getelementptr i8, ptr %sunkaddr352, i64 32
%.200.us65.us.us.4 = load double, ptr %sunkaddr353, align 8
%.6.i3.4 = fadd double %.200.us65.us.us.4, 2.000000e+00
%sunkaddr354 = mul i64 %loop.index.151.us56.us.us, 8
%sunkaddr355 = getelementptr i8, ptr %.6.i, i64 %sunkaddr354
%sunkaddr356 = getelementptr i8, ptr %sunkaddr355, i64 32
store double %.6.i3.4, ptr %sunkaddr356, align 8
%sunkaddr357 = mul i64 %loop.index.151.us56.us.us, 8
%sunkaddr358 = getelementptr i8, ptr %arg.arr1.4, i64 %sunkaddr357
%sunkaddr359 = getelementptr i8, ptr %sunkaddr358, i64 40
%.200.us65.us.us.5 = load double, ptr %sunkaddr359, align 8
%.6.i3.5 = fadd double %.200.us65.us.us.5, 2.000000e+00
%sunkaddr360 = mul i64 %loop.index.151.us56.us.us, 8
%sunkaddr361 = getelementptr i8, ptr %.6.i, i64 %sunkaddr360
%sunkaddr362 = getelementptr i8, ptr %sunkaddr361, i64 40
store double %.6.i3.5, ptr %sunkaddr362, align 8
%sunkaddr363 = mul i64 %loop.index.151.us56.us.us, 8
%sunkaddr364 = getelementptr i8, ptr %arg.arr1.4, i64 %sunkaddr363
%sunkaddr365 = getelementptr i8, ptr %sunkaddr364, i64 48
%.200.us65.us.us.6 = load double, ptr %sunkaddr365, align 8
%.6.i3.6 = fadd double %.200.us65.us.us.6, 2.000000e+00
%sunkaddr366 = mul i64 %loop.index.151.us56.us.us, 8
%sunkaddr367 = getelementptr i8, ptr %.6.i, i64 %sunkaddr366
%sunkaddr368 = getelementptr i8, ptr %sunkaddr367, i64 48
store double %.6.i3.6, ptr %sunkaddr368, align 8
%sunkaddr369 = mul i64 %loop.index.151.us56.us.us, 8
%sunkaddr370 = getelementptr i8, ptr %arg.arr1.4, i64 %sunkaddr369
%sunkaddr371 = getelementptr i8, ptr %sunkaddr370, i64 56
%.200.us65.us.us.7 = load double, ptr %sunkaddr371, align 8
%.6.i3.7 = fadd double %.200.us65.us.us.7, 2.000000e+00
%sunkaddr372 = mul i64 %loop.index.151.us56.us.us, 8
%sunkaddr373 = getelementptr i8, ptr %.6.i, i64 %sunkaddr372
%sunkaddr374 = getelementptr i8, ptr %sunkaddr373, i64 56
store double %.6.i3.7, ptr %sunkaddr374, align 8
%.232.us61.us.us.7 = add nuw nsw i64 %loop.index.151.us56.us.us, 8
%exitcond134.not.7 = icmp eq i64 %arg.arr1.5.1.fr, %.232.us61.us.us.7
br i1 %exitcond134.not.7, label %for.end, label %for.body.1.endif.endif.endif.us58.us.us, !llvm.loop !23
for.body.1.endif.endif.endif.us86: ; preds = %for.cond.1.preheader.lr.ph.split.us.split
%.200.us84 = load double, ptr %arg.arr1.4, align 8
%.6.i4 = fadd double %.200.us84, 2.000000e+00
store double %.6.i4, ptr %.6.i, align 8
br label %for.end
B0.endif.endif.endif.if.if: ; preds = %B0.endif.endif.endif
store ptr @.const.picklebuf.92013159063168, ptr %excinfo, align 8
br label %common.ret
for.end: ; preds = %for.body.1.endif.endif.endif.us.us98.us, %for.cond.1.for.end.1_crit_edge.split.us.split.us.us.us.us, %for.body.1.endif.endif.endif.us58.us.us, %for.body.1.endif.endif.endif.us.us98.us.prol.loopexit, %for.body.1.endif.endif.endif.us58.us.us.prol.loopexit, %middle.block55, %vec.epilog.middle.block69, %vec.epilog.middle.block, %middle.block, %for.body.1.endif.endif.endif.us86, %for.cond.1.preheader.lr.ph, %B0.endif.endif.endif.endif
tail call void @NRT_decref(ptr %arg.arr1.0)
store ptr %.7.i.i, ptr %retptr, align 8
%retptr.repack30 = getelementptr inbounds nuw i8, ptr %retptr, i64 8
store ptr null, ptr %retptr.repack30, align 8
%retptr.repack32 = getelementptr inbounds nuw i8, ptr %retptr, i64 16
store i64 %.94, ptr %retptr.repack32, align 8
%retptr.repack34 = getelementptr inbounds nuw i8, ptr %retptr, i64 24
store i64 8, ptr %retptr.repack34, align 8
%retptr.repack36 = getelementptr inbounds nuw i8, ptr %retptr, i64 32
store ptr %.6.i, ptr %retptr.repack36, align 8
%retptr.repack38 = getelementptr inbounds nuw i8, ptr %retptr, i64 40
store i64 %arg.arr1.5.0.fr, ptr %retptr.repack38, align 8
%retptr.repack38.repack42 = getelementptr inbounds nuw i8, ptr %retptr, i64 48
store i64 %arg.arr1.5.1.fr, ptr %retptr.repack38.repack42, align 8
%retptr.repack40 = getelementptr inbounds nuw i8, ptr %retptr, i64 56
store i64 %.97, ptr %retptr.repack40, align 8
%retptr.repack40.repack44 = getelementptr inbounds nuw i8, ptr %retptr, i64 64
store i64 8, ptr %retptr.repack40.repack44, align 8
br label %common.ret
}
; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare { i64, i1 } @llvm.smul.with.overflow.i64(i64, i64) #0
define ptr @_ZN7cpython8__main__1fB2v1B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dE5ArrayIdLi2E1C7mutable7alignedE(ptr readnone captures(none) %py_closure, ptr %py_args, ptr readnone captures(none) %py_kws) local_unnamed_addr {
entry:
%.5 = alloca ptr, align 8
%.6 = call i32 (ptr, ptr, i64, i64, ...) @PyArg_UnpackTuple(ptr %py_args, ptr nonnull @.const.f, i64 1, i64 1, ptr nonnull %.5)
%.7 = icmp eq i32 %.6, 0
%.21 = alloca { ptr, ptr, i64, i64, ptr, [2 x i64], [2 x i64] }, align 8
%.45 = alloca { ptr, ptr, i64, i64, ptr, [2 x i64], [2 x i64] }, align 8
%excinfo = alloca ptr, align 8
store ptr null, ptr %excinfo, align 8
%.112 = alloca { ptr, ptr, i64, i64, ptr, [2 x i64], [2 x i64] }, align 8
br i1 %.7, label %common.ret, label %entry.endif, !prof !0
common.ret: ; preds = %entry.endif.endif.endif.endif.endif.if.endif.if, %entry.endif.endif.endif.endif.endif.if.if.if, %entry.endif.endif.endif.endif.endif.if.endif, %entry.endif.endif.endif.endif.if.endif.endif, %entry.endif.endif.if, %entry.endif.if, %entry
%common.ret.op = phi ptr [ null, %entry.endif.if ], [ %.116, %entry.endif.endif.endif.endif.if.endif.endif ], [ null, %entry.endif.endif.endif.endif.endif.if.if.if ], [ null, %entry ], [ null, %entry.endif.endif.if ], [ null, %entry.endif.endif.endif.endif.endif.if.endif ], [ null, %entry.endif.endif.endif.endif.endif.if.endif.if ]
ret ptr %common.ret.op
entry.endif: ; preds = %entry
%.11 = load ptr, ptr @_ZN08NumbaEnv8__main__1fB2v1B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dE5ArrayIdLi2E1C7mutable7alignedE, align 8
%.16 = icmp eq ptr %.11, null
br i1 %.16, label %entry.endif.if, label %entry.endif.endif, !prof !0
entry.endif.if: ; preds = %entry.endif
call void @PyErr_SetString(ptr nonnull @PyExc_RuntimeError, ptr nonnull @".const.missing Environment: _ZN08NumbaEnv8__main__1fB2v1B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dE5ArrayIdLi2E1C7mutable7alignedE")
br label %common.ret
entry.endif.endif: ; preds = %entry.endif
%.20 = load ptr, ptr %.5, align 8
call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %.21, i8 0, i64 72, i1 false)
%.25 = call i32 @NRT_adapt_ndarray_from_python(ptr %.20, ptr nonnull %.21)
%sunkaddr = getelementptr inbounds i8, ptr %.21, i64 24
%.29 = load i64, ptr %sunkaddr, align 8
%.30 = icmp ne i64 %.29, 8
%.31 = icmp ne i32 %.25, 0
%.32 = or i1 %.31, %.30
br i1 %.32, label %entry.endif.endif.if, label %entry.endif.endif.endif.endif, !prof !0
entry.endif.endif.if: ; preds = %entry.endif.endif
call void @PyErr_SetString(ptr nonnull @PyExc_TypeError, ptr nonnull @".const.can't unbox array from PyObject into native value. The object maybe of a different type")
br label %common.ret
entry.endif.endif.endif.endif: ; preds = %entry.endif.endif
%.36.fca.0.load = load ptr, ptr %.21, align 8
%sunkaddr1 = getelementptr inbounds i8, ptr %.21, i64 32
%.36.fca.4.load = load ptr, ptr %sunkaddr1, align 8
%sunkaddr2 = getelementptr inbounds i8, ptr %.21, i64 40
%.36.fca.5.0.load = load i64, ptr %sunkaddr2, align 8
%sunkaddr3 = getelementptr inbounds i8, ptr %.21, i64 48
%.36.fca.5.1.load = load i64, ptr %sunkaddr3, align 8
call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %.45, i8 0, i64 72, i1 false)
%.53 = call i32 @_ZN8__main__1fB2v1B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dE5ArrayIdLi2E1C7mutable7alignedE(ptr nonnull %.45, ptr nonnull %excinfo, ptr %.36.fca.0.load, ptr poison, i64 poison, i64 poison, ptr %.36.fca.4.load, i64 %.36.fca.5.0.load, i64 %.36.fca.5.1.load, i64 poison, i64 poison) #3
%.54 = load ptr, ptr %excinfo, align 8
%.63.fca.0.load = load ptr, ptr %.45, align 8
%sunkaddr4 = getelementptr inbounds i8, ptr %.45, i64 8
%.63.fca.1.load = load ptr, ptr %sunkaddr4, align 8
%sunkaddr5 = getelementptr inbounds i8, ptr %.45, i64 16
%.63.fca.2.load = load i64, ptr %sunkaddr5, align 8
%sunkaddr6 = getelementptr inbounds i8, ptr %.45, i64 24
%.63.fca.3.load = load i64, ptr %sunkaddr6, align 8
%sunkaddr7 = getelementptr inbounds i8, ptr %.45, i64 32
%.63.fca.4.load = load ptr, ptr %sunkaddr7, align 8
%sunkaddr8 = getelementptr inbounds i8, ptr %.45, i64 40
%.63.fca.5.0.load = load i64, ptr %sunkaddr8, align 8
%sunkaddr9 = getelementptr inbounds i8, ptr %.45, i64 48
%.63.fca.5.1.load = load i64, ptr %sunkaddr9, align 8
%sunkaddr10 = getelementptr inbounds i8, ptr %.45, i64 56
%.63.fca.6.0.load = load i64, ptr %sunkaddr10, align 8
%sunkaddr11 = getelementptr inbounds i8, ptr %.45, i64 64
%.63.fca.6.1.load = load i64, ptr %sunkaddr11, align 8
call void @NRT_decref(ptr %.36.fca.0.load)
%cond = icmp eq i32 %.53, 0
br i1 %cond, label %entry.endif.endif.endif.endif.if.endif, label %entry.endif.endif.endif.endif.endif.if
entry.endif.endif.endif.endif.if.endif: ; preds = %entry.endif.endif.endif.endif
%sunkaddr12 = getelementptr i8, ptr %.11, i64 24
%.93 = load ptr, ptr %sunkaddr12, align 8
%.97.not = icmp eq ptr %.93, null
br i1 %.97.not, label %entry.endif.endif.endif.endif.if.endif.else, label %entry.endif.endif.endif.endif.if.endif.if
entry.endif.endif.endif.endif.if.endif.if: ; preds = %entry.endif.endif.endif.endif.if.endif
%.99 = call ptr @PyList_GetItem(ptr nonnull %.93, i64 0)
br label %entry.endif.endif.endif.endif.if.endif.endif
entry.endif.endif.endif.endif.if.endif.else: ; preds = %entry.endif.endif.endif.endif.if.endif
call void @PyErr_SetString(ptr nonnull @PyExc_RuntimeError, ptr nonnull @".const.`env.consts` is NULL in `read_const`")
br label %entry.endif.endif.endif.endif.if.endif.endif
entry.endif.endif.endif.endif.if.endif.endif: ; preds = %entry.endif.endif.endif.endif.if.endif.else, %entry.endif.endif.endif.endif.if.endif.if
%.94.0 = phi ptr [ %.99, %entry.endif.endif.endif.endif.if.endif.if ], [ null, %entry.endif.endif.endif.endif.if.endif.else ]
%.111 = call ptr @numba_unpickle(ptr nonnull @.const.pickledata.93842500064544, i32 32, ptr nonnull @.const.pickledata.93842500064544.sha1)
store ptr %.63.fca.0.load, ptr %.112, align 8
%sunkaddr13 = getelementptr inbounds i8, ptr %.112, i64 8
store ptr %.63.fca.1.load, ptr %sunkaddr13, align 8
%sunkaddr14 = getelementptr inbounds i8, ptr %.112, i64 16
store i64 %.63.fca.2.load, ptr %sunkaddr14, align 8
%sunkaddr15 = getelementptr inbounds i8, ptr %.112, i64 24
store i64 %.63.fca.3.load, ptr %sunkaddr15, align 8
%sunkaddr16 = getelementptr inbounds i8, ptr %.112, i64 32
store ptr %.63.fca.4.load, ptr %sunkaddr16, align 8
%sunkaddr17 = getelementptr inbounds i8, ptr %.112, i64 40
store i64 %.63.fca.5.0.load, ptr %sunkaddr17, align 8
%sunkaddr18 = getelementptr inbounds i8, ptr %.112, i64 48
store i64 %.63.fca.5.1.load, ptr %sunkaddr18, align 8
%sunkaddr19 = getelementptr inbounds i8, ptr %.112, i64 56
store i64 %.63.fca.6.0.load, ptr %sunkaddr19, align 8
%sunkaddr20 = getelementptr inbounds i8, ptr %.112, i64 64
store i64 %.63.fca.6.1.load, ptr %sunkaddr20, align 8
%.116 = call ptr @NRT_adapt_ndarray_to_python_acqref(ptr nonnull %.112, ptr %.111, i32 2, i32 1, ptr %.94.0)
call void @NRT_decref(ptr %.63.fca.0.load)
br label %common.ret
entry.endif.endif.endif.endif.endif.if: ; preds = %entry.endif.endif.endif.endif
call void @PyErr_Clear()
%.126 = load { ptr, i32, ptr, ptr, i32 }, ptr %.54, align 8
%.127 = extractvalue { ptr, i32, ptr, ptr, i32 } %.126, 4
%.128 = icmp sgt i32 %.127, 0
%.131 = extractvalue { ptr, i32, ptr, ptr, i32 } %.126, 0
%.133 = extractvalue { ptr, i32, ptr, ptr, i32 } %.126, 1
br i1 %.128, label %entry.endif.endif.endif.endif.endif.if.if, label %entry.endif.endif.endif.endif.endif.if.else
entry.endif.endif.endif.endif.endif.if.if: ; preds = %entry.endif.endif.endif.endif.endif.if
%.134 = sext i32 %.133 to i64
%.135 = call ptr @PyBytes_FromStringAndSize(ptr %.131, i64 %.134)
%.136 = load { ptr, i32, ptr, ptr, i32 }, ptr %.54, align 8
%.137 = extractvalue { ptr, i32, ptr, ptr, i32 } %.136, 2
%.139 = extractvalue { ptr, i32, ptr, ptr, i32 } %.136, 3
%.141 = call ptr %.139(ptr %.137)
%.142 = icmp eq ptr %.141, null
br i1 %.142, label %entry.endif.endif.endif.endif.endif.if.if.if, label %entry.endif.endif.endif.endif.endif.if.if.endif, !prof !0
entry.endif.endif.endif.endif.endif.if.else: ; preds = %entry.endif.endif.endif.endif.endif.if
%.155 = extractvalue { ptr, i32, ptr, ptr, i32 } %.126, 2
%.156 = call ptr @numba_unpickle(ptr %.131, i32 %.133, ptr %.155)
br label %entry.endif.endif.endif.endif.endif.if.endif
entry.endif.endif.endif.endif.endif.if.endif: ; preds = %entry.endif.endif.endif.endif.endif.if.if.endif, %entry.endif.endif.endif.endif.endif.if.else
%.158 = phi ptr [ %.146, %entry.endif.endif.endif.endif.endif.if.if.endif ], [ %.156, %entry.endif.endif.endif.endif.endif.if.else ]
%.159.not = icmp eq ptr %.158, null
br i1 %.159.not, label %common.ret, label %entry.endif.endif.endif.endif.endif.if.endif.if, !prof !0
entry.endif.endif.endif.endif.endif.if.if.if: ; preds = %entry.endif.endif.endif.endif.endif.if.if
call void @PyErr_SetString(ptr nonnull @PyExc_RuntimeError, ptr nonnull @".const.Error creating Python tuple from runtime exception arguments")
br label %common.ret
entry.endif.endif.endif.endif.endif.if.if.endif: ; preds = %entry.endif.endif.endif.endif.endif.if.if
%.146 = call ptr @numba_runtime_build_excinfo_struct(ptr %.135, ptr nonnull %.141)
call void @NRT_Free(ptr nonnull %.54)
br label %entry.endif.endif.endif.endif.endif.if.endif
entry.endif.endif.endif.endif.endif.if.endif.if: ; preds = %entry.endif.endif.endif.endif.endif.if.endif
call void @numba_do_raise(ptr nonnull %.158)
br label %common.ret
}
declare i32 @PyArg_UnpackTuple(ptr, ptr, i64, i64, ...) local_unnamed_addr
declare void @PyErr_SetString(ptr, ptr) local_unnamed_addr
; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr writeonly captures(none), i8, i64, i1 immarg) #1
declare i32 @NRT_adapt_ndarray_from_python(ptr captures(none), ptr captures(none)) local_unnamed_addr
declare ptr @PyList_GetItem(ptr, i64) local_unnamed_addr
declare ptr @numba_unpickle(ptr, i32, ptr) local_unnamed_addr
declare ptr @NRT_adapt_ndarray_to_python_acqref(ptr captures(none), ptr, i32, i32, ptr) local_unnamed_addr
declare void @PyErr_Clear() local_unnamed_addr
declare ptr @PyBytes_FromStringAndSize(ptr, i64) local_unnamed_addr
declare ptr @numba_runtime_build_excinfo_struct(ptr, ptr) local_unnamed_addr
declare void @NRT_Free(ptr) local_unnamed_addr
declare void @numba_do_raise(ptr) local_unnamed_addr
define { ptr, ptr, i64, i64, ptr, [2 x i64], [2 x i64] } @cfunc._ZN8__main__1fB2v1B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dE5ArrayIdLi2E1C7mutable7alignedE({ ptr, ptr, i64, i64, ptr, [2 x i64], [2 x i64] } %.1) local_unnamed_addr {
entry:
%.3 = alloca { ptr, ptr, i64, i64, ptr, [2 x i64], [2 x i64] }, align 8
%.fca.1.gep = getelementptr inbounds nuw i8, ptr %.3, i64 8
%.fca.2.gep = getelementptr inbounds nuw i8, ptr %.3, i64 16
%.fca.3.gep = getelementptr inbounds nuw i8, ptr %.3, i64 24
%.fca.4.gep = getelementptr inbounds nuw i8, ptr %.3, i64 32
%.fca.5.0.gep = getelementptr inbounds nuw i8, ptr %.3, i64 40
%.fca.5.1.gep = getelementptr inbounds nuw i8, ptr %.3, i64 48
%.fca.6.0.gep = getelementptr inbounds nuw i8, ptr %.3, i64 56
%.fca.6.1.gep = getelementptr inbounds nuw i8, ptr %.3, i64 64
%excinfo = alloca ptr, align 8
call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %.3, i8 0, i64 72, i1 false)
store ptr null, ptr %excinfo, align 8
%extracted.meminfo = extractvalue { ptr, ptr, i64, i64, ptr, [2 x i64], [2 x i64] } %.1, 0
%extracted.data = extractvalue { ptr, ptr, i64, i64, ptr, [2 x i64], [2 x i64] } %.1, 4
%extracted.shape = extractvalue { ptr, ptr, i64, i64, ptr, [2 x i64], [2 x i64] } %.1, 5
%.7 = extractvalue [2 x i64] %extracted.shape, 0
%.8 = extractvalue [2 x i64] %extracted.shape, 1
%.11 = call i32 @_ZN8__main__1fB2v1B38c8tJTIeFIjxB2IKSgI4CrvQClQZ6FczSBAA_3dE5ArrayIdLi2E1C7mutable7alignedE(ptr nonnull %.3, ptr nonnull %excinfo, ptr %extracted.meminfo, ptr poison, i64 poison, i64 poison, ptr %extracted.data, i64 %.7, i64 %.8, i64 poison, i64 poison) #3
%.12 = load ptr, ptr %excinfo, align 8
%.21.fca.0.load = load ptr, ptr %.3, align 8
%.21.fca.1.load = load ptr, ptr %.fca.1.gep, align 8
%.21.fca.2.load = load i64, ptr %.fca.2.gep, align 8
%.21.fca.3.load = load i64, ptr %.fca.3.gep, align 8
%.21.fca.4.load = load ptr, ptr %.fca.4.gep, align 8
%.21.fca.5.0.load = load i64, ptr %.fca.5.0.gep, align 8
%.21.fca.5.1.load = load i64, ptr %.fca.5.1.gep, align 8
%.21.fca.6.0.load = load i64, ptr %.fca.6.0.gep, align 8
%.21.fca.6.1.load = load i64, ptr %.fca.6.1.gep, align 8
%inserted.meminfo = insertvalue { ptr, ptr, i64, i64, ptr, [2 x i64], [2 x i64] } undef, ptr %.21.fca.0.load, 0
%inserted.parent = insertvalue { ptr, ptr, i64, i64, ptr, [2 x i64], [2 x i64] } %inserted.meminfo, ptr %.21.fca.1.load, 1
%inserted.nitems = insertvalue { ptr, ptr, i64, i64, ptr, [2 x i64], [2 x i64] } %inserted.parent, i64 %.21.fca.2.load, 2
%inserted.itemsize = insertvalue { ptr, ptr, i64, i64, ptr, [2 x i64], [2 x i64] } %inserted.nitems, i64 %.21.fca.3.load, 3
%inserted.data = insertvalue { ptr, ptr, i64, i64, ptr, [2 x i64], [2 x i64] } %inserted.itemsize, ptr %.21.fca.4.load, 4
%.30 = insertvalue [2 x i64] undef, i64 %.21.fca.5.0.load, 0
%.32 = insertvalue [2 x i64] %.30, i64 %.21.fca.5.1.load, 1
%inserted.shape = insertvalue { ptr, ptr, i64, i64, ptr, [2 x i64], [2 x i64] } %inserted.data, [2 x i64] %.32, 5
%.34 = insertvalue [2 x i64] undef, i64 %.21.fca.6.0.load, 0
%.36 = insertvalue [2 x i64] %.34, i64 %.21.fca.6.1.load, 1
%inserted.strides = insertvalue { ptr, ptr, i64, i64, ptr, [2 x i64], [2 x i64] } %inserted.shape, [2 x i64] %.36, 6
%.38 = alloca i32, align 4
store i32 0, ptr %.38, align 4
%cond = icmp eq i32 %.11, 0
br i1 %cond, label %common.ret, label %entry.if.if
common.ret: ; preds = %entry, %entry.if.if.if.if, %.41
%common.ret.op = phi { ptr, ptr, i64, i64, ptr, [2 x i64], [2 x i64] } [ zeroinitializer, %entry.if.if.if.if ], [ %inserted.strides, %.41 ], [ %inserted.strides, %entry ]
ret { ptr, ptr, i64, i64, ptr, [2 x i64], [2 x i64] } %common.ret.op
.41: ; preds = %entry.if.if.endif.if, %entry.if.if.endif
%.89 = call ptr @PyUnicode_FromString(ptr nonnull @".const.<numba.core.cpu.CPUContext object at 0x53af7c21d190>")
call void @PyErr_WriteUnraisable(ptr %.89)
call void @Py_DecRef(ptr %.89)
call void @numba_gil_release(ptr nonnull %.38)
br label %common.ret
entry.if.if: ; preds = %entry
call void @numba_gil_ensure(ptr nonnull %.38)
call void @PyErr_Clear()
%.44 = load { ptr, i32, ptr, ptr, i32 }, ptr %.12, align 8
%.45 = extractvalue { ptr, i32, ptr, ptr, i32 } %.44, 4
%.46 = icmp sgt i32 %.45, 0
%.49 = extractvalue { ptr, i32, ptr, ptr, i32 } %.44, 0
%.51 = extractvalue { ptr, i32, ptr, ptr, i32 } %.44, 1
br i1 %.46, label %entry.if.if.if, label %entry.if.if.else
entry.if.if.if: ; preds = %entry.if.if
%.52 = sext i32 %.51 to i64
%.53 = call ptr @PyBytes_FromStringAndSize(ptr %.49, i64 %.52)
%.54 = load { ptr, i32, ptr, ptr, i32 }, ptr %.12, align 8
%.55 = extractvalue { ptr, i32, ptr, ptr, i32 } %.54, 2
%.57 = extractvalue { ptr, i32, ptr, ptr, i32 } %.54, 3
%.59 = call ptr %.57(ptr %.55)
%.60 = icmp eq ptr %.59, null
br i1 %.60, label %entry.if.if.if.if, label %entry.if.if.if.endif, !prof !0
entry.if.if.else: ; preds = %entry.if.if
%.73 = extractvalue { ptr, i32, ptr, ptr, i32 } %.44, 2
%.74 = call ptr @numba_unpickle(ptr %.49, i32 %.51, ptr %.73)
br label %entry.if.if.endif
entry.if.if.endif: ; preds = %entry.if.if.if.endif, %entry.if.if.else
%.76 = phi ptr [ %.64, %entry.if.if.if.endif ], [ %.74, %entry.if.if.else ]
%.77.not = icmp eq ptr %.76, null
br i1 %.77.not, label %.41, label %entry.if.if.endif.if, !prof !0
entry.if.if.if.if: ; preds = %entry.if.if.if
call void @PyErr_SetString(ptr nonnull @PyExc_RuntimeError, ptr nonnull @".const.Error creating Python tuple from runtime exception arguments.1")
br label %common.ret
entry.if.if.if.endif: ; preds = %entry.if.if.if
%.64 = call ptr @numba_runtime_build_excinfo_struct(ptr %.53, ptr nonnull %.59)
call void @NRT_Free(ptr nonnull %.12)
br label %entry.if.if.endif
entry.if.if.endif.if: ; preds = %entry.if.if.endif
call void @numba_do_raise(ptr nonnull %.76)
br label %.41
}
declare void @numba_gil_ensure(ptr) local_unnamed_addr
declare ptr @PyUnicode_FromString(ptr) local_unnamed_addr
declare void @PyErr_WriteUnraisable(ptr) local_unnamed_addr
declare void @Py_DecRef(ptr) local_unnamed_addr
declare void @numba_gil_release(ptr) local_unnamed_addr
declare noalias ptr @NRT_MemInfo_alloc_aligned(i64, i32) local_unnamed_addr
; Function Attrs: mustprogress nofree noinline norecurse nounwind willreturn memory(argmem: readwrite)
define linkonce_odr void @NRT_incref(ptr %.1) local_unnamed_addr #2 {
.3:
%.4 = icmp eq ptr %.1, null
br i1 %.4, label %common.ret, label %.3.endif, !prof !0
common.ret: ; preds = %.3.endif, %.3
ret void
.3.endif: ; preds = %.3
%.4.i = atomicrmw add ptr %.1, i64 1 monotonic, align 8
br label %common.ret
}
; Function Attrs: noinline
define linkonce_odr void @NRT_decref(ptr %.1) local_unnamed_addr #3 {
.3:
%.4 = icmp eq ptr %.1, null
br i1 %.4, label %common.ret1, label %.3.endif, !prof !0
common.ret1: ; preds = %.3, %.3.endif
ret void
.3.endif: ; preds = %.3
fence release
%0 = tail call i8 @llvm.x86.atomic.sub.cc.i64(ptr nonnull %.1, i64 1, i32 4)
%1 = trunc i8 %0 to i1
br i1 %1, label %.3.endif.if, label %common.ret1, !prof !0
.3.endif.if: ; preds = %.3.endif
fence acquire
tail call void @NRT_MemInfo_call_dtor(ptr nonnull %.1)
ret void
}
; Function Attrs: nounwind
declare i8 @llvm.x86.atomic.sub.cc.i64(ptr, i64, i32 immarg) #4
declare void @NRT_MemInfo_call_dtor(ptr) local_unnamed_addr
attributes #0 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #1 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #2 = { mustprogress nofree noinline norecurse nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { noinline }
attributes #4 = { nounwind }
!0 = !{!"branch_weights", i32 1, i32 99}
!1 = !{i1 true}
!2 = !{!3, !5, !6, !8}
!3 = distinct !{!3, !4, !"_ZN5numba2np8arrayobj18_ol_array_allocate12_3clocals_3e4implB2v5B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj: %retptr"}
!4 = distinct !{!4, !"_ZN5numba2np8arrayobj18_ol_array_allocate12_3clocals_3e4implB2v5B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj"}
!5 = distinct !{!5, !4, !"_ZN5numba2np8arrayobj18_ol_array_allocate12_3clocals_3e4implB2v5B42c8tJTIeFIjxB2IKSgI4CrvQClcaMQ5hEEUSJJgA_3dEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj: %excinfo"}
!6 = distinct !{!6, !7, !"_ZN5numba2np8arrayobj15_call_allocatorB2v4B42c8tJTC_2fWQA93W1AaAIYBPIqRBFCjDSZRVAJmaQIAEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj: %retptr"}
!7 = distinct !{!7, !"_ZN5numba2np8arrayobj15_call_allocatorB2v4B42c8tJTC_2fWQA93W1AaAIYBPIqRBFCjDSZRVAJmaQIAEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj"}
!8 = distinct !{!8, !7, !"_ZN5numba2np8arrayobj15_call_allocatorB2v4B42c8tJTC_2fWQA93W1AaAIYBPIqRBFCjDSZRVAJmaQIAEN29typeref_5b_3cclass_20_27numba4core5types8npytypes14Array_27_3e_5dExj: %excinfo"}
!9 = distinct !{!9, !10, !11}
!10 = !{!"llvm.loop.isvectorized", i32 1}
!11 = !{!"llvm.loop.unroll.runtime.disable"}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.unroll.disable"}
!14 = distinct !{!14, !10, !11}
!15 = distinct !{!15, !10, !11}
!16 = distinct !{!16, !10, !11}
!17 = distinct !{!17, !13}
!18 = distinct !{!18, !10}
!19 = distinct !{!19, !10}
!20 = distinct !{!20, !10, !11}
!21 = distinct !{!21, !10, !11}
!22 = distinct !{!22, !13}
!23 = distinct !{!23, !10}