Created
October 13, 2016 16:54
-
-
Save bluss/48b6457a7af18232ca1d6b1c9a6ef6b5 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; 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} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; 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