Skip to content

Instantly share code, notes, and snippets.

@bluss
Created October 13, 2016 16:54
Show Gist options
  • Save bluss/48b6457a7af18232ca1d6b1c9a6ef6b5 to your computer and use it in GitHub Desktop.
Save bluss/48b6457a7af18232ca1d6b1c9a6ef6b5 to your computer and use it in GitHub Desktop.
; ModuleID = 'bench1.cgu-0.rs'
source_filename = "bench1.cgu-0.rs"
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
%str_slice = type { i8*, i64 }
%"12.test::Bencher" = type { i64, %"1.std::time::Duration", i64 }
%"1.std::time::Duration" = type { i64, i32 }
%"15.ndarray::ArrayBase<ndarray::ViewRepr<&i32>, (usize, usize)>" = type { %"15.ndarray::ViewRepr<&i32>", i32*, { i64, i64 }, { i64, i64 } }
%"15.ndarray::ViewRepr<&i32>" = type { %"2.std::marker::PhantomData<&i32>" }
%"2.std::marker::PhantomData<&i32>" = type {}
%"1.std::time::Instant" = type { %"1.std::sys::time::inner::Instant" }
%"1.std::sys::time::inner::Instant" = type { %"1.std::sys::time::Timespec" }
%"1.std::sys::time::Timespec" = type { %"7.libc::unix::timespec" }
%"7.libc::unix::timespec" = type { i64, i64 }
%"15.ndarray::ArrayBase<std::vec::Vec<i32>, (usize, usize)>" = type { %"3.std::vec::Vec<i32>", i32*, { i64, i64 }, { i64, i64 } }
%"3.std::vec::Vec<i32>" = type { %"5.alloc::raw_vec::RawVec<i32>", i64 }
%"5.alloc::raw_vec::RawVec<i32>" = type { %"2.std::ptr::Unique<i32>", i64 }
%"2.std::ptr::Unique<i32>" = type { %"2.core::nonzero::NonZero<*const i32>", %"2.std::marker::PhantomData<i32>" }
%"2.core::nonzero::NonZero<*const i32>" = type { i32* }
%"2.std::marker::PhantomData<i32>" = type {}
%"12.test::TestDescAndFn" = type { %"12.test::TestDesc", %"12.test::TestFn" }
%"12.test::TestDesc" = type { %"12.test::TestName", i8, %"12.test::ShouldPanic" }
%"12.test::TestName" = type { i64, [0 x i64], [3 x i64] }
%"12.test::ShouldPanic" = type { i64, [0 x i64], [2 x i64] }
%"12.test::TestFn" = type { i64, [0 x i64], [2 x i64] }
%"8.unwind::libunwind::_Unwind_Exception" = type { i64, void (i32, %"8.unwind::libunwind::_Unwind_Exception"*)*, [6 x i64] }
%"8.unwind::libunwind::_Unwind_Context" = type {}
@str10697 = internal constant [29 x i8] c"iter_sum_2d_transpose_regular"
@ref10698 = internal unnamed_addr constant { { { { i64, %str_slice, [8 x i8] }, i1, [7 x i8], { i64, [16 x i8] } }, { i64, void (%"12.test::Bencher"*)*, [8 x i8] } } } { { { { i64, %str_slice, [8 x i8] }, i1, [7 x i8], { i64, [16 x i8] } }, { i64, void (%"12.test::Bencher"*)*, [8 x i8] } } { { { i64, %str_slice, [8 x i8] }, i1, [7 x i8], { i64, [16 x i8] } } { { i64, %str_slice, [8 x i8] } { i64 0, %str_slice { i8* getelementptr inbounds ([29 x i8], [29 x i8]* @str10697, i32 0, i32 0), i64 29 }, [8 x i8] undef }, i1 false, [7 x i8] undef, { i64, [16 x i8] } { i64 0, [16 x i8] undef } }, { i64, void (%"12.test::Bencher"*)*, [8 x i8] } { i64 1, void (%"12.test::Bencher"*)* @_ZN6bench129iter_sum_2d_transpose_regular17h06748f26b74ef457E, [8 x i8] undef } } }, align 8
; Function Attrs: uwtable
define internal void @_ZN6bench129iter_sum_2d_transpose_regular17h06748f26b74ef457E(%"12.test::Bencher"* nocapture dereferenceable(32)) unnamed_addr #0 personality i32 (i32, i32, i64, %"8.unwind::libunwind::_Unwind_Exception"*, %"8.unwind::libunwind::_Unwind_Context"*)* @rust_eh_personality {
bb6.i.i.i.i.i:
%defaults.i.i.i.i.i.i = alloca { i64, i64 }, align 8
%self.i.i.i.i = alloca %"15.ndarray::ArrayBase<ndarray::ViewRepr<&i32>, (usize, usize)>", align 8
%dummy.i.i = alloca i32, align 4
%start1.i = alloca %"1.std::time::Instant", align 8
%tmp_ret2.i = alloca %"1.std::time::Duration", align 8
%dummy.i = alloca %"15.ndarray::ArrayBase<std::vec::Vec<i32>, (usize, usize)>", align 8
%1 = tail call i8* @__rust_allocate(i64 16384, i64 4) #2, !noalias !1
%2 = icmp eq i8* %1, null
br i1 %2, label %bb10.i.i.i.i.i, label %bb4
bb10.i.i.i.i.i: ; preds = %bb6.i.i.i.i.i
invoke void @_ZN5alloc3oom3oom17hb4382286715c86b5E()
to label %.noexc20 unwind label %cleanup
.noexc20: ; preds = %bb10.i.i.i.i.i
unreachable
bb1: ; preds = %bb6.i.i.i.i.i29, %bb9, %cleanup
%personalityslot.sroa.5.0 = phi i32 [ %.fca.1.extract, %cleanup ], [ %.fca.1.extract7, %bb9 ], [ %.fca.1.extract7, %bb6.i.i.i.i.i29 ]
%personalityslot.sroa.0.0 = phi i8* [ %.fca.0.extract4, %cleanup ], [ %.fca.0.extract5, %bb9 ], [ %.fca.0.extract5, %bb6.i.i.i.i.i29 ]
%.fca.0.insert = insertvalue { i8*, i32 } undef, i8* %personalityslot.sroa.0.0, 0
%.fca.1.insert = insertvalue { i8*, i32 } %.fca.0.insert, i32 %personalityslot.sroa.5.0, 1
resume { i8*, i32 } %.fca.1.insert
bb4: ; preds = %bb6.i.i.i.i.i
%3 = ptrtoint i8* %1 to i64
%4 = bitcast %"15.ndarray::ArrayBase<std::vec::Vec<i32>, (usize, usize)>"* %dummy.i to i8*
call void @llvm.memset.p0i8.i64(i8* nonnull %1, i8 0, i64 16384, i32 4, i1 false)
call void @llvm.lifetime.start(i64 64, i8* %4) #2, !noalias !12
%_9.sroa.0.0..sroa_cast = bitcast %"15.ndarray::ArrayBase<std::vec::Vec<i32>, (usize, usize)>"* %dummy.i to i64*
store i64 %3, i64* %_9.sroa.0.0..sroa_cast, align 8
%_9.sroa.4.0..sroa_idx66 = getelementptr inbounds %"15.ndarray::ArrayBase<std::vec::Vec<i32>, (usize, usize)>", %"15.ndarray::ArrayBase<std::vec::Vec<i32>, (usize, usize)>"* %dummy.i, i64 0, i32 0, i32 0, i32 1
store i64 4096, i64* %_9.sroa.4.0..sroa_idx66, align 8
%_9.sroa.5.0..sroa_idx68 = getelementptr inbounds %"15.ndarray::ArrayBase<std::vec::Vec<i32>, (usize, usize)>", %"15.ndarray::ArrayBase<std::vec::Vec<i32>, (usize, usize)>"* %dummy.i, i64 0, i32 0, i32 1
store i64 4096, i64* %_9.sroa.5.0..sroa_idx68, align 8
%_9.sroa.6.0..sroa_idx70 = getelementptr inbounds %"15.ndarray::ArrayBase<std::vec::Vec<i32>, (usize, usize)>", %"15.ndarray::ArrayBase<std::vec::Vec<i32>, (usize, usize)>"* %dummy.i, i64 0, i32 1
%_9.sroa.6.0..sroa_cast = bitcast i32** %_9.sroa.6.0..sroa_idx70 to i64*
store i64 %3, i64* %_9.sroa.6.0..sroa_cast, align 8
%_9.sroa.7.0..sroa_idx72 = getelementptr inbounds %"15.ndarray::ArrayBase<std::vec::Vec<i32>, (usize, usize)>", %"15.ndarray::ArrayBase<std::vec::Vec<i32>, (usize, usize)>"* %dummy.i, i64 0, i32 2, i32 0
%_9.sroa.8.0..sroa_idx74 = getelementptr inbounds %"15.ndarray::ArrayBase<std::vec::Vec<i32>, (usize, usize)>", %"15.ndarray::ArrayBase<std::vec::Vec<i32>, (usize, usize)>"* %dummy.i, i64 0, i32 2, i32 1
%_9.sroa.9.0..sroa_idx76 = getelementptr inbounds %"15.ndarray::ArrayBase<std::vec::Vec<i32>, (usize, usize)>", %"15.ndarray::ArrayBase<std::vec::Vec<i32>, (usize, usize)>"* %dummy.i, i64 0, i32 3, i32 0
%_9.sroa.10.0..sroa_idx78 = getelementptr inbounds %"15.ndarray::ArrayBase<std::vec::Vec<i32>, (usize, usize)>", %"15.ndarray::ArrayBase<std::vec::Vec<i32>, (usize, usize)>"* %dummy.i, i64 0, i32 3, i32 1
%5 = bitcast i64* %_9.sroa.7.0..sroa_idx72 to <4 x i64>*
store <4 x i64> <i64 64, i64 64, i64 1, i64 64>, <4 x i64>* %5, align 8
call void asm "", "r,~{dirflag},~{fpsr},~{flags}"(%"15.ndarray::ArrayBase<std::vec::Vec<i32>, (usize, usize)>"* nonnull %dummy.i) #2, !noalias !12, !srcloc !16
%a1.sroa.0.0..sroa_cast = bitcast %"15.ndarray::ArrayBase<std::vec::Vec<i32>, (usize, usize)>"* %dummy.i to i8**
%a1.sroa.0.0.copyload = load i8*, i8** %a1.sroa.0.0..sroa_cast, align 8
%a1.sroa.5.0.copyload = load i64, i64* %_9.sroa.4.0..sroa_idx66, align 8
%a1.sroa.739.0.copyload = load i64, i64* %_9.sroa.6.0..sroa_cast, align 8
%a1.sroa.8.0.copyload = load i64, i64* %_9.sroa.7.0..sroa_idx72, align 8
%a1.sroa.9.0.copyload = load i64, i64* %_9.sroa.8.0..sroa_idx74, align 8
%a1.sroa.10.0.copyload = load i64, i64* %_9.sroa.9.0..sroa_idx76, align 8
%a1.sroa.11.0.copyload = load i64, i64* %_9.sroa.10.0..sroa_idx78, align 8
call void @llvm.lifetime.end(i64 64, i8* %4) #2, !noalias !12
%6 = bitcast %"1.std::time::Duration"* %tmp_ret2.i to i8*
call void @llvm.lifetime.start(i64 16, i8* %6)
%7 = bitcast %"1.std::time::Instant"* %start1.i to i8*
call void @llvm.lifetime.start(i64 16, i8* %7)
invoke void @_ZN3std4time7Instant3now17h92a4d74662f63e98E(%"1.std::time::Instant"* noalias nocapture nonnull sret dereferenceable(16) %start1.i)
to label %.noexc22 unwind label %bb9
.noexc22: ; preds = %bb4
%8 = getelementptr inbounds %"12.test::Bencher", %"12.test::Bencher"* %0, i64 0, i32 0
%9 = load i64, i64* %8, align 8
%10 = icmp eq i64 %9, 0
br i1 %10, label %bb8.i, label %bb7.lr.ph.i
bb7.lr.ph.i: ; preds = %.noexc22
%11 = bitcast %"15.ndarray::ArrayBase<ndarray::ViewRepr<&i32>, (usize, usize)>"* %self.i.i.i.i to i8*
%_11.sroa.0.0..sroa_cast.i.i.i = bitcast %"15.ndarray::ArrayBase<ndarray::ViewRepr<&i32>, (usize, usize)>"* %self.i.i.i.i to i64*
%_11.sroa.4.0..sroa_idx8.i.i.i = getelementptr inbounds %"15.ndarray::ArrayBase<ndarray::ViewRepr<&i32>, (usize, usize)>", %"15.ndarray::ArrayBase<ndarray::ViewRepr<&i32>, (usize, usize)>"* %self.i.i.i.i, i64 0, i32 2, i32 0
%_11.sroa.5.0..sroa_idx10.i.i.i = getelementptr inbounds %"15.ndarray::ArrayBase<ndarray::ViewRepr<&i32>, (usize, usize)>", %"15.ndarray::ArrayBase<ndarray::ViewRepr<&i32>, (usize, usize)>"* %self.i.i.i.i, i64 0, i32 2, i32 1
%_11.sroa.6.0..sroa_idx12.i.i.i = getelementptr inbounds %"15.ndarray::ArrayBase<ndarray::ViewRepr<&i32>, (usize, usize)>", %"15.ndarray::ArrayBase<ndarray::ViewRepr<&i32>, (usize, usize)>"* %self.i.i.i.i, i64 0, i32 3, i32 0
%_11.sroa.7.0..sroa_idx14.i.i.i = getelementptr inbounds %"15.ndarray::ArrayBase<ndarray::ViewRepr<&i32>, (usize, usize)>", %"15.ndarray::ArrayBase<ndarray::ViewRepr<&i32>, (usize, usize)>"* %self.i.i.i.i, i64 0, i32 3, i32 1
%12 = bitcast { i64, i64 }* %defaults.i.i.i.i.i.i to i8*
%13 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %defaults.i.i.i.i.i.i, i64 0, i32 0
%14 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %defaults.i.i.i.i.i.i, i64 0, i32 1
%15 = bitcast i32* %dummy.i.i to i8*
%16 = icmp eq i64 %a1.sroa.10.0.copyload, %a1.sroa.9.0.copyload
%17 = icmp eq i64 %a1.sroa.11.0.copyload, 1
%or.cond.i.i.i.i.i.i.i = and i1 %16, %17
%18 = inttoptr i64 %a1.sroa.739.0.copyload to i32*
%switchtmp.i.i.i.i = icmp eq i64 %a1.sroa.739.0.copyload, 0
%19 = mul i64 %a1.sroa.9.0.copyload, %a1.sroa.8.0.copyload
%20 = getelementptr inbounds i32, i32* %18, i64 %19
%21 = icmp eq i64 %19, 0
%22 = icmp ne i64 %a1.sroa.8.0.copyload, 0
%23 = icmp ne i64 %a1.sroa.9.0.copyload, 0
%or.cond.i.i.i.i.i.i.i.i = and i1 %22, %23
%24 = mul i64 %a1.sroa.9.0.copyload, %a1.sroa.8.0.copyload
%25 = shl i64 %24, 2
%26 = add i64 %25, -4
%27 = lshr exact i64 %26, 2
%28 = add nuw nsw i64 %27, 1
br i1 %or.cond.i.i.i.i.i.i.i, label %bb7.i.us.preheader, label %bb7.i.preheader
bb7.i.preheader: ; preds = %bb7.lr.ph.i
%29 = and i64 %28, 9223372036854775792
%30 = add nsw i64 %29, -16
%31 = lshr exact i64 %30, 4
%32 = add nuw nsw i64 %31, 1
%min.iters.check = icmp ult i64 %28, 16
%n.vec = and i64 %28, 9223372036854775792
%cmp.zero = icmp eq i64 %n.vec, 0
%ind.end = getelementptr i32, i32* %18, i64 %n.vec
%xtraiter212 = and i64 %32, 1
%33 = icmp eq i64 %31, 0
%lcmp.mod213 = icmp eq i64 %xtraiter212, 0
%cmp.n = icmp eq i64 %28, %n.vec
%unroll_iter214 = sub nsw i64 %32, %xtraiter212
br label %bb7.i
bb7.i.us.preheader: ; preds = %bb7.lr.ph.i
%34 = and i64 %28, 9223372036854775792
%35 = add nsw i64 %34, -16
%36 = lshr exact i64 %35, 4
%37 = add nuw nsw i64 %36, 1
%min.iters.check137 = icmp ult i64 %28, 16
%n.vec140 = and i64 %28, 9223372036854775792
%cmp.zero141 = icmp eq i64 %n.vec140, 0
%ind.end146 = getelementptr i32, i32* %18, i64 %n.vec140
%xtraiter = and i64 %37, 1
%38 = icmp eq i64 %36, 0
%lcmp.mod = icmp eq i64 %xtraiter, 0
%cmp.n147 = icmp eq i64 %28, %n.vec140
%unroll_iter = sub nsw i64 %37, %xtraiter
br label %bb7.i.us
bb7.i.us: ; preds = %bb7.i.us.preheader, %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hff6dac657e135198E.exit.i.us"
%iter.sroa.0.035.i.us = phi i64 [ %39, %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hff6dac657e135198E.exit.i.us" ], [ 0, %bb7.i.us.preheader ]
%39 = add nuw i64 %iter.sroa.0.035.i.us, 1
br i1 %switchtmp.i.i.i.i, label %bb3.us.preheader.i.i.us, label %bb3.preheader.i.i.us
bb3.preheader.i.i.us: ; preds = %bb7.i.us
br i1 %21, label %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hff6dac657e135198E.exit.i.us", label %bb6.i.i21.us.preheader
bb6.i.i21.us.preheader: ; preds = %bb3.preheader.i.i.us
br i1 %min.iters.check137, label %bb6.i.i21.us.preheader198, label %min.iters.checked138
min.iters.checked138: ; preds = %bb6.i.i21.us.preheader
br i1 %cmp.zero141, label %bb6.i.i21.us.preheader198, label %vector.body134.preheader
vector.body134.preheader: ; preds = %min.iters.checked138
br i1 %38, label %middle.block135.unr-lcssa, label %vector.body134.preheader.new
vector.body134.preheader.new: ; preds = %vector.body134.preheader
br label %vector.body134
vector.body134: ; preds = %vector.body134, %vector.body134.preheader.new
%index143 = phi i64 [ 0, %vector.body134.preheader.new ], [ %index.next144.1, %vector.body134 ]
%vec.phi148 = phi <4 x i32> [ zeroinitializer, %vector.body134.preheader.new ], [ %58, %vector.body134 ]
%vec.phi149 = phi <4 x i32> [ zeroinitializer, %vector.body134.preheader.new ], [ %59, %vector.body134 ]
%vec.phi150 = phi <4 x i32> [ zeroinitializer, %vector.body134.preheader.new ], [ %60, %vector.body134 ]
%vec.phi151 = phi <4 x i32> [ zeroinitializer, %vector.body134.preheader.new ], [ %61, %vector.body134 ]
%niter = phi i64 [ %unroll_iter, %vector.body134.preheader.new ], [ %niter.nsub.1, %vector.body134 ]
%next.gep152 = getelementptr i32, i32* %18, i64 %index143
%40 = bitcast i32* %next.gep152 to <4 x i32>*
%wide.load184 = load <4 x i32>, <4 x i32>* %40, align 4
%41 = getelementptr i32, i32* %next.gep152, i64 4
%42 = bitcast i32* %41 to <4 x i32>*
%wide.load185 = load <4 x i32>, <4 x i32>* %42, align 4
%43 = getelementptr i32, i32* %next.gep152, i64 8
%44 = bitcast i32* %43 to <4 x i32>*
%wide.load186 = load <4 x i32>, <4 x i32>* %44, align 4
%45 = getelementptr i32, i32* %next.gep152, i64 12
%46 = bitcast i32* %45 to <4 x i32>*
%wide.load187 = load <4 x i32>, <4 x i32>* %46, align 4
%47 = add <4 x i32> %wide.load184, %vec.phi148
%48 = add <4 x i32> %wide.load185, %vec.phi149
%49 = add <4 x i32> %wide.load186, %vec.phi150
%50 = add <4 x i32> %wide.load187, %vec.phi151
%index.next144 = or i64 %index143, 16
%next.gep152.1 = getelementptr i32, i32* %18, i64 %index.next144
%51 = bitcast i32* %next.gep152.1 to <4 x i32>*
%wide.load184.1 = load <4 x i32>, <4 x i32>* %51, align 4
%52 = getelementptr i32, i32* %next.gep152.1, i64 4
%53 = bitcast i32* %52 to <4 x i32>*
%wide.load185.1 = load <4 x i32>, <4 x i32>* %53, align 4
%54 = getelementptr i32, i32* %next.gep152.1, i64 8
%55 = bitcast i32* %54 to <4 x i32>*
%wide.load186.1 = load <4 x i32>, <4 x i32>* %55, align 4
%56 = getelementptr i32, i32* %next.gep152.1, i64 12
%57 = bitcast i32* %56 to <4 x i32>*
%wide.load187.1 = load <4 x i32>, <4 x i32>* %57, align 4
%58 = add <4 x i32> %wide.load184.1, %47
%59 = add <4 x i32> %wide.load185.1, %48
%60 = add <4 x i32> %wide.load186.1, %49
%61 = add <4 x i32> %wide.load187.1, %50
%index.next144.1 = add i64 %index143, 32
%niter.nsub.1 = add i64 %niter, -2
%niter.ncmp.1 = icmp eq i64 %niter.nsub.1, 0
br i1 %niter.ncmp.1, label %middle.block135.unr-lcssa.loopexit, label %vector.body134, !llvm.loop !17
middle.block135.unr-lcssa.loopexit: ; preds = %vector.body134
br label %middle.block135.unr-lcssa
middle.block135.unr-lcssa: ; preds = %middle.block135.unr-lcssa.loopexit, %vector.body134.preheader
%.lcssa205.ph = phi <4 x i32> [ undef, %vector.body134.preheader ], [ %58, %middle.block135.unr-lcssa.loopexit ]
%.lcssa204.ph = phi <4 x i32> [ undef, %vector.body134.preheader ], [ %59, %middle.block135.unr-lcssa.loopexit ]
%.lcssa203.ph = phi <4 x i32> [ undef, %vector.body134.preheader ], [ %60, %middle.block135.unr-lcssa.loopexit ]
%.lcssa.ph = phi <4 x i32> [ undef, %vector.body134.preheader ], [ %61, %middle.block135.unr-lcssa.loopexit ]
%index143.unr = phi i64 [ 0, %vector.body134.preheader ], [ %index.next144.1, %middle.block135.unr-lcssa.loopexit ]
%vec.phi148.unr = phi <4 x i32> [ zeroinitializer, %vector.body134.preheader ], [ %58, %middle.block135.unr-lcssa.loopexit ]
%vec.phi149.unr = phi <4 x i32> [ zeroinitializer, %vector.body134.preheader ], [ %59, %middle.block135.unr-lcssa.loopexit ]
%vec.phi150.unr = phi <4 x i32> [ zeroinitializer, %vector.body134.preheader ], [ %60, %middle.block135.unr-lcssa.loopexit ]
%vec.phi151.unr = phi <4 x i32> [ zeroinitializer, %vector.body134.preheader ], [ %61, %middle.block135.unr-lcssa.loopexit ]
br i1 %lcmp.mod, label %middle.block135, label %vector.body134.epil.preheader
vector.body134.epil.preheader: ; preds = %middle.block135.unr-lcssa
br label %vector.body134.epil
vector.body134.epil: ; preds = %vector.body134.epil.preheader
%next.gep152.epil = getelementptr i32, i32* %18, i64 %index143.unr
br label %middle.block135.epilog-lcssa
middle.block135.epilog-lcssa: ; preds = %vector.body134.epil
%62 = getelementptr i32, i32* %next.gep152.epil, i64 12
%63 = bitcast i32* %62 to <4 x i32>*
%wide.load187.epil = load <4 x i32>, <4 x i32>* %63, align 4
%64 = add <4 x i32> %wide.load187.epil, %vec.phi151.unr
%65 = getelementptr i32, i32* %next.gep152.epil, i64 8
%66 = bitcast i32* %65 to <4 x i32>*
%wide.load186.epil = load <4 x i32>, <4 x i32>* %66, align 4
%67 = add <4 x i32> %wide.load186.epil, %vec.phi150.unr
%68 = getelementptr i32, i32* %next.gep152.epil, i64 4
%69 = bitcast i32* %68 to <4 x i32>*
%wide.load185.epil = load <4 x i32>, <4 x i32>* %69, align 4
%70 = add <4 x i32> %wide.load185.epil, %vec.phi149.unr
%71 = bitcast i32* %next.gep152.epil to <4 x i32>*
%wide.load184.epil = load <4 x i32>, <4 x i32>* %71, align 4
%72 = add <4 x i32> %wide.load184.epil, %vec.phi148.unr
br label %middle.block135
middle.block135: ; preds = %middle.block135.unr-lcssa, %middle.block135.epilog-lcssa
%.lcssa205 = phi <4 x i32> [ %.lcssa205.ph, %middle.block135.unr-lcssa ], [ %72, %middle.block135.epilog-lcssa ]
%.lcssa204 = phi <4 x i32> [ %.lcssa204.ph, %middle.block135.unr-lcssa ], [ %70, %middle.block135.epilog-lcssa ]
%.lcssa203 = phi <4 x i32> [ %.lcssa203.ph, %middle.block135.unr-lcssa ], [ %67, %middle.block135.epilog-lcssa ]
%.lcssa = phi <4 x i32> [ %.lcssa.ph, %middle.block135.unr-lcssa ], [ %64, %middle.block135.epilog-lcssa ]
%bin.rdx190 = add <4 x i32> %.lcssa204, %.lcssa205
%bin.rdx191 = add <4 x i32> %.lcssa203, %bin.rdx190
%bin.rdx192 = add <4 x i32> %.lcssa, %bin.rdx191
%rdx.shuf193 = shufflevector <4 x i32> %bin.rdx192, <4 x i32> undef, <4 x i32> <i32 2, i32 3, i32 undef, i32 undef>
%bin.rdx194 = add <4 x i32> %bin.rdx192, %rdx.shuf193
%rdx.shuf195 = shufflevector <4 x i32> %bin.rdx194, <4 x i32> undef, <4 x i32> <i32 1, i32 undef, i32 undef, i32 undef>
%bin.rdx196 = add <4 x i32> %bin.rdx194, %rdx.shuf195
%73 = extractelement <4 x i32> %bin.rdx196, i32 0
br i1 %cmp.n147, label %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hff6dac657e135198E.exit.i.us", label %bb6.i.i21.us.preheader198
bb6.i.i21.us.preheader198: ; preds = %middle.block135, %min.iters.checked138, %bb6.i.i21.us.preheader
%sum.0.i28.i.us.ph = phi i32 [ 0, %min.iters.checked138 ], [ 0, %bb6.i.i21.us.preheader ], [ %73, %middle.block135 ]
%iter.sroa.4.0.i27.i.us.ph = phi i32* [ %18, %min.iters.checked138 ], [ %18, %bb6.i.i21.us.preheader ], [ %ind.end146, %middle.block135 ]
br label %bb6.i.i21.us
bb6.i.i21.us: ; preds = %bb6.i.i21.us.preheader198, %bb6.i.i21.us
%sum.0.i28.i.us = phi i32 [ %76, %bb6.i.i21.us ], [ %sum.0.i28.i.us.ph, %bb6.i.i21.us.preheader198 ]
%iter.sroa.4.0.i27.i.us = phi i32* [ %74, %bb6.i.i21.us ], [ %iter.sroa.4.0.i27.i.us.ph, %bb6.i.i21.us.preheader198 ]
%74 = getelementptr inbounds i32, i32* %iter.sroa.4.0.i27.i.us, i64 1
%75 = load i32, i32* %iter.sroa.4.0.i27.i.us, align 4
%76 = add i32 %75, %sum.0.i28.i.us
%77 = icmp eq i32* %74, %20
br i1 %77, label %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hff6dac657e135198E.exit.i.us.loopexit199", label %bb6.i.i21.us, !llvm.loop !20
bb3.us.preheader.i.i.us: ; preds = %bb7.i.us
br i1 %or.cond.i.i.i.i.i.i.i.i, label %bb4.i.i.i.i.us.i.i.us.preheader, label %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hff6dac657e135198E.exit.i.us"
bb4.i.i.i.i.us.i.i.us.preheader: ; preds = %bb3.us.preheader.i.i.us
br label %bb4.i.i.i.i.us.i.i.us
bb4.i.i.i.i.us.i.i.us: ; preds = %bb4.i.i.i.i.us.i.i.us.preheader, %bb6.us.i.i.us
%sum.0.us.i32.i.us = phi i32 [ %86, %bb6.us.i.i.us ], [ 0, %bb4.i.i.i.i.us.i.i.us.preheader ]
%iter.sroa.14.0.us.i31.i.us = phi i64 [ %_13.sroa.5.0.i.i.i.i.us.i.i.us, %bb6.us.i.i.us ], [ 0, %bb4.i.i.i.i.us.i.i.us.preheader ]
%iter.sroa.16.0.us.i30.i.us = phi i64 [ %_13.sroa.6.0.i.i.i.i.us.i.i.us, %bb6.us.i.i.us ], [ 0, %bb4.i.i.i.i.us.i.i.us.preheader ]
%78 = mul i64 %iter.sroa.14.0.us.i31.i.us, %a1.sroa.9.0.copyload
%79 = add i64 %iter.sroa.16.0.us.i30.i.us, %78
%80 = add i64 %iter.sroa.16.0.us.i30.i.us, 1
%81 = icmp eq i64 %80, %a1.sroa.9.0.copyload
br i1 %81, label %bb1.i.i.i.i.i.us.i.i.us, label %bb6.i.i.i.i.i.us.i.i.us
bb1.i.i.i.i.i.us.i.i.us: ; preds = %bb4.i.i.i.i.us.i.i.us
%82 = add i64 %iter.sroa.14.0.us.i31.i.us, 1
%83 = icmp eq i64 %82, %a1.sroa.8.0.copyload
br i1 %83, label %"_ZN76_$LT$$LP$usize$C$$u20$usize$RP$$u20$as$u20$ndarray..dimension..Dimension$GT$8next_for17hd8af96c1e9300594E.exit.i.i.i.i.us.i.i.us", label %bb6.i.i.i.i.i.us.i.i.us
bb6.i.i.i.i.i.us.i.i.us: ; preds = %bb1.i.i.i.i.i.us.i.i.us, %bb4.i.i.i.i.us.i.i.us
%j.0.i.i.i.i.i.us.i.i.us = phi i64 [ 0, %bb1.i.i.i.i.i.us.i.i.us ], [ %80, %bb4.i.i.i.i.us.i.i.us ]
%i.0.i.i.i.i.i.us.i.i.us = phi i64 [ %82, %bb1.i.i.i.i.i.us.i.i.us ], [ %iter.sroa.14.0.us.i31.i.us, %bb4.i.i.i.i.us.i.i.us ]
br label %"_ZN76_$LT$$LP$usize$C$$u20$usize$RP$$u20$as$u20$ndarray..dimension..Dimension$GT$8next_for17hd8af96c1e9300594E.exit.i.i.i.i.us.i.i.us"
"_ZN76_$LT$$LP$usize$C$$u20$usize$RP$$u20$as$u20$ndarray..dimension..Dimension$GT$8next_for17hd8af96c1e9300594E.exit.i.i.i.i.us.i.i.us": ; preds = %bb6.i.i.i.i.i.us.i.i.us, %bb1.i.i.i.i.i.us.i.i.us
%_13.sroa.0.0.i.i.i.i.us.i.i.us = phi i64 [ 1, %bb6.i.i.i.i.i.us.i.i.us ], [ 0, %bb1.i.i.i.i.i.us.i.i.us ]
%_13.sroa.5.0.i.i.i.i.us.i.i.us = phi i64 [ %i.0.i.i.i.i.i.us.i.i.us, %bb6.i.i.i.i.i.us.i.i.us ], [ undef, %bb1.i.i.i.i.i.us.i.i.us ]
%_13.sroa.6.0.i.i.i.i.us.i.i.us = phi i64 [ %j.0.i.i.i.i.i.us.i.i.us, %bb6.i.i.i.i.i.us.i.i.us ], [ undef, %bb1.i.i.i.i.i.us.i.i.us ]
%84 = getelementptr inbounds i32, i32* %18, i64 %79
%switchtmp.us.i.i.us = icmp eq i32* %84, null
br i1 %switchtmp.us.i.i.us, label %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hff6dac657e135198E.exit.i.us.loopexit", label %bb6.us.i.i.us
bb6.us.i.i.us: ; preds = %"_ZN76_$LT$$LP$usize$C$$u20$usize$RP$$u20$as$u20$ndarray..dimension..Dimension$GT$8next_for17hd8af96c1e9300594E.exit.i.i.i.i.us.i.i.us"
%85 = load i32, i32* %84, align 4
%86 = add i32 %85, %sum.0.us.i32.i.us
%switch.i.i.i.i.us.i.i.us = icmp eq i64 %_13.sroa.0.0.i.i.i.i.us.i.i.us, 1
br i1 %switch.i.i.i.i.us.i.i.us, label %bb4.i.i.i.i.us.i.i.us, label %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hff6dac657e135198E.exit.i.us.loopexit"
"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hff6dac657e135198E.exit.i.us.loopexit": ; preds = %bb6.us.i.i.us, %"_ZN76_$LT$$LP$usize$C$$u20$usize$RP$$u20$as$u20$ndarray..dimension..Dimension$GT$8next_for17hd8af96c1e9300594E.exit.i.i.i.i.us.i.i.us"
%sum.0.lcssa.i.i.us.ph = phi i32 [ %86, %bb6.us.i.i.us ], [ %sum.0.us.i32.i.us, %"_ZN76_$LT$$LP$usize$C$$u20$usize$RP$$u20$as$u20$ndarray..dimension..Dimension$GT$8next_for17hd8af96c1e9300594E.exit.i.i.i.i.us.i.i.us" ]
br label %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hff6dac657e135198E.exit.i.us"
"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hff6dac657e135198E.exit.i.us.loopexit199": ; preds = %bb6.i.i21.us
br label %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hff6dac657e135198E.exit.i.us"
"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hff6dac657e135198E.exit.i.us": ; preds = %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hff6dac657e135198E.exit.i.us.loopexit199", %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hff6dac657e135198E.exit.i.us.loopexit", %middle.block135, %bb3.us.preheader.i.i.us, %bb3.preheader.i.i.us
%sum.0.lcssa.i.i.us = phi i32 [ 0, %bb3.us.preheader.i.i.us ], [ 0, %bb3.preheader.i.i.us ], [ %73, %middle.block135 ], [ %sum.0.lcssa.i.i.us.ph, %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hff6dac657e135198E.exit.i.us.loopexit" ], [ %76, %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hff6dac657e135198E.exit.i.us.loopexit199" ]
call void @llvm.lifetime.start(i64 4, i8* %15) #2
store i32 %sum.0.lcssa.i.i.us, i32* %dummy.i.i, align 4
call void asm "", "r,~{dirflag},~{fpsr},~{flags}"(i32* nonnull %dummy.i.i) #2, !srcloc !16
call void @llvm.lifetime.end(i64 4, i8* %15) #2
%exitcond.i.us = icmp eq i64 %39, %9
br i1 %exitcond.i.us, label %bb8.i.loopexit, label %bb7.i.us
bb7.i: ; preds = %bb7.i.preheader, %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hff6dac657e135198E.exit.i"
%iter.sroa.0.035.i = phi i64 [ %87, %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hff6dac657e135198E.exit.i" ], [ 0, %bb7.i.preheader ]
%87 = add nuw i64 %iter.sroa.0.035.i, 1
call void @llvm.lifetime.start(i64 40, i8* %11), !noalias !22
store i64 %a1.sroa.739.0.copyload, i64* %_11.sroa.0.0..sroa_cast.i.i.i, align 8, !noalias !29
store i64 %a1.sroa.8.0.copyload, i64* %_11.sroa.4.0..sroa_idx8.i.i.i, align 8, !noalias !29
store i64 %a1.sroa.9.0.copyload, i64* %_11.sroa.5.0..sroa_idx10.i.i.i, align 8, !noalias !29
store i64 %a1.sroa.10.0.copyload, i64* %_11.sroa.6.0..sroa_idx12.i.i.i, align 8, !noalias !29
store i64 %a1.sroa.11.0.copyload, i64* %_11.sroa.7.0..sroa_idx14.i.i.i, align 8, !noalias !29
call void @llvm.lifetime.start(i64 16, i8* %12), !noalias !30
store i64 %a1.sroa.9.0.copyload, i64* %13, align 8, !alias.scope !36, !noalias !30
store i64 1, i64* %14, align 8, !alias.scope !36, !noalias !30
br label %bb18.i.i.i.i.i.i
bb18.i.i.i.i.i.i: ; preds = %bb7.i, %"_ZN145_$LT$itertools..cons_tuples_impl..ConsTuples$LT$Iter$C$$u20$$LP$$LP$G$C$$u20$H$RP$$C$$u20$X$RP$$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$4next17hb28c8d7d69dbfae8E.exit.i.i.i.i.i.i"
%iter.sroa.738.0.i.i.i.i.i.i = phi i64 [ %92, %"_ZN145_$LT$itertools..cons_tuples_impl..ConsTuples$LT$Iter$C$$u20$$LP$$LP$G$C$$u20$H$RP$$C$$u20$X$RP$$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$4next17hb28c8d7d69dbfae8E.exit.i.i.i.i.i.i" ], [ 0, %bb7.i ]
%88 = icmp ult i64 %iter.sroa.738.0.i.i.i.i.i.i, 2
br i1 %88, label %"_ZN145_$LT$itertools..cons_tuples_impl..ConsTuples$LT$Iter$C$$u20$$LP$$LP$G$C$$u20$H$RP$$C$$u20$X$RP$$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$4next17hb28c8d7d69dbfae8E.exit.i.i.i.i.i.i", label %"_ZN7ndarray12impl_methods54_$LT$impl$u20$ndarray..ArrayBase$LT$S$C$$u20$D$GT$$GT$18is_standard_layout17he690d19e37be350fE.exit.thread.i.i.i.i.i"
"_ZN145_$LT$itertools..cons_tuples_impl..ConsTuples$LT$Iter$C$$u20$$LP$$LP$G$C$$u20$H$RP$$C$$u20$X$RP$$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$4next17hb28c8d7d69dbfae8E.exit.i.i.i.i.i.i": ; preds = %bb18.i.i.i.i.i.i
%89 = getelementptr inbounds i64, i64* %_11.sroa.4.0..sroa_idx8.i.i.i, i64 %iter.sroa.738.0.i.i.i.i.i.i
%90 = getelementptr inbounds i64, i64* %_11.sroa.6.0..sroa_idx12.i.i.i, i64 %iter.sroa.738.0.i.i.i.i.i.i
%91 = getelementptr inbounds i64, i64* %13, i64 %iter.sroa.738.0.i.i.i.i.i.i
%92 = add nuw nsw i64 %iter.sroa.738.0.i.i.i.i.i.i, 1
%93 = load i64, i64* %89, align 8, !alias.scope !39, !noalias !40
%94 = load i64, i64* %90, align 8, !alias.scope !39, !noalias !40
%95 = load i64, i64* %91, align 8, !noalias !30
%96 = icmp ne i64 %93, 1
%97 = icmp ne i64 %94, %95
%or.cond.i.i.i.i.i.i = and i1 %96, %97
br i1 %or.cond.i.i.i.i.i.i, label %"_ZN85_$LT$ndarray..ArrayBase$LT$ndarray..ViewRepr$LT$$RF$$u27$a$u20$A$GT$$C$$u20$D$GT$$GT$10into_slice17haf36f7fe3600206dE.exit.thread.i.i.i.i", label %bb18.i.i.i.i.i.i
"_ZN7ndarray12impl_methods54_$LT$impl$u20$ndarray..ArrayBase$LT$S$C$$u20$D$GT$$GT$18is_standard_layout17he690d19e37be350fE.exit.thread.i.i.i.i.i": ; preds = %bb18.i.i.i.i.i.i
call void @llvm.lifetime.end(i64 16, i8* nonnull %12), !noalias !30
br i1 %switchtmp.i.i.i.i, label %bb3.us.preheader.i.i, label %bb3.preheader.i.i
"_ZN85_$LT$ndarray..ArrayBase$LT$ndarray..ViewRepr$LT$$RF$$u27$a$u20$A$GT$$C$$u20$D$GT$$GT$10into_slice17haf36f7fe3600206dE.exit.thread.i.i.i.i": ; preds = %"_ZN145_$LT$itertools..cons_tuples_impl..ConsTuples$LT$Iter$C$$u20$$LP$$LP$G$C$$u20$H$RP$$C$$u20$X$RP$$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$4next17hb28c8d7d69dbfae8E.exit.i.i.i.i.i.i"
call void @llvm.lifetime.end(i64 16, i8* nonnull %12), !noalias !30
br label %bb3.us.preheader.i.i
bb3.preheader.i.i: ; preds = %"_ZN7ndarray12impl_methods54_$LT$impl$u20$ndarray..ArrayBase$LT$S$C$$u20$D$GT$$GT$18is_standard_layout17he690d19e37be350fE.exit.thread.i.i.i.i.i"
call void @llvm.lifetime.end(i64 40, i8* nonnull %11), !noalias !22
br i1 %21, label %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hff6dac657e135198E.exit.i", label %bb6.i.i21.preheader
bb6.i.i21.preheader: ; preds = %bb3.preheader.i.i
br i1 %min.iters.check, label %bb6.i.i21.preheader200, label %min.iters.checked
bb6.i.i21.preheader200: ; preds = %middle.block, %min.iters.checked, %bb6.i.i21.preheader
%sum.0.i28.i.ph = phi i32 [ 0, %min.iters.checked ], [ 0, %bb6.i.i21.preheader ], [ %131, %middle.block ]
%iter.sroa.4.0.i27.i.ph = phi i32* [ %18, %min.iters.checked ], [ %18, %bb6.i.i21.preheader ], [ %ind.end, %middle.block ]
br label %bb6.i.i21
min.iters.checked: ; preds = %bb6.i.i21.preheader
br i1 %cmp.zero, label %bb6.i.i21.preheader200, label %vector.body.preheader
vector.body.preheader: ; preds = %min.iters.checked
br i1 %33, label %middle.block.unr-lcssa, label %vector.body.preheader.new
vector.body.preheader.new: ; preds = %vector.body.preheader
br label %vector.body
vector.body: ; preds = %vector.body, %vector.body.preheader.new
%index = phi i64 [ 0, %vector.body.preheader.new ], [ %index.next.1, %vector.body ]
%vec.phi = phi <4 x i32> [ zeroinitializer, %vector.body.preheader.new ], [ %116, %vector.body ]
%vec.phi93 = phi <4 x i32> [ zeroinitializer, %vector.body.preheader.new ], [ %117, %vector.body ]
%vec.phi94 = phi <4 x i32> [ zeroinitializer, %vector.body.preheader.new ], [ %118, %vector.body ]
%vec.phi95 = phi <4 x i32> [ zeroinitializer, %vector.body.preheader.new ], [ %119, %vector.body ]
%niter215 = phi i64 [ %unroll_iter214, %vector.body.preheader.new ], [ %niter215.nsub.1, %vector.body ]
%next.gep = getelementptr i32, i32* %18, i64 %index
%98 = bitcast i32* %next.gep to <4 x i32>*
%wide.load = load <4 x i32>, <4 x i32>* %98, align 4
%99 = getelementptr i32, i32* %next.gep, i64 4
%100 = bitcast i32* %99 to <4 x i32>*
%wide.load126 = load <4 x i32>, <4 x i32>* %100, align 4
%101 = getelementptr i32, i32* %next.gep, i64 8
%102 = bitcast i32* %101 to <4 x i32>*
%wide.load127 = load <4 x i32>, <4 x i32>* %102, align 4
%103 = getelementptr i32, i32* %next.gep, i64 12
%104 = bitcast i32* %103 to <4 x i32>*
%wide.load128 = load <4 x i32>, <4 x i32>* %104, align 4
%105 = add <4 x i32> %wide.load, %vec.phi
%106 = add <4 x i32> %wide.load126, %vec.phi93
%107 = add <4 x i32> %wide.load127, %vec.phi94
%108 = add <4 x i32> %wide.load128, %vec.phi95
%index.next = or i64 %index, 16
%next.gep.1 = getelementptr i32, i32* %18, i64 %index.next
%109 = bitcast i32* %next.gep.1 to <4 x i32>*
%wide.load.1 = load <4 x i32>, <4 x i32>* %109, align 4
%110 = getelementptr i32, i32* %next.gep.1, i64 4
%111 = bitcast i32* %110 to <4 x i32>*
%wide.load126.1 = load <4 x i32>, <4 x i32>* %111, align 4
%112 = getelementptr i32, i32* %next.gep.1, i64 8
%113 = bitcast i32* %112 to <4 x i32>*
%wide.load127.1 = load <4 x i32>, <4 x i32>* %113, align 4
%114 = getelementptr i32, i32* %next.gep.1, i64 12
%115 = bitcast i32* %114 to <4 x i32>*
%wide.load128.1 = load <4 x i32>, <4 x i32>* %115, align 4
%116 = add <4 x i32> %wide.load.1, %105
%117 = add <4 x i32> %wide.load126.1, %106
%118 = add <4 x i32> %wide.load127.1, %107
%119 = add <4 x i32> %wide.load128.1, %108
%index.next.1 = add i64 %index, 32
%niter215.nsub.1 = add i64 %niter215, -2
%niter215.ncmp.1 = icmp eq i64 %niter215.nsub.1, 0
br i1 %niter215.ncmp.1, label %middle.block.unr-lcssa.loopexit, label %vector.body, !llvm.loop !41
middle.block.unr-lcssa.loopexit: ; preds = %vector.body
br label %middle.block.unr-lcssa
middle.block.unr-lcssa: ; preds = %middle.block.unr-lcssa.loopexit, %vector.body.preheader
%.lcssa210.ph = phi <4 x i32> [ undef, %vector.body.preheader ], [ %116, %middle.block.unr-lcssa.loopexit ]
%.lcssa209.ph = phi <4 x i32> [ undef, %vector.body.preheader ], [ %117, %middle.block.unr-lcssa.loopexit ]
%.lcssa208.ph = phi <4 x i32> [ undef, %vector.body.preheader ], [ %118, %middle.block.unr-lcssa.loopexit ]
%.lcssa207.ph = phi <4 x i32> [ undef, %vector.body.preheader ], [ %119, %middle.block.unr-lcssa.loopexit ]
%index.unr = phi i64 [ 0, %vector.body.preheader ], [ %index.next.1, %middle.block.unr-lcssa.loopexit ]
%vec.phi.unr = phi <4 x i32> [ zeroinitializer, %vector.body.preheader ], [ %116, %middle.block.unr-lcssa.loopexit ]
%vec.phi93.unr = phi <4 x i32> [ zeroinitializer, %vector.body.preheader ], [ %117, %middle.block.unr-lcssa.loopexit ]
%vec.phi94.unr = phi <4 x i32> [ zeroinitializer, %vector.body.preheader ], [ %118, %middle.block.unr-lcssa.loopexit ]
%vec.phi95.unr = phi <4 x i32> [ zeroinitializer, %vector.body.preheader ], [ %119, %middle.block.unr-lcssa.loopexit ]
br i1 %lcmp.mod213, label %middle.block, label %vector.body.epil.preheader
vector.body.epil.preheader: ; preds = %middle.block.unr-lcssa
br label %vector.body.epil
vector.body.epil: ; preds = %vector.body.epil.preheader
%next.gep.epil = getelementptr i32, i32* %18, i64 %index.unr
br label %middle.block.epilog-lcssa
middle.block.epilog-lcssa: ; preds = %vector.body.epil
%120 = getelementptr i32, i32* %next.gep.epil, i64 12
%121 = bitcast i32* %120 to <4 x i32>*
%wide.load128.epil = load <4 x i32>, <4 x i32>* %121, align 4
%122 = add <4 x i32> %wide.load128.epil, %vec.phi95.unr
%123 = getelementptr i32, i32* %next.gep.epil, i64 8
%124 = bitcast i32* %123 to <4 x i32>*
%wide.load127.epil = load <4 x i32>, <4 x i32>* %124, align 4
%125 = add <4 x i32> %wide.load127.epil, %vec.phi94.unr
%126 = getelementptr i32, i32* %next.gep.epil, i64 4
%127 = bitcast i32* %126 to <4 x i32>*
%wide.load126.epil = load <4 x i32>, <4 x i32>* %127, align 4
%128 = add <4 x i32> %wide.load126.epil, %vec.phi93.unr
%129 = bitcast i32* %next.gep.epil to <4 x i32>*
%wide.load.epil = load <4 x i32>, <4 x i32>* %129, align 4
%130 = add <4 x i32> %wide.load.epil, %vec.phi.unr
br label %middle.block
middle.block: ; preds = %middle.block.unr-lcssa, %middle.block.epilog-lcssa
%.lcssa210 = phi <4 x i32> [ %.lcssa210.ph, %middle.block.unr-lcssa ], [ %130, %middle.block.epilog-lcssa ]
%.lcssa209 = phi <4 x i32> [ %.lcssa209.ph, %middle.block.unr-lcssa ], [ %128, %middle.block.epilog-lcssa ]
%.lcssa208 = phi <4 x i32> [ %.lcssa208.ph, %middle.block.unr-lcssa ], [ %125, %middle.block.epilog-lcssa ]
%.lcssa207 = phi <4 x i32> [ %.lcssa207.ph, %middle.block.unr-lcssa ], [ %122, %middle.block.epilog-lcssa ]
%bin.rdx = add <4 x i32> %.lcssa209, %.lcssa210
%bin.rdx129 = add <4 x i32> %.lcssa208, %bin.rdx
%bin.rdx130 = add <4 x i32> %.lcssa207, %bin.rdx129
%rdx.shuf = shufflevector <4 x i32> %bin.rdx130, <4 x i32> undef, <4 x i32> <i32 2, i32 3, i32 undef, i32 undef>
%bin.rdx131 = add <4 x i32> %bin.rdx130, %rdx.shuf
%rdx.shuf132 = shufflevector <4 x i32> %bin.rdx131, <4 x i32> undef, <4 x i32> <i32 1, i32 undef, i32 undef, i32 undef>
%bin.rdx133 = add <4 x i32> %bin.rdx131, %rdx.shuf132
%131 = extractelement <4 x i32> %bin.rdx133, i32 0
br i1 %cmp.n, label %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hff6dac657e135198E.exit.i", label %bb6.i.i21.preheader200
bb3.us.preheader.i.i: ; preds = %"_ZN7ndarray12impl_methods54_$LT$impl$u20$ndarray..ArrayBase$LT$S$C$$u20$D$GT$$GT$18is_standard_layout17he690d19e37be350fE.exit.thread.i.i.i.i.i", %"_ZN85_$LT$ndarray..ArrayBase$LT$ndarray..ViewRepr$LT$$RF$$u27$a$u20$A$GT$$C$$u20$D$GT$$GT$10into_slice17haf36f7fe3600206dE.exit.thread.i.i.i.i"
call void @llvm.lifetime.end(i64 40, i8* nonnull %11), !noalias !22
br i1 %or.cond.i.i.i.i.i.i.i.i, label %bb4.i.i.i.i.us.i.i.preheader, label %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hff6dac657e135198E.exit.i"
bb4.i.i.i.i.us.i.i.preheader: ; preds = %bb3.us.preheader.i.i
br label %bb4.i.i.i.i.us.i.i
bb4.i.i.i.i.us.i.i: ; preds = %bb4.i.i.i.i.us.i.i.preheader, %bb6.us.i.i
%sum.0.us.i32.i = phi i32 [ %141, %bb6.us.i.i ], [ 0, %bb4.i.i.i.i.us.i.i.preheader ]
%iter.sroa.14.0.us.i31.i = phi i64 [ %_13.sroa.5.0.i.i.i.i.us.i.i, %bb6.us.i.i ], [ 0, %bb4.i.i.i.i.us.i.i.preheader ]
%iter.sroa.16.0.us.i30.i = phi i64 [ %_13.sroa.6.0.i.i.i.i.us.i.i, %bb6.us.i.i ], [ 0, %bb4.i.i.i.i.us.i.i.preheader ]
%132 = mul i64 %iter.sroa.14.0.us.i31.i, %a1.sroa.10.0.copyload
%133 = mul i64 %iter.sroa.16.0.us.i30.i, %a1.sroa.11.0.copyload
%134 = add i64 %133, %132
%135 = add i64 %iter.sroa.16.0.us.i30.i, 1
%136 = icmp eq i64 %135, %a1.sroa.9.0.copyload
br i1 %136, label %bb1.i.i.i.i.i.us.i.i, label %bb6.i.i.i.i.i.us.i.i
bb1.i.i.i.i.i.us.i.i: ; preds = %bb4.i.i.i.i.us.i.i
%137 = add i64 %iter.sroa.14.0.us.i31.i, 1
%138 = icmp eq i64 %137, %a1.sroa.8.0.copyload
br i1 %138, label %"_ZN76_$LT$$LP$usize$C$$u20$usize$RP$$u20$as$u20$ndarray..dimension..Dimension$GT$8next_for17hd8af96c1e9300594E.exit.i.i.i.i.us.i.i", label %bb6.i.i.i.i.i.us.i.i
bb6.i.i.i.i.i.us.i.i: ; preds = %bb1.i.i.i.i.i.us.i.i, %bb4.i.i.i.i.us.i.i
%j.0.i.i.i.i.i.us.i.i = phi i64 [ 0, %bb1.i.i.i.i.i.us.i.i ], [ %135, %bb4.i.i.i.i.us.i.i ]
%i.0.i.i.i.i.i.us.i.i = phi i64 [ %137, %bb1.i.i.i.i.i.us.i.i ], [ %iter.sroa.14.0.us.i31.i, %bb4.i.i.i.i.us.i.i ]
br label %"_ZN76_$LT$$LP$usize$C$$u20$usize$RP$$u20$as$u20$ndarray..dimension..Dimension$GT$8next_for17hd8af96c1e9300594E.exit.i.i.i.i.us.i.i"
"_ZN76_$LT$$LP$usize$C$$u20$usize$RP$$u20$as$u20$ndarray..dimension..Dimension$GT$8next_for17hd8af96c1e9300594E.exit.i.i.i.i.us.i.i": ; preds = %bb6.i.i.i.i.i.us.i.i, %bb1.i.i.i.i.i.us.i.i
%_13.sroa.0.0.i.i.i.i.us.i.i = phi i64 [ 1, %bb6.i.i.i.i.i.us.i.i ], [ 0, %bb1.i.i.i.i.i.us.i.i ]
%_13.sroa.5.0.i.i.i.i.us.i.i = phi i64 [ %i.0.i.i.i.i.i.us.i.i, %bb6.i.i.i.i.i.us.i.i ], [ undef, %bb1.i.i.i.i.i.us.i.i ]
%_13.sroa.6.0.i.i.i.i.us.i.i = phi i64 [ %j.0.i.i.i.i.i.us.i.i, %bb6.i.i.i.i.i.us.i.i ], [ undef, %bb1.i.i.i.i.i.us.i.i ]
%139 = getelementptr inbounds i32, i32* %18, i64 %134
%switchtmp.us.i.i = icmp eq i32* %139, null
br i1 %switchtmp.us.i.i, label %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hff6dac657e135198E.exit.i.loopexit", label %bb6.us.i.i
bb6.us.i.i: ; preds = %"_ZN76_$LT$$LP$usize$C$$u20$usize$RP$$u20$as$u20$ndarray..dimension..Dimension$GT$8next_for17hd8af96c1e9300594E.exit.i.i.i.i.us.i.i"
%140 = load i32, i32* %139, align 4
%141 = add i32 %140, %sum.0.us.i32.i
%switch.i.i.i.i.us.i.i = icmp eq i64 %_13.sroa.0.0.i.i.i.i.us.i.i, 1
br i1 %switch.i.i.i.i.us.i.i, label %bb4.i.i.i.i.us.i.i, label %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hff6dac657e135198E.exit.i.loopexit"
bb6.i.i21: ; preds = %bb6.i.i21.preheader200, %bb6.i.i21
%sum.0.i28.i = phi i32 [ %144, %bb6.i.i21 ], [ %sum.0.i28.i.ph, %bb6.i.i21.preheader200 ]
%iter.sroa.4.0.i27.i = phi i32* [ %142, %bb6.i.i21 ], [ %iter.sroa.4.0.i27.i.ph, %bb6.i.i21.preheader200 ]
%142 = getelementptr inbounds i32, i32* %iter.sroa.4.0.i27.i, i64 1
%143 = load i32, i32* %iter.sroa.4.0.i27.i, align 4
%144 = add i32 %143, %sum.0.i28.i
%145 = icmp eq i32* %142, %20
br i1 %145, label %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hff6dac657e135198E.exit.i.loopexit201", label %bb6.i.i21, !llvm.loop !42
"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hff6dac657e135198E.exit.i.loopexit": ; preds = %"_ZN76_$LT$$LP$usize$C$$u20$usize$RP$$u20$as$u20$ndarray..dimension..Dimension$GT$8next_for17hd8af96c1e9300594E.exit.i.i.i.i.us.i.i", %bb6.us.i.i
%sum.0.lcssa.i.i.ph = phi i32 [ %141, %bb6.us.i.i ], [ %sum.0.us.i32.i, %"_ZN76_$LT$$LP$usize$C$$u20$usize$RP$$u20$as$u20$ndarray..dimension..Dimension$GT$8next_for17hd8af96c1e9300594E.exit.i.i.i.i.us.i.i" ]
br label %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hff6dac657e135198E.exit.i"
"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hff6dac657e135198E.exit.i.loopexit201": ; preds = %bb6.i.i21
br label %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hff6dac657e135198E.exit.i"
"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hff6dac657e135198E.exit.i": ; preds = %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hff6dac657e135198E.exit.i.loopexit201", %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hff6dac657e135198E.exit.i.loopexit", %middle.block, %bb3.us.preheader.i.i, %bb3.preheader.i.i
%sum.0.lcssa.i.i = phi i32 [ 0, %bb3.us.preheader.i.i ], [ 0, %bb3.preheader.i.i ], [ %131, %middle.block ], [ %sum.0.lcssa.i.i.ph, %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hff6dac657e135198E.exit.i.loopexit" ], [ %144, %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hff6dac657e135198E.exit.i.loopexit201" ]
call void @llvm.lifetime.start(i64 4, i8* %15) #2
store i32 %sum.0.lcssa.i.i, i32* %dummy.i.i, align 4
call void asm "", "r,~{dirflag},~{fpsr},~{flags}"(i32* nonnull %dummy.i.i) #2, !srcloc !16
call void @llvm.lifetime.end(i64 4, i8* %15) #2
%exitcond.i = icmp eq i64 %87, %9
br i1 %exitcond.i, label %bb8.i.loopexit202, label %bb7.i
bb8.i.loopexit: ; preds = %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hff6dac657e135198E.exit.i.us"
br label %bb8.i
bb8.i.loopexit202: ; preds = %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hff6dac657e135198E.exit.i"
br label %bb8.i
bb8.i: ; preds = %bb8.i.loopexit202, %bb8.i.loopexit, %.noexc22
invoke void @_ZN3std4time7Instant7elapsed17h49a3c3321963a7a7E(%"1.std::time::Duration"* noalias nocapture nonnull sret dereferenceable(16) %tmp_ret2.i, %"1.std::time::Instant"* noalias nonnull readonly dereferenceable(16) %start1.i)
to label %bb5 unwind label %bb9
bb5: ; preds = %bb8.i
%146 = getelementptr inbounds %"1.std::time::Duration", %"1.std::time::Duration"* %tmp_ret2.i, i64 0, i32 0
%147 = getelementptr inbounds %"1.std::time::Duration", %"1.std::time::Duration"* %tmp_ret2.i, i64 0, i32 1
%148 = load i64, i64* %146, align 8
%149 = load i32, i32* %147, align 8
%150 = getelementptr inbounds %"12.test::Bencher", %"12.test::Bencher"* %0, i64 0, i32 1, i32 0
store i64 %148, i64* %150, align 8
%151 = getelementptr inbounds %"12.test::Bencher", %"12.test::Bencher"* %0, i64 0, i32 1, i32 1
store i32 %149, i32* %151, align 4
call void @llvm.lifetime.end(i64 16, i8* %7)
call void @llvm.lifetime.end(i64 16, i8* %6)
%not..i.i.i.i.i = icmp eq i64 %a1.sroa.5.0.copyload, 0
br i1 %not..i.i.i.i.i, label %bb6, label %bb6.i.i.i.i.i24
bb6.i.i.i.i.i24: ; preds = %bb5
%152 = shl i64 %a1.sroa.5.0.copyload, 2
call void @__rust_deallocate(i8* %a1.sroa.0.0.copyload, i64 %152, i64 4) #2
br label %bb6
bb6: ; preds = %bb6.i.i.i.i.i24, %bb5
ret void
bb9: ; preds = %bb4, %bb8.i
%153 = landingpad { i8*, i32 }
cleanup
%.fca.0.extract5 = extractvalue { i8*, i32 } %153, 0
%.fca.1.extract7 = extractvalue { i8*, i32 } %153, 1
%not..i.i.i.i.i28 = icmp eq i64 %a1.sroa.5.0.copyload, 0
br i1 %not..i.i.i.i.i28, label %bb1, label %bb6.i.i.i.i.i29
bb6.i.i.i.i.i29: ; preds = %bb9
%154 = shl i64 %a1.sroa.5.0.copyload, 2
call void @__rust_deallocate(i8* %a1.sroa.0.0.copyload, i64 %154, i64 4) #2
br label %bb1
cleanup: ; preds = %bb10.i.i.i.i.i
%155 = landingpad { i8*, i32 }
cleanup
%.fca.0.extract4 = extractvalue { i8*, i32 } %155, 0
%.fca.1.extract = extractvalue { i8*, i32 } %155, 1
br label %bb1
}
; Function Attrs: uwtable
define internal void @_ZN6bench16__test4main17hea89029b865a9639E() unnamed_addr #0 {
entry-block:
tail call void @_ZN4test16test_main_static17h2986dcfcbcd72e4aE(%"12.test::TestDescAndFn"* noalias nonnull readonly bitcast ({ { { { i64, %str_slice, [8 x i8] }, i1, [7 x i8], { i64, [16 x i8] } }, { i64, void (%"12.test::Bencher"*)*, [8 x i8] } } }* @ref10698 to %"12.test::TestDescAndFn"*), i64 1)
ret void
}
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start(i64, i8* nocapture) #1
; Function Attrs: nounwind
declare i32 @rust_eh_personality(i32, i32, i64, %"8.unwind::libunwind::_Unwind_Exception"*, %"8.unwind::libunwind::_Unwind_Context"*) unnamed_addr #2
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.end(i64, i8* nocapture) #1
; Function Attrs: cold noinline noreturn
declare void @_ZN5alloc3oom3oom17hb4382286715c86b5E() unnamed_addr #3
declare void @_ZN3std4time7Instant3now17h92a4d74662f63e98E(%"1.std::time::Instant"* noalias nocapture sret dereferenceable(16)) unnamed_addr
declare void @_ZN3std4time7Instant7elapsed17h49a3c3321963a7a7E(%"1.std::time::Duration"* noalias nocapture sret dereferenceable(16), %"1.std::time::Instant"* noalias readonly dereferenceable(16)) unnamed_addr
; Function Attrs: nounwind
declare void @__rust_deallocate(i8*, i64, i64) unnamed_addr #2
; Function Attrs: nounwind
declare noalias i8* @__rust_allocate(i64, i64) unnamed_addr #2
declare void @_ZN4test16test_main_static17h2986dcfcbcd72e4aE(%"12.test::TestDescAndFn"* noalias nonnull readonly, i64) unnamed_addr
define i64 @main(i64, i8**) unnamed_addr {
top:
%2 = tail call i64 @_ZN3std2rt10lang_start17h19515238ab9c0a39E(i8* bitcast (void ()* @_ZN6bench16__test4main17hea89029b865a9639E to i8*), i64 %0, i8** %1)
ret i64 %2
}
declare i64 @_ZN3std2rt10lang_start17h19515238ab9c0a39E(i8*, i64, i8**) unnamed_addr
; Function Attrs: argmemonly nounwind
declare void @llvm.memset.p0i8.i64(i8* nocapture writeonly, i8, i64, i32, i1) #1
attributes #0 = { uwtable }
attributes #1 = { argmemonly nounwind }
attributes #2 = { nounwind }
attributes #3 = { cold noinline noreturn }
!llvm.module.flags = !{!0}
!0 = !{i32 1, !"PIE Level", i32 2}
!1 = !{!2, !4, !6, !8, !10}
!2 = distinct !{!2, !3, !"_ZN40_$LT$alloc..raw_vec..RawVec$LT$T$GT$$GT$13with_capacity17h442131ee31b75b17E: argument 0"}
!3 = distinct !{!3, !"_ZN40_$LT$alloc..raw_vec..RawVec$LT$T$GT$$GT$13with_capacity17h442131ee31b75b17E"}
!4 = distinct !{!4, !5, !"_ZN39_$LT$collections..vec..Vec$LT$T$GT$$GT$13with_capacity17hafff9947d4a7db1aE: argument 0"}
!5 = distinct !{!5, !"_ZN39_$LT$collections..vec..Vec$LT$T$GT$$GT$13with_capacity17hafff9947d4a7db1aE"}
!6 = distinct !{!6, !7, !"_ZN11collections3vec9from_elem17h2478192a4323e46eE: argument 0"}
!7 = distinct !{!7, !"_ZN11collections3vec9from_elem17h2478192a4323e46eE"}
!8 = distinct !{!8, !9, !"_ZN7ndarray17impl_constructors54_$LT$impl$u20$ndarray..ArrayBase$LT$S$C$$u20$D$GT$$GT$9from_elem17hede15a45bcf452dbE: argument 0"}
!9 = distinct !{!9, !"_ZN7ndarray17impl_constructors54_$LT$impl$u20$ndarray..ArrayBase$LT$S$C$$u20$D$GT$$GT$9from_elem17hede15a45bcf452dbE"}
!10 = distinct !{!10, !11, !"_ZN7ndarray17impl_constructors54_$LT$impl$u20$ndarray..ArrayBase$LT$S$C$$u20$D$GT$$GT$5zeros17h6cd29673e53e99b7E: argument 0"}
!11 = distinct !{!11, !"_ZN7ndarray17impl_constructors54_$LT$impl$u20$ndarray..ArrayBase$LT$S$C$$u20$D$GT$$GT$5zeros17h6cd29673e53e99b7E"}
!12 = !{!13, !15}
!13 = distinct !{!13, !14, !"_ZN4test9black_box17h9c12647707c851e2E: argument 0"}
!14 = distinct !{!14, !"_ZN4test9black_box17h9c12647707c851e2E"}
!15 = distinct !{!15, !14, !"_ZN4test9black_box17h9c12647707c851e2E: argument 1"}
!16 = !{i32 191}
!17 = distinct !{!17, !18, !19}
!18 = !{!"llvm.loop.vectorize.width", i32 1}
!19 = !{!"llvm.loop.interleave.count", i32 1}
!20 = distinct !{!20, !21, !18, !19}
!21 = !{!"llvm.loop.unroll.runtime.disable"}
!22 = !{!23, !25, !26, !28}
!23 = distinct !{!23, !24, !"_ZN85_$LT$ndarray..ArrayBase$LT$ndarray..ViewRepr$LT$$RF$$u27$a$u20$A$GT$$C$$u20$D$GT$$GT$10into_iter_17h07e424d86abf96f4E: argument 0"}
!24 = distinct !{!24, !"_ZN85_$LT$ndarray..ArrayBase$LT$ndarray..ViewRepr$LT$$RF$$u27$a$u20$A$GT$$C$$u20$D$GT$$GT$10into_iter_17h07e424d86abf96f4E"}
!25 = distinct !{!25, !24, !"_ZN85_$LT$ndarray..ArrayBase$LT$ndarray..ViewRepr$LT$$RF$$u27$a$u20$A$GT$$C$$u20$D$GT$$GT$10into_iter_17h07e424d86abf96f4E: argument 1"}
!26 = distinct !{!26, !27, !"_ZN7ndarray12impl_methods54_$LT$impl$u20$ndarray..ArrayBase$LT$S$C$$u20$D$GT$$GT$4iter17h92e629a76f9602eaE: argument 0"}
!27 = distinct !{!27, !"_ZN7ndarray12impl_methods54_$LT$impl$u20$ndarray..ArrayBase$LT$S$C$$u20$D$GT$$GT$4iter17h92e629a76f9602eaE"}
!28 = distinct !{!28, !27, !"_ZN7ndarray12impl_methods54_$LT$impl$u20$ndarray..ArrayBase$LT$S$C$$u20$D$GT$$GT$4iter17h92e629a76f9602eaE: argument 1"}
!29 = !{!26, !28}
!30 = !{!31, !33, !35, !23, !25, !26, !28}
!31 = distinct !{!31, !32, !"_ZN7ndarray12impl_methods54_$LT$impl$u20$ndarray..ArrayBase$LT$S$C$$u20$D$GT$$GT$18is_standard_layout17he690d19e37be350fE: argument 0"}
!32 = distinct !{!32, !"_ZN7ndarray12impl_methods54_$LT$impl$u20$ndarray..ArrayBase$LT$S$C$$u20$D$GT$$GT$18is_standard_layout17he690d19e37be350fE"}
!33 = distinct !{!33, !34, !"_ZN85_$LT$ndarray..ArrayBase$LT$ndarray..ViewRepr$LT$$RF$$u27$a$u20$A$GT$$C$$u20$D$GT$$GT$10into_slice17haf36f7fe3600206dE: argument 0"}
!34 = distinct !{!34, !"_ZN85_$LT$ndarray..ArrayBase$LT$ndarray..ViewRepr$LT$$RF$$u27$a$u20$A$GT$$C$$u20$D$GT$$GT$10into_slice17haf36f7fe3600206dE"}
!35 = distinct !{!35, !34, !"_ZN85_$LT$ndarray..ArrayBase$LT$ndarray..ViewRepr$LT$$RF$$u27$a$u20$A$GT$$C$$u20$D$GT$$GT$10into_slice17haf36f7fe3600206dE: argument 1"}
!36 = !{!37}
!37 = distinct !{!37, !38, !"_ZN76_$LT$$LP$usize$C$$u20$usize$RP$$u20$as$u20$ndarray..dimension..Dimension$GT$15default_strides17h9594c0827058adc3E: argument 0"}
!38 = distinct !{!38, !"_ZN76_$LT$$LP$usize$C$$u20$usize$RP$$u20$as$u20$ndarray..dimension..Dimension$GT$15default_strides17h9594c0827058adc3E"}
!39 = !{!31, !35}
!40 = !{!33, !23, !25, !26, !28}
!41 = distinct !{!41, !18, !19}
!42 = distinct !{!42, !21, !18, !19}
; ModuleID = 'bench1.cgu-0.rs'
source_filename = "bench1.cgu-0.rs"
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
%str_slice = type { i8*, i64 }
%"12.test::Bencher" = type { i64, %"1.std::time::Duration", i64 }
%"1.std::time::Duration" = type { i64, i32 }
%"15.ndarray::ArrayBase<ndarray::ViewRepr<&i32>, (usize, usize)>" = type { %"15.ndarray::ViewRepr<&i32>", i32*, { i64, i64 }, { i64, i64 } }
%"15.ndarray::ViewRepr<&i32>" = type { %"2.std::marker::PhantomData<&i32>" }
%"2.std::marker::PhantomData<&i32>" = type {}
%"1.std::time::Instant" = type { %"1.std::sys::time::inner::Instant" }
%"1.std::sys::time::inner::Instant" = type { %"1.std::sys::time::Timespec" }
%"1.std::sys::time::Timespec" = type { %"7.libc::unix::timespec" }
%"7.libc::unix::timespec" = type { i64, i64 }
%"15.ndarray::ArrayBase<std::vec::Vec<i32>, (usize, usize)>" = type { %"3.std::vec::Vec<i32>", i32*, { i64, i64 }, { i64, i64 } }
%"3.std::vec::Vec<i32>" = type { %"5.alloc::raw_vec::RawVec<i32>", i64 }
%"5.alloc::raw_vec::RawVec<i32>" = type { %"2.std::ptr::Unique<i32>", i64 }
%"2.std::ptr::Unique<i32>" = type { %"2.core::nonzero::NonZero<*const i32>", %"2.std::marker::PhantomData<i32>" }
%"2.core::nonzero::NonZero<*const i32>" = type { i32* }
%"2.std::marker::PhantomData<i32>" = type {}
%"12.test::TestDescAndFn" = type { %"12.test::TestDesc", %"12.test::TestFn" }
%"12.test::TestDesc" = type { %"12.test::TestName", i8, %"12.test::ShouldPanic" }
%"12.test::TestName" = type { i64, [0 x i64], [3 x i64] }
%"12.test::ShouldPanic" = type { i64, [0 x i64], [2 x i64] }
%"12.test::TestFn" = type { i64, [0 x i64], [2 x i64] }
%"8.unwind::libunwind::_Unwind_Exception" = type { i64, void (i32, %"8.unwind::libunwind::_Unwind_Exception"*)*, [6 x i64] }
%"8.unwind::libunwind::_Unwind_Context" = type {}
@str10694 = internal constant [29 x i8] c"iter_sum_2d_transpose_regular"
@ref10695 = internal unnamed_addr constant { { { { i64, %str_slice, [8 x i8] }, i1, [7 x i8], { i64, [16 x i8] } }, { i64, void (%"12.test::Bencher"*)*, [8 x i8] } } } { { { { i64, %str_slice, [8 x i8] }, i1, [7 x i8], { i64, [16 x i8] } }, { i64, void (%"12.test::Bencher"*)*, [8 x i8] } } { { { i64, %str_slice, [8 x i8] }, i1, [7 x i8], { i64, [16 x i8] } } { { i64, %str_slice, [8 x i8] } { i64 0, %str_slice { i8* getelementptr inbounds ([29 x i8], [29 x i8]* @str10694, i32 0, i32 0), i64 29 }, [8 x i8] undef }, i1 false, [7 x i8] undef, { i64, [16 x i8] } { i64 0, [16 x i8] undef } }, { i64, void (%"12.test::Bencher"*)*, [8 x i8] } { i64 1, void (%"12.test::Bencher"*)* @_ZN6bench129iter_sum_2d_transpose_regular17hb420e27248fa1c24E, [8 x i8] undef } } }, align 8
; Function Attrs: uwtable
define internal void @_ZN6bench129iter_sum_2d_transpose_regular17hb420e27248fa1c24E(%"12.test::Bencher"* nocapture dereferenceable(32)) unnamed_addr #0 personality i32 (i32, i32, i64, %"8.unwind::libunwind::_Unwind_Exception"*, %"8.unwind::libunwind::_Unwind_Context"*)* @rust_eh_personality {
bb6.i.i.i.i.i:
%defaults.i.i.i.i.i.i = alloca { i64, i64 }, align 8
%self.i.i.i.i = alloca %"15.ndarray::ArrayBase<ndarray::ViewRepr<&i32>, (usize, usize)>", align 8
%dummy.i.i = alloca i32, align 4
%start1.i = alloca %"1.std::time::Instant", align 8
%tmp_ret2.i = alloca %"1.std::time::Duration", align 8
%dummy.i = alloca %"15.ndarray::ArrayBase<std::vec::Vec<i32>, (usize, usize)>", align 8
%1 = tail call i8* @__rust_allocate(i64 16384, i64 4) #2, !noalias !1
%2 = icmp eq i8* %1, null
br i1 %2, label %bb10.i.i.i.i.i, label %bb4
bb10.i.i.i.i.i: ; preds = %bb6.i.i.i.i.i
invoke void @_ZN5alloc3oom3oom17h97560b93ca17f851E()
to label %.noexc20 unwind label %cleanup
.noexc20: ; preds = %bb10.i.i.i.i.i
unreachable
bb1: ; preds = %bb6.i.i.i.i.i29, %bb9, %cleanup
%personalityslot.sroa.5.0 = phi i32 [ %.fca.1.extract, %cleanup ], [ %.fca.1.extract7, %bb9 ], [ %.fca.1.extract7, %bb6.i.i.i.i.i29 ]
%personalityslot.sroa.0.0 = phi i8* [ %.fca.0.extract4, %cleanup ], [ %.fca.0.extract5, %bb9 ], [ %.fca.0.extract5, %bb6.i.i.i.i.i29 ]
%.fca.0.insert = insertvalue { i8*, i32 } undef, i8* %personalityslot.sroa.0.0, 0
%.fca.1.insert = insertvalue { i8*, i32 } %.fca.0.insert, i32 %personalityslot.sroa.5.0, 1
resume { i8*, i32 } %.fca.1.insert
bb4: ; preds = %bb6.i.i.i.i.i
%3 = ptrtoint i8* %1 to i64
%4 = bitcast %"15.ndarray::ArrayBase<std::vec::Vec<i32>, (usize, usize)>"* %dummy.i to i8*
call void @llvm.memset.p0i8.i64(i8* nonnull %1, i8 0, i64 16384, i32 4, i1 false)
call void @llvm.lifetime.start(i64 64, i8* %4) #2, !noalias !12
%_9.sroa.0.0..sroa_cast = bitcast %"15.ndarray::ArrayBase<std::vec::Vec<i32>, (usize, usize)>"* %dummy.i to i64*
store i64 %3, i64* %_9.sroa.0.0..sroa_cast, align 8
%_9.sroa.4.0..sroa_idx70 = getelementptr inbounds %"15.ndarray::ArrayBase<std::vec::Vec<i32>, (usize, usize)>", %"15.ndarray::ArrayBase<std::vec::Vec<i32>, (usize, usize)>"* %dummy.i, i64 0, i32 0, i32 0, i32 1
store i64 4096, i64* %_9.sroa.4.0..sroa_idx70, align 8
%_9.sroa.5.0..sroa_idx72 = getelementptr inbounds %"15.ndarray::ArrayBase<std::vec::Vec<i32>, (usize, usize)>", %"15.ndarray::ArrayBase<std::vec::Vec<i32>, (usize, usize)>"* %dummy.i, i64 0, i32 0, i32 1
store i64 4096, i64* %_9.sroa.5.0..sroa_idx72, align 8
%_9.sroa.6.0..sroa_idx74 = getelementptr inbounds %"15.ndarray::ArrayBase<std::vec::Vec<i32>, (usize, usize)>", %"15.ndarray::ArrayBase<std::vec::Vec<i32>, (usize, usize)>"* %dummy.i, i64 0, i32 1
%_9.sroa.6.0..sroa_cast = bitcast i32** %_9.sroa.6.0..sroa_idx74 to i64*
store i64 %3, i64* %_9.sroa.6.0..sroa_cast, align 8
%_9.sroa.7.0..sroa_idx76 = getelementptr inbounds %"15.ndarray::ArrayBase<std::vec::Vec<i32>, (usize, usize)>", %"15.ndarray::ArrayBase<std::vec::Vec<i32>, (usize, usize)>"* %dummy.i, i64 0, i32 2, i32 0
%_9.sroa.8.0..sroa_idx78 = getelementptr inbounds %"15.ndarray::ArrayBase<std::vec::Vec<i32>, (usize, usize)>", %"15.ndarray::ArrayBase<std::vec::Vec<i32>, (usize, usize)>"* %dummy.i, i64 0, i32 2, i32 1
%_9.sroa.9.0..sroa_idx80 = getelementptr inbounds %"15.ndarray::ArrayBase<std::vec::Vec<i32>, (usize, usize)>", %"15.ndarray::ArrayBase<std::vec::Vec<i32>, (usize, usize)>"* %dummy.i, i64 0, i32 3, i32 0
%_9.sroa.10.0..sroa_idx82 = getelementptr inbounds %"15.ndarray::ArrayBase<std::vec::Vec<i32>, (usize, usize)>", %"15.ndarray::ArrayBase<std::vec::Vec<i32>, (usize, usize)>"* %dummy.i, i64 0, i32 3, i32 1
%5 = bitcast i64* %_9.sroa.7.0..sroa_idx76 to <4 x i64>*
store <4 x i64> <i64 64, i64 64, i64 1, i64 64>, <4 x i64>* %5, align 8
call void asm "", "r,~{dirflag},~{fpsr},~{flags}"(%"15.ndarray::ArrayBase<std::vec::Vec<i32>, (usize, usize)>"* nonnull %dummy.i) #2, !noalias !12, !srcloc !16
%a1.sroa.0.0..sroa_cast34 = bitcast %"15.ndarray::ArrayBase<std::vec::Vec<i32>, (usize, usize)>"* %dummy.i to i8**
%a1.sroa.0.0.copyload = load i8*, i8** %a1.sroa.0.0..sroa_cast34, align 8
%a1.sroa.5.0.copyload = load i64, i64* %_9.sroa.4.0..sroa_idx70, align 8
%a1.sroa.740.0.copyload = load i64, i64* %_9.sroa.6.0..sroa_cast, align 8
%a1.sroa.8.0.copyload = load i64, i64* %_9.sroa.7.0..sroa_idx76, align 8
%a1.sroa.9.0.copyload = load i64, i64* %_9.sroa.8.0..sroa_idx78, align 8
%a1.sroa.10.0.copyload = load i64, i64* %_9.sroa.9.0..sroa_idx80, align 8
%a1.sroa.11.0.copyload = load i64, i64* %_9.sroa.10.0..sroa_idx82, align 8
call void @llvm.lifetime.end(i64 64, i8* %4) #2, !noalias !12
%6 = bitcast %"1.std::time::Duration"* %tmp_ret2.i to i8*
call void @llvm.lifetime.start(i64 16, i8* %6)
%7 = bitcast %"1.std::time::Instant"* %start1.i to i8*
call void @llvm.lifetime.start(i64 16, i8* %7)
invoke void @_ZN3std4time7Instant3now17h5851ec34f9ff4cdfE(%"1.std::time::Instant"* noalias nocapture nonnull sret dereferenceable(16) %start1.i)
to label %.noexc22 unwind label %bb9
.noexc22: ; preds = %bb4
%8 = getelementptr inbounds %"12.test::Bencher", %"12.test::Bencher"* %0, i64 0, i32 0
%9 = load i64, i64* %8, align 8
%10 = icmp eq i64 %9, 0
br i1 %10, label %bb8.i, label %bb7.lr.ph.i
bb7.lr.ph.i: ; preds = %.noexc22
%11 = bitcast %"15.ndarray::ArrayBase<ndarray::ViewRepr<&i32>, (usize, usize)>"* %self.i.i.i.i to i8*
%_11.sroa.0.0..sroa_cast7.i.i.i = bitcast %"15.ndarray::ArrayBase<ndarray::ViewRepr<&i32>, (usize, usize)>"* %self.i.i.i.i to i64*
%_11.sroa.4.0..sroa_idx9.i.i.i = getelementptr inbounds %"15.ndarray::ArrayBase<ndarray::ViewRepr<&i32>, (usize, usize)>", %"15.ndarray::ArrayBase<ndarray::ViewRepr<&i32>, (usize, usize)>"* %self.i.i.i.i, i64 0, i32 2, i32 0
%_11.sroa.5.0..sroa_idx11.i.i.i = getelementptr inbounds %"15.ndarray::ArrayBase<ndarray::ViewRepr<&i32>, (usize, usize)>", %"15.ndarray::ArrayBase<ndarray::ViewRepr<&i32>, (usize, usize)>"* %self.i.i.i.i, i64 0, i32 2, i32 1
%_11.sroa.6.0..sroa_idx13.i.i.i = getelementptr inbounds %"15.ndarray::ArrayBase<ndarray::ViewRepr<&i32>, (usize, usize)>", %"15.ndarray::ArrayBase<ndarray::ViewRepr<&i32>, (usize, usize)>"* %self.i.i.i.i, i64 0, i32 3, i32 0
%_11.sroa.7.0..sroa_idx15.i.i.i = getelementptr inbounds %"15.ndarray::ArrayBase<ndarray::ViewRepr<&i32>, (usize, usize)>", %"15.ndarray::ArrayBase<ndarray::ViewRepr<&i32>, (usize, usize)>"* %self.i.i.i.i, i64 0, i32 3, i32 1
%12 = bitcast { i64, i64 }* %defaults.i.i.i.i.i.i to i8*
%13 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %defaults.i.i.i.i.i.i, i64 0, i32 0
%14 = getelementptr inbounds { i64, i64 }, { i64, i64 }* %defaults.i.i.i.i.i.i, i64 0, i32 1
%15 = bitcast i32* %dummy.i.i to i8*
%16 = icmp eq i64 %a1.sroa.10.0.copyload, %a1.sroa.9.0.copyload
%17 = icmp eq i64 %a1.sroa.11.0.copyload, 1
%or.cond.i.i.i.i.i.i.i = and i1 %16, %17
%18 = inttoptr i64 %a1.sroa.740.0.copyload to i32*
%switchtmp.i.i.i.i = icmp eq i64 %a1.sroa.740.0.copyload, 0
%19 = mul i64 %a1.sroa.9.0.copyload, %a1.sroa.8.0.copyload
%20 = getelementptr inbounds i32, i32* %18, i64 %19
%21 = icmp eq i64 %19, 0
%22 = icmp ne i64 %a1.sroa.8.0.copyload, 0
%23 = icmp ne i64 %a1.sroa.9.0.copyload, 0
%or.cond.i.i.i.i.i.i.i.i = and i1 %22, %23
%24 = mul i64 %a1.sroa.9.0.copyload, %a1.sroa.8.0.copyload
%25 = shl i64 %24, 2
%26 = add i64 %25, -4
%27 = lshr exact i64 %26, 2
%28 = add nuw nsw i64 %27, 1
br i1 %or.cond.i.i.i.i.i.i.i, label %bb7.i.us.preheader, label %bb7.i.preheader
bb7.i.preheader: ; preds = %bb7.lr.ph.i
%29 = and i64 %28, 9223372036854775792
%30 = add nsw i64 %29, -16
%31 = lshr exact i64 %30, 4
%32 = add nuw nsw i64 %31, 1
%min.iters.check = icmp ult i64 %28, 16
%n.vec = and i64 %28, 9223372036854775792
%cmp.zero = icmp eq i64 %n.vec, 0
%ind.end = getelementptr i32, i32* %18, i64 %n.vec
%xtraiter216 = and i64 %32, 1
%33 = icmp eq i64 %31, 0
%lcmp.mod217 = icmp eq i64 %xtraiter216, 0
%cmp.n = icmp eq i64 %28, %n.vec
%unroll_iter218 = sub nsw i64 %32, %xtraiter216
br label %bb7.i
bb7.i.us.preheader: ; preds = %bb7.lr.ph.i
%34 = and i64 %28, 9223372036854775792
%35 = add nsw i64 %34, -16
%36 = lshr exact i64 %35, 4
%37 = add nuw nsw i64 %36, 1
%min.iters.check141 = icmp ult i64 %28, 16
%n.vec144 = and i64 %28, 9223372036854775792
%cmp.zero145 = icmp eq i64 %n.vec144, 0
%ind.end150 = getelementptr i32, i32* %18, i64 %n.vec144
%xtraiter = and i64 %37, 1
%38 = icmp eq i64 %36, 0
%lcmp.mod = icmp eq i64 %xtraiter, 0
%cmp.n151 = icmp eq i64 %28, %n.vec144
%unroll_iter = sub nsw i64 %37, %xtraiter
br label %bb7.i.us
bb7.i.us: ; preds = %bb7.i.us.preheader, %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hde09c7434608be03E.exit.i.us"
%iter.sroa.0.036.i.us = phi i64 [ %39, %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hde09c7434608be03E.exit.i.us" ], [ 0, %bb7.i.us.preheader ]
%39 = add nuw i64 %iter.sroa.0.036.i.us, 1
br i1 %switchtmp.i.i.i.i, label %bb3.us.preheader.i.i.us, label %bb3.preheader.i.i.us
bb3.preheader.i.i.us: ; preds = %bb7.i.us
br i1 %21, label %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hde09c7434608be03E.exit.i.us", label %bb6.i.i21.us.preheader
bb6.i.i21.us.preheader: ; preds = %bb3.preheader.i.i.us
br i1 %min.iters.check141, label %bb6.i.i21.us.preheader202, label %min.iters.checked142
min.iters.checked142: ; preds = %bb6.i.i21.us.preheader
br i1 %cmp.zero145, label %bb6.i.i21.us.preheader202, label %vector.body138.preheader
vector.body138.preheader: ; preds = %min.iters.checked142
br i1 %38, label %middle.block139.unr-lcssa, label %vector.body138.preheader.new
vector.body138.preheader.new: ; preds = %vector.body138.preheader
br label %vector.body138
vector.body138: ; preds = %vector.body138, %vector.body138.preheader.new
%index147 = phi i64 [ 0, %vector.body138.preheader.new ], [ %index.next148.1, %vector.body138 ]
%vec.phi152 = phi <4 x i32> [ zeroinitializer, %vector.body138.preheader.new ], [ %58, %vector.body138 ]
%vec.phi153 = phi <4 x i32> [ zeroinitializer, %vector.body138.preheader.new ], [ %59, %vector.body138 ]
%vec.phi154 = phi <4 x i32> [ zeroinitializer, %vector.body138.preheader.new ], [ %60, %vector.body138 ]
%vec.phi155 = phi <4 x i32> [ zeroinitializer, %vector.body138.preheader.new ], [ %61, %vector.body138 ]
%niter = phi i64 [ %unroll_iter, %vector.body138.preheader.new ], [ %niter.nsub.1, %vector.body138 ]
%next.gep156 = getelementptr i32, i32* %18, i64 %index147
%40 = bitcast i32* %next.gep156 to <4 x i32>*
%wide.load188 = load <4 x i32>, <4 x i32>* %40, align 4
%41 = getelementptr i32, i32* %next.gep156, i64 4
%42 = bitcast i32* %41 to <4 x i32>*
%wide.load189 = load <4 x i32>, <4 x i32>* %42, align 4
%43 = getelementptr i32, i32* %next.gep156, i64 8
%44 = bitcast i32* %43 to <4 x i32>*
%wide.load190 = load <4 x i32>, <4 x i32>* %44, align 4
%45 = getelementptr i32, i32* %next.gep156, i64 12
%46 = bitcast i32* %45 to <4 x i32>*
%wide.load191 = load <4 x i32>, <4 x i32>* %46, align 4
%47 = add <4 x i32> %wide.load188, %vec.phi152
%48 = add <4 x i32> %wide.load189, %vec.phi153
%49 = add <4 x i32> %wide.load190, %vec.phi154
%50 = add <4 x i32> %wide.load191, %vec.phi155
%index.next148 = or i64 %index147, 16
%next.gep156.1 = getelementptr i32, i32* %18, i64 %index.next148
%51 = bitcast i32* %next.gep156.1 to <4 x i32>*
%wide.load188.1 = load <4 x i32>, <4 x i32>* %51, align 4
%52 = getelementptr i32, i32* %next.gep156.1, i64 4
%53 = bitcast i32* %52 to <4 x i32>*
%wide.load189.1 = load <4 x i32>, <4 x i32>* %53, align 4
%54 = getelementptr i32, i32* %next.gep156.1, i64 8
%55 = bitcast i32* %54 to <4 x i32>*
%wide.load190.1 = load <4 x i32>, <4 x i32>* %55, align 4
%56 = getelementptr i32, i32* %next.gep156.1, i64 12
%57 = bitcast i32* %56 to <4 x i32>*
%wide.load191.1 = load <4 x i32>, <4 x i32>* %57, align 4
%58 = add <4 x i32> %wide.load188.1, %47
%59 = add <4 x i32> %wide.load189.1, %48
%60 = add <4 x i32> %wide.load190.1, %49
%61 = add <4 x i32> %wide.load191.1, %50
%index.next148.1 = add i64 %index147, 32
%niter.nsub.1 = add i64 %niter, -2
%niter.ncmp.1 = icmp eq i64 %niter.nsub.1, 0
br i1 %niter.ncmp.1, label %middle.block139.unr-lcssa.loopexit, label %vector.body138, !llvm.loop !17
middle.block139.unr-lcssa.loopexit: ; preds = %vector.body138
br label %middle.block139.unr-lcssa
middle.block139.unr-lcssa: ; preds = %middle.block139.unr-lcssa.loopexit, %vector.body138.preheader
%.lcssa209.ph = phi <4 x i32> [ undef, %vector.body138.preheader ], [ %58, %middle.block139.unr-lcssa.loopexit ]
%.lcssa208.ph = phi <4 x i32> [ undef, %vector.body138.preheader ], [ %59, %middle.block139.unr-lcssa.loopexit ]
%.lcssa207.ph = phi <4 x i32> [ undef, %vector.body138.preheader ], [ %60, %middle.block139.unr-lcssa.loopexit ]
%.lcssa.ph = phi <4 x i32> [ undef, %vector.body138.preheader ], [ %61, %middle.block139.unr-lcssa.loopexit ]
%index147.unr = phi i64 [ 0, %vector.body138.preheader ], [ %index.next148.1, %middle.block139.unr-lcssa.loopexit ]
%vec.phi152.unr = phi <4 x i32> [ zeroinitializer, %vector.body138.preheader ], [ %58, %middle.block139.unr-lcssa.loopexit ]
%vec.phi153.unr = phi <4 x i32> [ zeroinitializer, %vector.body138.preheader ], [ %59, %middle.block139.unr-lcssa.loopexit ]
%vec.phi154.unr = phi <4 x i32> [ zeroinitializer, %vector.body138.preheader ], [ %60, %middle.block139.unr-lcssa.loopexit ]
%vec.phi155.unr = phi <4 x i32> [ zeroinitializer, %vector.body138.preheader ], [ %61, %middle.block139.unr-lcssa.loopexit ]
br i1 %lcmp.mod, label %middle.block139, label %vector.body138.epil.preheader
vector.body138.epil.preheader: ; preds = %middle.block139.unr-lcssa
br label %vector.body138.epil
vector.body138.epil: ; preds = %vector.body138.epil.preheader
%next.gep156.epil = getelementptr i32, i32* %18, i64 %index147.unr
br label %middle.block139.epilog-lcssa
middle.block139.epilog-lcssa: ; preds = %vector.body138.epil
%62 = getelementptr i32, i32* %next.gep156.epil, i64 12
%63 = bitcast i32* %62 to <4 x i32>*
%wide.load191.epil = load <4 x i32>, <4 x i32>* %63, align 4
%64 = add <4 x i32> %wide.load191.epil, %vec.phi155.unr
%65 = getelementptr i32, i32* %next.gep156.epil, i64 8
%66 = bitcast i32* %65 to <4 x i32>*
%wide.load190.epil = load <4 x i32>, <4 x i32>* %66, align 4
%67 = add <4 x i32> %wide.load190.epil, %vec.phi154.unr
%68 = getelementptr i32, i32* %next.gep156.epil, i64 4
%69 = bitcast i32* %68 to <4 x i32>*
%wide.load189.epil = load <4 x i32>, <4 x i32>* %69, align 4
%70 = add <4 x i32> %wide.load189.epil, %vec.phi153.unr
%71 = bitcast i32* %next.gep156.epil to <4 x i32>*
%wide.load188.epil = load <4 x i32>, <4 x i32>* %71, align 4
%72 = add <4 x i32> %wide.load188.epil, %vec.phi152.unr
br label %middle.block139
middle.block139: ; preds = %middle.block139.unr-lcssa, %middle.block139.epilog-lcssa
%.lcssa209 = phi <4 x i32> [ %.lcssa209.ph, %middle.block139.unr-lcssa ], [ %72, %middle.block139.epilog-lcssa ]
%.lcssa208 = phi <4 x i32> [ %.lcssa208.ph, %middle.block139.unr-lcssa ], [ %70, %middle.block139.epilog-lcssa ]
%.lcssa207 = phi <4 x i32> [ %.lcssa207.ph, %middle.block139.unr-lcssa ], [ %67, %middle.block139.epilog-lcssa ]
%.lcssa = phi <4 x i32> [ %.lcssa.ph, %middle.block139.unr-lcssa ], [ %64, %middle.block139.epilog-lcssa ]
%bin.rdx194 = add <4 x i32> %.lcssa208, %.lcssa209
%bin.rdx195 = add <4 x i32> %.lcssa207, %bin.rdx194
%bin.rdx196 = add <4 x i32> %.lcssa, %bin.rdx195
%rdx.shuf197 = shufflevector <4 x i32> %bin.rdx196, <4 x i32> undef, <4 x i32> <i32 2, i32 3, i32 undef, i32 undef>
%bin.rdx198 = add <4 x i32> %bin.rdx196, %rdx.shuf197
%rdx.shuf199 = shufflevector <4 x i32> %bin.rdx198, <4 x i32> undef, <4 x i32> <i32 1, i32 undef, i32 undef, i32 undef>
%bin.rdx200 = add <4 x i32> %bin.rdx198, %rdx.shuf199
%73 = extractelement <4 x i32> %bin.rdx200, i32 0
br i1 %cmp.n151, label %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hde09c7434608be03E.exit.i.us", label %bb6.i.i21.us.preheader202
bb6.i.i21.us.preheader202: ; preds = %middle.block139, %min.iters.checked142, %bb6.i.i21.us.preheader
%sum.0.i29.i.us.ph = phi i32 [ 0, %min.iters.checked142 ], [ 0, %bb6.i.i21.us.preheader ], [ %73, %middle.block139 ]
%iter.sroa.4.0.i28.i.us.ph = phi i32* [ %18, %min.iters.checked142 ], [ %18, %bb6.i.i21.us.preheader ], [ %ind.end150, %middle.block139 ]
br label %bb6.i.i21.us
bb6.i.i21.us: ; preds = %bb6.i.i21.us.preheader202, %bb6.i.i21.us
%sum.0.i29.i.us = phi i32 [ %76, %bb6.i.i21.us ], [ %sum.0.i29.i.us.ph, %bb6.i.i21.us.preheader202 ]
%iter.sroa.4.0.i28.i.us = phi i32* [ %74, %bb6.i.i21.us ], [ %iter.sroa.4.0.i28.i.us.ph, %bb6.i.i21.us.preheader202 ]
%74 = getelementptr inbounds i32, i32* %iter.sroa.4.0.i28.i.us, i64 1
%75 = load i32, i32* %iter.sroa.4.0.i28.i.us, align 4
%76 = add i32 %75, %sum.0.i29.i.us
%77 = icmp eq i32* %74, %20
br i1 %77, label %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hde09c7434608be03E.exit.i.us.loopexit203", label %bb6.i.i21.us, !llvm.loop !20
bb3.us.preheader.i.i.us: ; preds = %bb7.i.us
br i1 %or.cond.i.i.i.i.i.i.i.i, label %bb4.i.i.i.i.us.i.i.us.preheader, label %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hde09c7434608be03E.exit.i.us"
bb4.i.i.i.i.us.i.i.us.preheader: ; preds = %bb3.us.preheader.i.i.us
br label %bb4.i.i.i.i.us.i.i.us
bb4.i.i.i.i.us.i.i.us: ; preds = %bb4.i.i.i.i.us.i.i.us.preheader, %bb6.us.i.i.us
%sum.0.us.i33.i.us = phi i32 [ %86, %bb6.us.i.i.us ], [ 0, %bb4.i.i.i.i.us.i.i.us.preheader ]
%iter.sroa.14.0.us.i32.i.us = phi i64 [ %_13.sroa.5.0.i.i.i.i.us.i.i.us, %bb6.us.i.i.us ], [ 0, %bb4.i.i.i.i.us.i.i.us.preheader ]
%iter.sroa.16.0.us.i31.i.us = phi i64 [ %_13.sroa.6.0.i.i.i.i.us.i.i.us, %bb6.us.i.i.us ], [ 0, %bb4.i.i.i.i.us.i.i.us.preheader ]
%78 = mul i64 %iter.sroa.14.0.us.i32.i.us, %a1.sroa.9.0.copyload
%79 = add i64 %iter.sroa.16.0.us.i31.i.us, %78
%80 = add i64 %iter.sroa.16.0.us.i31.i.us, 1
%81 = icmp eq i64 %80, %a1.sroa.9.0.copyload
br i1 %81, label %bb1.i.i.i.i.i.us.i.i.us, label %bb6.i.i.i.i.i.us.i.i.us
bb1.i.i.i.i.i.us.i.i.us: ; preds = %bb4.i.i.i.i.us.i.i.us
%82 = add i64 %iter.sroa.14.0.us.i32.i.us, 1
%83 = icmp eq i64 %82, %a1.sroa.8.0.copyload
br i1 %83, label %"_ZN76_$LT$$LP$usize$C$$u20$usize$RP$$u20$as$u20$ndarray..dimension..Dimension$GT$8next_for17h04b0fe300a278d57E.exit.i.i.i.i.us.i.i.us", label %bb6.i.i.i.i.i.us.i.i.us
bb6.i.i.i.i.i.us.i.i.us: ; preds = %bb1.i.i.i.i.i.us.i.i.us, %bb4.i.i.i.i.us.i.i.us
%j.0.i.i.i.i.i.us.i.i.us = phi i64 [ 0, %bb1.i.i.i.i.i.us.i.i.us ], [ %80, %bb4.i.i.i.i.us.i.i.us ]
%i.0.i.i.i.i.i.us.i.i.us = phi i64 [ %82, %bb1.i.i.i.i.i.us.i.i.us ], [ %iter.sroa.14.0.us.i32.i.us, %bb4.i.i.i.i.us.i.i.us ]
br label %"_ZN76_$LT$$LP$usize$C$$u20$usize$RP$$u20$as$u20$ndarray..dimension..Dimension$GT$8next_for17h04b0fe300a278d57E.exit.i.i.i.i.us.i.i.us"
"_ZN76_$LT$$LP$usize$C$$u20$usize$RP$$u20$as$u20$ndarray..dimension..Dimension$GT$8next_for17h04b0fe300a278d57E.exit.i.i.i.i.us.i.i.us": ; preds = %bb6.i.i.i.i.i.us.i.i.us, %bb1.i.i.i.i.i.us.i.i.us
%_13.sroa.0.0.i.i.i.i.us.i.i.us = phi i64 [ 1, %bb6.i.i.i.i.i.us.i.i.us ], [ 0, %bb1.i.i.i.i.i.us.i.i.us ]
%_13.sroa.5.0.i.i.i.i.us.i.i.us = phi i64 [ %i.0.i.i.i.i.i.us.i.i.us, %bb6.i.i.i.i.i.us.i.i.us ], [ undef, %bb1.i.i.i.i.i.us.i.i.us ]
%_13.sroa.6.0.i.i.i.i.us.i.i.us = phi i64 [ %j.0.i.i.i.i.i.us.i.i.us, %bb6.i.i.i.i.i.us.i.i.us ], [ undef, %bb1.i.i.i.i.i.us.i.i.us ]
%84 = getelementptr inbounds i32, i32* %18, i64 %79
%switchtmp.us.i.i.us = icmp eq i32* %84, null
br i1 %switchtmp.us.i.i.us, label %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hde09c7434608be03E.exit.i.us.loopexit", label %bb6.us.i.i.us
bb6.us.i.i.us: ; preds = %"_ZN76_$LT$$LP$usize$C$$u20$usize$RP$$u20$as$u20$ndarray..dimension..Dimension$GT$8next_for17h04b0fe300a278d57E.exit.i.i.i.i.us.i.i.us"
%85 = load i32, i32* %84, align 4
%86 = add i32 %85, %sum.0.us.i33.i.us
%switch.i.i.i.i.us.i.i.us = icmp eq i64 %_13.sroa.0.0.i.i.i.i.us.i.i.us, 1
br i1 %switch.i.i.i.i.us.i.i.us, label %bb4.i.i.i.i.us.i.i.us, label %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hde09c7434608be03E.exit.i.us.loopexit"
"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hde09c7434608be03E.exit.i.us.loopexit": ; preds = %bb6.us.i.i.us, %"_ZN76_$LT$$LP$usize$C$$u20$usize$RP$$u20$as$u20$ndarray..dimension..Dimension$GT$8next_for17h04b0fe300a278d57E.exit.i.i.i.i.us.i.i.us"
%sum.0.lcssa.i.i.us.ph = phi i32 [ %86, %bb6.us.i.i.us ], [ %sum.0.us.i33.i.us, %"_ZN76_$LT$$LP$usize$C$$u20$usize$RP$$u20$as$u20$ndarray..dimension..Dimension$GT$8next_for17h04b0fe300a278d57E.exit.i.i.i.i.us.i.i.us" ]
br label %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hde09c7434608be03E.exit.i.us"
"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hde09c7434608be03E.exit.i.us.loopexit203": ; preds = %bb6.i.i21.us
br label %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hde09c7434608be03E.exit.i.us"
"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hde09c7434608be03E.exit.i.us": ; preds = %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hde09c7434608be03E.exit.i.us.loopexit203", %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hde09c7434608be03E.exit.i.us.loopexit", %middle.block139, %bb3.us.preheader.i.i.us, %bb3.preheader.i.i.us
%sum.0.lcssa.i.i.us = phi i32 [ 0, %bb3.us.preheader.i.i.us ], [ 0, %bb3.preheader.i.i.us ], [ %73, %middle.block139 ], [ %sum.0.lcssa.i.i.us.ph, %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hde09c7434608be03E.exit.i.us.loopexit" ], [ %76, %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hde09c7434608be03E.exit.i.us.loopexit203" ]
call void @llvm.lifetime.start(i64 4, i8* %15) #2
store i32 %sum.0.lcssa.i.i.us, i32* %dummy.i.i, align 4
call void asm "", "r,~{dirflag},~{fpsr},~{flags}"(i32* nonnull %dummy.i.i) #2, !srcloc !16
call void @llvm.lifetime.end(i64 4, i8* %15) #2
%exitcond.i.us = icmp eq i64 %39, %9
br i1 %exitcond.i.us, label %bb8.i.loopexit, label %bb7.i.us
bb7.i: ; preds = %bb7.i.preheader, %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hde09c7434608be03E.exit.i"
%iter.sroa.0.036.i = phi i64 [ %87, %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hde09c7434608be03E.exit.i" ], [ 0, %bb7.i.preheader ]
%87 = add nuw i64 %iter.sroa.0.036.i, 1
call void @llvm.lifetime.start(i64 40, i8* %11), !noalias !22
store i64 %a1.sroa.740.0.copyload, i64* %_11.sroa.0.0..sroa_cast7.i.i.i, align 8, !noalias !29
store i64 %a1.sroa.8.0.copyload, i64* %_11.sroa.4.0..sroa_idx9.i.i.i, align 8, !noalias !29
store i64 %a1.sroa.9.0.copyload, i64* %_11.sroa.5.0..sroa_idx11.i.i.i, align 8, !noalias !29
store i64 %a1.sroa.10.0.copyload, i64* %_11.sroa.6.0..sroa_idx13.i.i.i, align 8, !noalias !29
store i64 %a1.sroa.11.0.copyload, i64* %_11.sroa.7.0..sroa_idx15.i.i.i, align 8, !noalias !29
call void @llvm.lifetime.start(i64 16, i8* %12), !noalias !30
store i64 %a1.sroa.9.0.copyload, i64* %13, align 8, !alias.scope !36, !noalias !30
store i64 1, i64* %14, align 8, !alias.scope !36, !noalias !30
br label %bb18.i.i.i.i.i.i
bb18.i.i.i.i.i.i: ; preds = %bb7.i, %"_ZN145_$LT$itertools..cons_tuples_impl..ConsTuples$LT$Iter$C$$u20$$LP$$LP$G$C$$u20$H$RP$$C$$u20$X$RP$$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$4next17hef7423d175aa3a15E.exit.i.i.i.i.i.i"
%iter.sroa.738.0.i.i.i.i.i.i = phi i64 [ %92, %"_ZN145_$LT$itertools..cons_tuples_impl..ConsTuples$LT$Iter$C$$u20$$LP$$LP$G$C$$u20$H$RP$$C$$u20$X$RP$$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$4next17hef7423d175aa3a15E.exit.i.i.i.i.i.i" ], [ 0, %bb7.i ]
%88 = icmp ult i64 %iter.sroa.738.0.i.i.i.i.i.i, 2
br i1 %88, label %"_ZN145_$LT$itertools..cons_tuples_impl..ConsTuples$LT$Iter$C$$u20$$LP$$LP$G$C$$u20$H$RP$$C$$u20$X$RP$$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$4next17hef7423d175aa3a15E.exit.i.i.i.i.i.i", label %"_ZN7ndarray12impl_methods54_$LT$impl$u20$ndarray..ArrayBase$LT$S$C$$u20$D$GT$$GT$18is_standard_layout17he690d19e37be350fE.exit.thread.i.i.i.i.i"
"_ZN145_$LT$itertools..cons_tuples_impl..ConsTuples$LT$Iter$C$$u20$$LP$$LP$G$C$$u20$H$RP$$C$$u20$X$RP$$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$4next17hef7423d175aa3a15E.exit.i.i.i.i.i.i": ; preds = %bb18.i.i.i.i.i.i
%89 = getelementptr inbounds i64, i64* %_11.sroa.4.0..sroa_idx9.i.i.i, i64 %iter.sroa.738.0.i.i.i.i.i.i
%90 = getelementptr inbounds i64, i64* %_11.sroa.6.0..sroa_idx13.i.i.i, i64 %iter.sroa.738.0.i.i.i.i.i.i
%91 = getelementptr inbounds i64, i64* %13, i64 %iter.sroa.738.0.i.i.i.i.i.i
%92 = add nuw nsw i64 %iter.sroa.738.0.i.i.i.i.i.i, 1
%93 = load i64, i64* %89, align 8, !alias.scope !39, !noalias !40
%94 = load i64, i64* %90, align 8, !alias.scope !39, !noalias !40
%95 = load i64, i64* %91, align 8, !noalias !30
%96 = icmp ne i64 %93, 1
%97 = icmp ne i64 %94, %95
%or.cond.i.i.i.i.i.i = and i1 %96, %97
br i1 %or.cond.i.i.i.i.i.i, label %"_ZN85_$LT$ndarray..ArrayBase$LT$ndarray..ViewRepr$LT$$RF$$u27$a$u20$A$GT$$C$$u20$D$GT$$GT$10into_slice17hbd80c1dc13b299edE.exit.thread.i.i.i.i", label %bb18.i.i.i.i.i.i
"_ZN7ndarray12impl_methods54_$LT$impl$u20$ndarray..ArrayBase$LT$S$C$$u20$D$GT$$GT$18is_standard_layout17he690d19e37be350fE.exit.thread.i.i.i.i.i": ; preds = %bb18.i.i.i.i.i.i
call void @llvm.lifetime.end(i64 16, i8* nonnull %12), !noalias !30
br i1 %switchtmp.i.i.i.i, label %bb3.us.preheader.i.i, label %bb3.preheader.i.i
"_ZN85_$LT$ndarray..ArrayBase$LT$ndarray..ViewRepr$LT$$RF$$u27$a$u20$A$GT$$C$$u20$D$GT$$GT$10into_slice17hbd80c1dc13b299edE.exit.thread.i.i.i.i": ; preds = %"_ZN145_$LT$itertools..cons_tuples_impl..ConsTuples$LT$Iter$C$$u20$$LP$$LP$G$C$$u20$H$RP$$C$$u20$X$RP$$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$4next17hef7423d175aa3a15E.exit.i.i.i.i.i.i"
call void @llvm.lifetime.end(i64 16, i8* nonnull %12), !noalias !30
br label %bb3.us.preheader.i.i
bb3.preheader.i.i: ; preds = %"_ZN7ndarray12impl_methods54_$LT$impl$u20$ndarray..ArrayBase$LT$S$C$$u20$D$GT$$GT$18is_standard_layout17he690d19e37be350fE.exit.thread.i.i.i.i.i"
call void @llvm.lifetime.end(i64 40, i8* nonnull %11), !noalias !22
br i1 %21, label %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hde09c7434608be03E.exit.i", label %bb6.i.i21.preheader
bb6.i.i21.preheader: ; preds = %bb3.preheader.i.i
br i1 %min.iters.check, label %bb6.i.i21.preheader204, label %min.iters.checked
bb6.i.i21.preheader204: ; preds = %middle.block, %min.iters.checked, %bb6.i.i21.preheader
%sum.0.i29.i.ph = phi i32 [ 0, %min.iters.checked ], [ 0, %bb6.i.i21.preheader ], [ %131, %middle.block ]
%iter.sroa.4.0.i28.i.ph = phi i32* [ %18, %min.iters.checked ], [ %18, %bb6.i.i21.preheader ], [ %ind.end, %middle.block ]
br label %bb6.i.i21
min.iters.checked: ; preds = %bb6.i.i21.preheader
br i1 %cmp.zero, label %bb6.i.i21.preheader204, label %vector.body.preheader
vector.body.preheader: ; preds = %min.iters.checked
br i1 %33, label %middle.block.unr-lcssa, label %vector.body.preheader.new
vector.body.preheader.new: ; preds = %vector.body.preheader
br label %vector.body
vector.body: ; preds = %vector.body, %vector.body.preheader.new
%index = phi i64 [ 0, %vector.body.preheader.new ], [ %index.next.1, %vector.body ]
%vec.phi = phi <4 x i32> [ zeroinitializer, %vector.body.preheader.new ], [ %116, %vector.body ]
%vec.phi97 = phi <4 x i32> [ zeroinitializer, %vector.body.preheader.new ], [ %117, %vector.body ]
%vec.phi98 = phi <4 x i32> [ zeroinitializer, %vector.body.preheader.new ], [ %118, %vector.body ]
%vec.phi99 = phi <4 x i32> [ zeroinitializer, %vector.body.preheader.new ], [ %119, %vector.body ]
%niter219 = phi i64 [ %unroll_iter218, %vector.body.preheader.new ], [ %niter219.nsub.1, %vector.body ]
%next.gep = getelementptr i32, i32* %18, i64 %index
%98 = bitcast i32* %next.gep to <4 x i32>*
%wide.load = load <4 x i32>, <4 x i32>* %98, align 4
%99 = getelementptr i32, i32* %next.gep, i64 4
%100 = bitcast i32* %99 to <4 x i32>*
%wide.load130 = load <4 x i32>, <4 x i32>* %100, align 4
%101 = getelementptr i32, i32* %next.gep, i64 8
%102 = bitcast i32* %101 to <4 x i32>*
%wide.load131 = load <4 x i32>, <4 x i32>* %102, align 4
%103 = getelementptr i32, i32* %next.gep, i64 12
%104 = bitcast i32* %103 to <4 x i32>*
%wide.load132 = load <4 x i32>, <4 x i32>* %104, align 4
%105 = add <4 x i32> %wide.load, %vec.phi
%106 = add <4 x i32> %wide.load130, %vec.phi97
%107 = add <4 x i32> %wide.load131, %vec.phi98
%108 = add <4 x i32> %wide.load132, %vec.phi99
%index.next = or i64 %index, 16
%next.gep.1 = getelementptr i32, i32* %18, i64 %index.next
%109 = bitcast i32* %next.gep.1 to <4 x i32>*
%wide.load.1 = load <4 x i32>, <4 x i32>* %109, align 4
%110 = getelementptr i32, i32* %next.gep.1, i64 4
%111 = bitcast i32* %110 to <4 x i32>*
%wide.load130.1 = load <4 x i32>, <4 x i32>* %111, align 4
%112 = getelementptr i32, i32* %next.gep.1, i64 8
%113 = bitcast i32* %112 to <4 x i32>*
%wide.load131.1 = load <4 x i32>, <4 x i32>* %113, align 4
%114 = getelementptr i32, i32* %next.gep.1, i64 12
%115 = bitcast i32* %114 to <4 x i32>*
%wide.load132.1 = load <4 x i32>, <4 x i32>* %115, align 4
%116 = add <4 x i32> %wide.load.1, %105
%117 = add <4 x i32> %wide.load130.1, %106
%118 = add <4 x i32> %wide.load131.1, %107
%119 = add <4 x i32> %wide.load132.1, %108
%index.next.1 = add i64 %index, 32
%niter219.nsub.1 = add i64 %niter219, -2
%niter219.ncmp.1 = icmp eq i64 %niter219.nsub.1, 0
br i1 %niter219.ncmp.1, label %middle.block.unr-lcssa.loopexit, label %vector.body, !llvm.loop !41
middle.block.unr-lcssa.loopexit: ; preds = %vector.body
br label %middle.block.unr-lcssa
middle.block.unr-lcssa: ; preds = %middle.block.unr-lcssa.loopexit, %vector.body.preheader
%.lcssa214.ph = phi <4 x i32> [ undef, %vector.body.preheader ], [ %116, %middle.block.unr-lcssa.loopexit ]
%.lcssa213.ph = phi <4 x i32> [ undef, %vector.body.preheader ], [ %117, %middle.block.unr-lcssa.loopexit ]
%.lcssa212.ph = phi <4 x i32> [ undef, %vector.body.preheader ], [ %118, %middle.block.unr-lcssa.loopexit ]
%.lcssa211.ph = phi <4 x i32> [ undef, %vector.body.preheader ], [ %119, %middle.block.unr-lcssa.loopexit ]
%index.unr = phi i64 [ 0, %vector.body.preheader ], [ %index.next.1, %middle.block.unr-lcssa.loopexit ]
%vec.phi.unr = phi <4 x i32> [ zeroinitializer, %vector.body.preheader ], [ %116, %middle.block.unr-lcssa.loopexit ]
%vec.phi97.unr = phi <4 x i32> [ zeroinitializer, %vector.body.preheader ], [ %117, %middle.block.unr-lcssa.loopexit ]
%vec.phi98.unr = phi <4 x i32> [ zeroinitializer, %vector.body.preheader ], [ %118, %middle.block.unr-lcssa.loopexit ]
%vec.phi99.unr = phi <4 x i32> [ zeroinitializer, %vector.body.preheader ], [ %119, %middle.block.unr-lcssa.loopexit ]
br i1 %lcmp.mod217, label %middle.block, label %vector.body.epil.preheader
vector.body.epil.preheader: ; preds = %middle.block.unr-lcssa
br label %vector.body.epil
vector.body.epil: ; preds = %vector.body.epil.preheader
%next.gep.epil = getelementptr i32, i32* %18, i64 %index.unr
br label %middle.block.epilog-lcssa
middle.block.epilog-lcssa: ; preds = %vector.body.epil
%120 = getelementptr i32, i32* %next.gep.epil, i64 12
%121 = bitcast i32* %120 to <4 x i32>*
%wide.load132.epil = load <4 x i32>, <4 x i32>* %121, align 4
%122 = add <4 x i32> %wide.load132.epil, %vec.phi99.unr
%123 = getelementptr i32, i32* %next.gep.epil, i64 8
%124 = bitcast i32* %123 to <4 x i32>*
%wide.load131.epil = load <4 x i32>, <4 x i32>* %124, align 4
%125 = add <4 x i32> %wide.load131.epil, %vec.phi98.unr
%126 = getelementptr i32, i32* %next.gep.epil, i64 4
%127 = bitcast i32* %126 to <4 x i32>*
%wide.load130.epil = load <4 x i32>, <4 x i32>* %127, align 4
%128 = add <4 x i32> %wide.load130.epil, %vec.phi97.unr
%129 = bitcast i32* %next.gep.epil to <4 x i32>*
%wide.load.epil = load <4 x i32>, <4 x i32>* %129, align 4
%130 = add <4 x i32> %wide.load.epil, %vec.phi.unr
br label %middle.block
middle.block: ; preds = %middle.block.unr-lcssa, %middle.block.epilog-lcssa
%.lcssa214 = phi <4 x i32> [ %.lcssa214.ph, %middle.block.unr-lcssa ], [ %130, %middle.block.epilog-lcssa ]
%.lcssa213 = phi <4 x i32> [ %.lcssa213.ph, %middle.block.unr-lcssa ], [ %128, %middle.block.epilog-lcssa ]
%.lcssa212 = phi <4 x i32> [ %.lcssa212.ph, %middle.block.unr-lcssa ], [ %125, %middle.block.epilog-lcssa ]
%.lcssa211 = phi <4 x i32> [ %.lcssa211.ph, %middle.block.unr-lcssa ], [ %122, %middle.block.epilog-lcssa ]
%bin.rdx = add <4 x i32> %.lcssa213, %.lcssa214
%bin.rdx133 = add <4 x i32> %.lcssa212, %bin.rdx
%bin.rdx134 = add <4 x i32> %.lcssa211, %bin.rdx133
%rdx.shuf = shufflevector <4 x i32> %bin.rdx134, <4 x i32> undef, <4 x i32> <i32 2, i32 3, i32 undef, i32 undef>
%bin.rdx135 = add <4 x i32> %bin.rdx134, %rdx.shuf
%rdx.shuf136 = shufflevector <4 x i32> %bin.rdx135, <4 x i32> undef, <4 x i32> <i32 1, i32 undef, i32 undef, i32 undef>
%bin.rdx137 = add <4 x i32> %bin.rdx135, %rdx.shuf136
%131 = extractelement <4 x i32> %bin.rdx137, i32 0
br i1 %cmp.n, label %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hde09c7434608be03E.exit.i", label %bb6.i.i21.preheader204
bb3.us.preheader.i.i: ; preds = %"_ZN7ndarray12impl_methods54_$LT$impl$u20$ndarray..ArrayBase$LT$S$C$$u20$D$GT$$GT$18is_standard_layout17he690d19e37be350fE.exit.thread.i.i.i.i.i", %"_ZN85_$LT$ndarray..ArrayBase$LT$ndarray..ViewRepr$LT$$RF$$u27$a$u20$A$GT$$C$$u20$D$GT$$GT$10into_slice17hbd80c1dc13b299edE.exit.thread.i.i.i.i"
call void @llvm.lifetime.end(i64 40, i8* nonnull %11), !noalias !22
br i1 %or.cond.i.i.i.i.i.i.i.i, label %bb4.i.i.i.i.us.i.i.preheader, label %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hde09c7434608be03E.exit.i"
bb4.i.i.i.i.us.i.i.preheader: ; preds = %bb3.us.preheader.i.i
br label %bb4.i.i.i.i.us.i.i
bb4.i.i.i.i.us.i.i: ; preds = %bb4.i.i.i.i.us.i.i.preheader, %bb6.us.i.i
%sum.0.us.i33.i = phi i32 [ %141, %bb6.us.i.i ], [ 0, %bb4.i.i.i.i.us.i.i.preheader ]
%iter.sroa.14.0.us.i32.i = phi i64 [ %_13.sroa.5.0.i.i.i.i.us.i.i, %bb6.us.i.i ], [ 0, %bb4.i.i.i.i.us.i.i.preheader ]
%iter.sroa.16.0.us.i31.i = phi i64 [ %_13.sroa.6.0.i.i.i.i.us.i.i, %bb6.us.i.i ], [ 0, %bb4.i.i.i.i.us.i.i.preheader ]
%132 = mul i64 %iter.sroa.14.0.us.i32.i, %a1.sroa.10.0.copyload
%133 = mul i64 %iter.sroa.16.0.us.i31.i, %a1.sroa.11.0.copyload
%134 = add i64 %133, %132
%135 = add i64 %iter.sroa.16.0.us.i31.i, 1
%136 = icmp eq i64 %135, %a1.sroa.9.0.copyload
br i1 %136, label %bb1.i.i.i.i.i.us.i.i, label %bb6.i.i.i.i.i.us.i.i
bb1.i.i.i.i.i.us.i.i: ; preds = %bb4.i.i.i.i.us.i.i
%137 = add i64 %iter.sroa.14.0.us.i32.i, 1
%138 = icmp eq i64 %137, %a1.sroa.8.0.copyload
br i1 %138, label %"_ZN76_$LT$$LP$usize$C$$u20$usize$RP$$u20$as$u20$ndarray..dimension..Dimension$GT$8next_for17h04b0fe300a278d57E.exit.i.i.i.i.us.i.i", label %bb6.i.i.i.i.i.us.i.i
bb6.i.i.i.i.i.us.i.i: ; preds = %bb1.i.i.i.i.i.us.i.i, %bb4.i.i.i.i.us.i.i
%j.0.i.i.i.i.i.us.i.i = phi i64 [ 0, %bb1.i.i.i.i.i.us.i.i ], [ %135, %bb4.i.i.i.i.us.i.i ]
%i.0.i.i.i.i.i.us.i.i = phi i64 [ %137, %bb1.i.i.i.i.i.us.i.i ], [ %iter.sroa.14.0.us.i32.i, %bb4.i.i.i.i.us.i.i ]
br label %"_ZN76_$LT$$LP$usize$C$$u20$usize$RP$$u20$as$u20$ndarray..dimension..Dimension$GT$8next_for17h04b0fe300a278d57E.exit.i.i.i.i.us.i.i"
"_ZN76_$LT$$LP$usize$C$$u20$usize$RP$$u20$as$u20$ndarray..dimension..Dimension$GT$8next_for17h04b0fe300a278d57E.exit.i.i.i.i.us.i.i": ; preds = %bb6.i.i.i.i.i.us.i.i, %bb1.i.i.i.i.i.us.i.i
%_13.sroa.0.0.i.i.i.i.us.i.i = phi i64 [ 1, %bb6.i.i.i.i.i.us.i.i ], [ 0, %bb1.i.i.i.i.i.us.i.i ]
%_13.sroa.5.0.i.i.i.i.us.i.i = phi i64 [ %i.0.i.i.i.i.i.us.i.i, %bb6.i.i.i.i.i.us.i.i ], [ undef, %bb1.i.i.i.i.i.us.i.i ]
%_13.sroa.6.0.i.i.i.i.us.i.i = phi i64 [ %j.0.i.i.i.i.i.us.i.i, %bb6.i.i.i.i.i.us.i.i ], [ undef, %bb1.i.i.i.i.i.us.i.i ]
%139 = getelementptr inbounds i32, i32* %18, i64 %134
%switchtmp.us.i.i = icmp eq i32* %139, null
br i1 %switchtmp.us.i.i, label %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hde09c7434608be03E.exit.i.loopexit", label %bb6.us.i.i
bb6.us.i.i: ; preds = %"_ZN76_$LT$$LP$usize$C$$u20$usize$RP$$u20$as$u20$ndarray..dimension..Dimension$GT$8next_for17h04b0fe300a278d57E.exit.i.i.i.i.us.i.i"
%140 = load i32, i32* %139, align 4
%141 = add i32 %140, %sum.0.us.i33.i
%switch.i.i.i.i.us.i.i = icmp eq i64 %_13.sroa.0.0.i.i.i.i.us.i.i, 1
br i1 %switch.i.i.i.i.us.i.i, label %bb4.i.i.i.i.us.i.i, label %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hde09c7434608be03E.exit.i.loopexit"
bb6.i.i21: ; preds = %bb6.i.i21.preheader204, %bb6.i.i21
%sum.0.i29.i = phi i32 [ %144, %bb6.i.i21 ], [ %sum.0.i29.i.ph, %bb6.i.i21.preheader204 ]
%iter.sroa.4.0.i28.i = phi i32* [ %142, %bb6.i.i21 ], [ %iter.sroa.4.0.i28.i.ph, %bb6.i.i21.preheader204 ]
%142 = getelementptr inbounds i32, i32* %iter.sroa.4.0.i28.i, i64 1
%143 = load i32, i32* %iter.sroa.4.0.i28.i, align 4
%144 = add i32 %143, %sum.0.i29.i
%145 = icmp eq i32* %142, %20
br i1 %145, label %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hde09c7434608be03E.exit.i.loopexit205", label %bb6.i.i21, !llvm.loop !42
"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hde09c7434608be03E.exit.i.loopexit": ; preds = %"_ZN76_$LT$$LP$usize$C$$u20$usize$RP$$u20$as$u20$ndarray..dimension..Dimension$GT$8next_for17h04b0fe300a278d57E.exit.i.i.i.i.us.i.i", %bb6.us.i.i
%sum.0.lcssa.i.i.ph = phi i32 [ %141, %bb6.us.i.i ], [ %sum.0.us.i33.i, %"_ZN76_$LT$$LP$usize$C$$u20$usize$RP$$u20$as$u20$ndarray..dimension..Dimension$GT$8next_for17h04b0fe300a278d57E.exit.i.i.i.i.us.i.i" ]
br label %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hde09c7434608be03E.exit.i"
"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hde09c7434608be03E.exit.i.loopexit205": ; preds = %bb6.i.i21
br label %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hde09c7434608be03E.exit.i"
"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hde09c7434608be03E.exit.i": ; preds = %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hde09c7434608be03E.exit.i.loopexit205", %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hde09c7434608be03E.exit.i.loopexit", %middle.block, %bb3.us.preheader.i.i, %bb3.preheader.i.i
%sum.0.lcssa.i.i = phi i32 [ 0, %bb3.us.preheader.i.i ], [ 0, %bb3.preheader.i.i ], [ %131, %middle.block ], [ %sum.0.lcssa.i.i.ph, %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hde09c7434608be03E.exit.i.loopexit" ], [ %144, %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hde09c7434608be03E.exit.i.loopexit205" ]
call void @llvm.lifetime.start(i64 4, i8* %15) #2
store i32 %sum.0.lcssa.i.i, i32* %dummy.i.i, align 4
call void asm "", "r,~{dirflag},~{fpsr},~{flags}"(i32* nonnull %dummy.i.i) #2, !srcloc !16
call void @llvm.lifetime.end(i64 4, i8* %15) #2
%exitcond.i = icmp eq i64 %87, %9
br i1 %exitcond.i, label %bb8.i.loopexit206, label %bb7.i
bb8.i.loopexit: ; preds = %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hde09c7434608be03E.exit.i.us"
br label %bb8.i
bb8.i.loopexit206: ; preds = %"_ZN6bench129iter_sum_2d_transpose_regular28_$u7b$$u7b$closure$u7d$$u7d$17hde09c7434608be03E.exit.i"
br label %bb8.i
bb8.i: ; preds = %bb8.i.loopexit206, %bb8.i.loopexit, %.noexc22
invoke void @_ZN3std4time7Instant7elapsed17h5bac07511bd73b7cE(%"1.std::time::Duration"* noalias nocapture nonnull sret dereferenceable(16) %tmp_ret2.i, %"1.std::time::Instant"* noalias nonnull readonly dereferenceable(16) %start1.i)
to label %bb5 unwind label %bb9
bb5: ; preds = %bb8.i
%146 = getelementptr inbounds %"1.std::time::Duration", %"1.std::time::Duration"* %tmp_ret2.i, i64 0, i32 0
%147 = getelementptr inbounds %"1.std::time::Duration", %"1.std::time::Duration"* %tmp_ret2.i, i64 0, i32 1
%148 = load i64, i64* %146, align 8
%149 = load i32, i32* %147, align 8
%150 = getelementptr inbounds %"12.test::Bencher", %"12.test::Bencher"* %0, i64 0, i32 1, i32 0
store i64 %148, i64* %150, align 8
%151 = getelementptr inbounds %"12.test::Bencher", %"12.test::Bencher"* %0, i64 0, i32 1, i32 1
store i32 %149, i32* %151, align 4
call void @llvm.lifetime.end(i64 16, i8* %7)
call void @llvm.lifetime.end(i64 16, i8* %6)
%not..i.i.i.i.i = icmp eq i64 %a1.sroa.5.0.copyload, 0
br i1 %not..i.i.i.i.i, label %bb6, label %bb6.i.i.i.i.i24
bb6.i.i.i.i.i24: ; preds = %bb5
%152 = shl i64 %a1.sroa.5.0.copyload, 2
call void @__rust_deallocate(i8* %a1.sroa.0.0.copyload, i64 %152, i64 4) #2
br label %bb6
bb6: ; preds = %bb6.i.i.i.i.i24, %bb5
ret void
bb9: ; preds = %bb4, %bb8.i
%153 = landingpad { i8*, i32 }
cleanup
%.fca.0.extract5 = extractvalue { i8*, i32 } %153, 0
%.fca.1.extract7 = extractvalue { i8*, i32 } %153, 1
%not..i.i.i.i.i28 = icmp eq i64 %a1.sroa.5.0.copyload, 0
br i1 %not..i.i.i.i.i28, label %bb1, label %bb6.i.i.i.i.i29
bb6.i.i.i.i.i29: ; preds = %bb9
%154 = shl i64 %a1.sroa.5.0.copyload, 2
call void @__rust_deallocate(i8* %a1.sroa.0.0.copyload, i64 %154, i64 4) #2
br label %bb1
cleanup: ; preds = %bb10.i.i.i.i.i
%155 = landingpad { i8*, i32 }
cleanup
%.fca.0.extract4 = extractvalue { i8*, i32 } %155, 0
%.fca.1.extract = extractvalue { i8*, i32 } %155, 1
br label %bb1
}
; Function Attrs: uwtable
define internal void @_ZN6bench16__test4main17hea89029b865a9639E() unnamed_addr #0 {
entry-block:
tail call void @_ZN4test16test_main_static17h9d2a63238910810dE(%"12.test::TestDescAndFn"* noalias nonnull readonly bitcast ({ { { { i64, %str_slice, [8 x i8] }, i1, [7 x i8], { i64, [16 x i8] } }, { i64, void (%"12.test::Bencher"*)*, [8 x i8] } } }* @ref10695 to %"12.test::TestDescAndFn"*), i64 1)
ret void
}
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start(i64, i8* nocapture) #1
; Function Attrs: nounwind
declare i32 @rust_eh_personality(i32, i32, i64, %"8.unwind::libunwind::_Unwind_Exception"*, %"8.unwind::libunwind::_Unwind_Context"*) unnamed_addr #2
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.end(i64, i8* nocapture) #1
; Function Attrs: cold noinline noreturn
declare void @_ZN5alloc3oom3oom17h97560b93ca17f851E() unnamed_addr #3
declare void @_ZN3std4time7Instant3now17h5851ec34f9ff4cdfE(%"1.std::time::Instant"* noalias nocapture sret dereferenceable(16)) unnamed_addr
declare void @_ZN3std4time7Instant7elapsed17h5bac07511bd73b7cE(%"1.std::time::Duration"* noalias nocapture sret dereferenceable(16), %"1.std::time::Instant"* noalias readonly dereferenceable(16)) unnamed_addr
; Function Attrs: nounwind
declare void @__rust_deallocate(i8*, i64, i64) unnamed_addr #2
; Function Attrs: nounwind
declare noalias i8* @__rust_allocate(i64, i64) unnamed_addr #2
declare void @_ZN4test16test_main_static17h9d2a63238910810dE(%"12.test::TestDescAndFn"* noalias nonnull readonly, i64) unnamed_addr
define i64 @main(i64, i8**) unnamed_addr {
top:
%2 = tail call i64 @_ZN3std2rt10lang_start17h14cbded5fe3cd915E(i8* bitcast (void ()* @_ZN6bench16__test4main17hea89029b865a9639E to i8*), i64 %0, i8** %1)
ret i64 %2
}
declare i64 @_ZN3std2rt10lang_start17h14cbded5fe3cd915E(i8*, i64, i8**) unnamed_addr
; Function Attrs: argmemonly nounwind
declare void @llvm.memset.p0i8.i64(i8* nocapture writeonly, i8, i64, i32, i1) #1
attributes #0 = { uwtable }
attributes #1 = { argmemonly nounwind }
attributes #2 = { nounwind }
attributes #3 = { cold noinline noreturn }
!llvm.module.flags = !{!0}
!0 = !{i32 1, !"PIE Level", i32 2}
!1 = !{!2, !4, !6, !8, !10}
!2 = distinct !{!2, !3, !"_ZN40_$LT$alloc..raw_vec..RawVec$LT$T$GT$$GT$13with_capacity17h26e462af932cd471E: argument 0"}
!3 = distinct !{!3, !"_ZN40_$LT$alloc..raw_vec..RawVec$LT$T$GT$$GT$13with_capacity17h26e462af932cd471E"}
!4 = distinct !{!4, !5, !"_ZN39_$LT$collections..vec..Vec$LT$T$GT$$GT$13with_capacity17hcda81f751e6a416cE: argument 0"}
!5 = distinct !{!5, !"_ZN39_$LT$collections..vec..Vec$LT$T$GT$$GT$13with_capacity17hcda81f751e6a416cE"}
!6 = distinct !{!6, !7, !"_ZN11collections3vec9from_elem17h7a3e257b3f6bd558E: argument 0"}
!7 = distinct !{!7, !"_ZN11collections3vec9from_elem17h7a3e257b3f6bd558E"}
!8 = distinct !{!8, !9, !"_ZN7ndarray17impl_constructors54_$LT$impl$u20$ndarray..ArrayBase$LT$S$C$$u20$D$GT$$GT$9from_elem17h9578b637100c96adE: argument 0"}
!9 = distinct !{!9, !"_ZN7ndarray17impl_constructors54_$LT$impl$u20$ndarray..ArrayBase$LT$S$C$$u20$D$GT$$GT$9from_elem17h9578b637100c96adE"}
!10 = distinct !{!10, !11, !"_ZN7ndarray17impl_constructors54_$LT$impl$u20$ndarray..ArrayBase$LT$S$C$$u20$D$GT$$GT$5zeros17h454d1cf2928f6f14E: argument 0"}
!11 = distinct !{!11, !"_ZN7ndarray17impl_constructors54_$LT$impl$u20$ndarray..ArrayBase$LT$S$C$$u20$D$GT$$GT$5zeros17h454d1cf2928f6f14E"}
!12 = !{!13, !15}
!13 = distinct !{!13, !14, !"_ZN4test9black_box17he41b3a9d6419a6a4E: argument 0"}
!14 = distinct !{!14, !"_ZN4test9black_box17he41b3a9d6419a6a4E"}
!15 = distinct !{!15, !14, !"_ZN4test9black_box17he41b3a9d6419a6a4E: argument 1"}
!16 = !{i32 191}
!17 = distinct !{!17, !18, !19}
!18 = !{!"llvm.loop.vectorize.width", i32 1}
!19 = !{!"llvm.loop.interleave.count", i32 1}
!20 = distinct !{!20, !21, !18, !19}
!21 = !{!"llvm.loop.unroll.runtime.disable"}
!22 = !{!23, !25, !26, !28}
!23 = distinct !{!23, !24, !"_ZN85_$LT$ndarray..ArrayBase$LT$ndarray..ViewRepr$LT$$RF$$u27$a$u20$A$GT$$C$$u20$D$GT$$GT$10into_iter_17h07e424d86abf96f4E: argument 0"}
!24 = distinct !{!24, !"_ZN85_$LT$ndarray..ArrayBase$LT$ndarray..ViewRepr$LT$$RF$$u27$a$u20$A$GT$$C$$u20$D$GT$$GT$10into_iter_17h07e424d86abf96f4E"}
!25 = distinct !{!25, !24, !"_ZN85_$LT$ndarray..ArrayBase$LT$ndarray..ViewRepr$LT$$RF$$u27$a$u20$A$GT$$C$$u20$D$GT$$GT$10into_iter_17h07e424d86abf96f4E: argument 1"}
!26 = distinct !{!26, !27, !"_ZN7ndarray12impl_methods54_$LT$impl$u20$ndarray..ArrayBase$LT$S$C$$u20$D$GT$$GT$4iter17h2e29b5598ac77580E: argument 0"}
!27 = distinct !{!27, !"_ZN7ndarray12impl_methods54_$LT$impl$u20$ndarray..ArrayBase$LT$S$C$$u20$D$GT$$GT$4iter17h2e29b5598ac77580E"}
!28 = distinct !{!28, !27, !"_ZN7ndarray12impl_methods54_$LT$impl$u20$ndarray..ArrayBase$LT$S$C$$u20$D$GT$$GT$4iter17h2e29b5598ac77580E: argument 1"}
!29 = !{!26, !28}
!30 = !{!31, !33, !35, !23, !25, !26, !28}
!31 = distinct !{!31, !32, !"_ZN7ndarray12impl_methods54_$LT$impl$u20$ndarray..ArrayBase$LT$S$C$$u20$D$GT$$GT$18is_standard_layout17he690d19e37be350fE: argument 0"}
!32 = distinct !{!32, !"_ZN7ndarray12impl_methods54_$LT$impl$u20$ndarray..ArrayBase$LT$S$C$$u20$D$GT$$GT$18is_standard_layout17he690d19e37be350fE"}
!33 = distinct !{!33, !34, !"_ZN85_$LT$ndarray..ArrayBase$LT$ndarray..ViewRepr$LT$$RF$$u27$a$u20$A$GT$$C$$u20$D$GT$$GT$10into_slice17hbd80c1dc13b299edE: argument 0"}
!34 = distinct !{!34, !"_ZN85_$LT$ndarray..ArrayBase$LT$ndarray..ViewRepr$LT$$RF$$u27$a$u20$A$GT$$C$$u20$D$GT$$GT$10into_slice17hbd80c1dc13b299edE"}
!35 = distinct !{!35, !34, !"_ZN85_$LT$ndarray..ArrayBase$LT$ndarray..ViewRepr$LT$$RF$$u27$a$u20$A$GT$$C$$u20$D$GT$$GT$10into_slice17hbd80c1dc13b299edE: argument 1"}
!36 = !{!37}
!37 = distinct !{!37, !38, !"_ZN76_$LT$$LP$usize$C$$u20$usize$RP$$u20$as$u20$ndarray..dimension..Dimension$GT$15default_strides17h9594c0827058adc3E: argument 0"}
!38 = distinct !{!38, !"_ZN76_$LT$$LP$usize$C$$u20$usize$RP$$u20$as$u20$ndarray..dimension..Dimension$GT$15default_strides17h9594c0827058adc3E"}
!39 = !{!31, !35}
!40 = !{!33, !23, !25, !26, !28}
!41 = distinct !{!41, !18, !19}
!42 = distinct !{!42, !21, !18, !19}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment