Created
March 12, 2018 15:57
-
-
Save emilio/93875578cfd1399a18ce764917f57ab4 to your computer and use it in GitHub Desktop.
This file contains 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 = 'test-no-pgo.test0.rcgu.bc' | |
source_filename = "test0-317d481089b8c8fe83113de504472633.rs" | |
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" | |
target triple = "x86_64-unknown-linux-gnu" | |
%"std::env::ArgsOs" = type { [0 x i64], %"std::sys::unix::args::Args", [0 x i64] } | |
%"std::sys::unix::args::Args" = type { [0 x i8], %"core::marker::PhantomData<*mut ()>", [0 x i8], %"alloc::vec::IntoIter<std::ffi::os_str::OsString>", [0 x i64] } | |
%"core::marker::PhantomData<*mut ()>" = type {} | |
%"alloc::vec::IntoIter<std::ffi::os_str::OsString>" = type { [0 x i8], %"core::marker::PhantomData<std::ffi::os_str::OsString>", [0 x i8], i64*, [0 x i64], i64, [0 x i64], %"std::ffi::os_str::OsString"*, [0 x i64], %"std::ffi::os_str::OsString"*, [0 x i64] } | |
%"core::marker::PhantomData<std::ffi::os_str::OsString>" = type {} | |
%"std::ffi::os_str::OsString" = type { [0 x i64], %"std::sys::unix::os_str::Buf", [0 x i64] } | |
%"std::sys::unix::os_str::Buf" = type { [0 x i64], %"alloc::vec::Vec<u8>", [0 x i64] } | |
%"alloc::vec::Vec<u8>" = type { [0 x i64], { i8*, i64 }, [0 x i64], i64, [0 x i64] } | |
%"alloc::string::String" = type { [0 x i64], %"alloc::vec::Vec<u8>", [0 x i64] } | |
%Planet = type { [0 x i64], %Vec3, [0 x i64], %Vec3, [0 x i64], double, [0 x i64] } | |
%Vec3 = type { [0 x i64], double, [0 x i64], double, [0 x i64], double, [0 x i64] } | |
%"core::result::Result<alloc::string::String, std::ffi::os_str::OsString>" = type { [0 x i64], i64, [3 x i64] } | |
%"core::option::Option<std::ffi::os_str::OsString>" = type { [0 x i64], {}*, [2 x i64] } | |
%"core::fmt::Arguments" = type { [0 x i64], { [0 x { [0 x i8]*, i64 }]*, i64 }, [0 x i64], %"core::option::Option<&[core::fmt::rt::v1::Argument]>", [0 x i64], { [0 x { i8*, i8* }]*, i64 }, [0 x i64] } | |
%"core::option::Option<&[core::fmt::rt::v1::Argument]>" = type { [0 x i64], {}*, [1 x i64] } | |
%"core::fmt::rt::v1::Argument" = type { [0 x i64], %"core::fmt::rt::v1::Position", [0 x i64], %"core::fmt::rt::v1::FormatSpec", [0 x i64] } | |
%"core::fmt::rt::v1::Position" = type { [0 x i64], i64, [1 x i64] } | |
%"core::fmt::rt::v1::FormatSpec" = type { [0 x i64], %"core::fmt::rt::v1::Count", [0 x i64], %"core::fmt::rt::v1::Count", [0 x i32], i32, [0 x i32], i32, [0 x i8], i8, [7 x i8] } | |
%"core::fmt::rt::v1::Count" = type { [0 x i64], i64, [1 x i64] } | |
%"unwind::libunwind::_Unwind_Exception" = type { [0 x i64], i64, [0 x i64], void (i32, %"unwind::libunwind::_Unwind_Exception"*)*, [0 x i64], [6 x i64], [0 x i64] } | |
%"unwind::libunwind::_Unwind_Context" = type { [0 x i8] } | |
%"core::fmt::Formatter" = type { [0 x i64], %"core::option::Option<usize>", [0 x i64], %"core::option::Option<usize>", [0 x i64], { {}*, {}* }, [0 x i64], { i64*, i64* }, [0 x i64], { [0 x { i8*, i8* }]*, i64 }, [0 x i32], i32, [0 x i32], i32, [0 x i8], i8, [7 x i8] } | |
%"core::option::Option<usize>" = type { [0 x i64], i64, [1 x i64] } | |
@vtable.4 = private unnamed_addr constant { void (i8**)*, i64, i64, i32 (i8**)*, i32 (i8**)*, i32 (i8*)* } { void (i8**)* @_ZN4core3ptr13drop_in_place17h3bd07621d6b15e9aE, i64 8, i64 8, i32 (i8**)* @"_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h64ffb38e2fed3ec4E", i32 (i8**)* @"_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h64ffb38e2fed3ec4E", i32 (i8*)* @_ZN4core3ops8function6FnOnce9call_once17he8c51a13e1ce2e56E }, align 8 | |
@_ZN4test6BODIES17h6b5b7f6a11be243fE = internal unnamed_addr constant { { [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], double, [0 x i8] }, { [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], double, [0 x i8] }, { [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], double, [0 x i8] }, { [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], double, [0 x i8] }, { [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], double, [0 x i8] } } { { [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], double, [0 x i8] } { [0 x i8] undef, { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] } { [0 x i8] undef, double 0.000000e+00, [0 x i8] undef, double 0.000000e+00, [0 x i8] undef, double 0.000000e+00, [0 x i8] undef }, [0 x i8] undef, { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] } { [0 x i8] undef, double 0.000000e+00, [0 x i8] undef, double 0.000000e+00, [0 x i8] undef, double 0.000000e+00, [0 x i8] undef }, [0 x i8] undef, double 0x4043BD3CC9BE45DE, [0 x i8] undef }, { [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], double, [0 x i8] } { [0 x i8] undef, { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] } { [0 x i8] undef, double 0x40135DA0343CD92C, [0 x i8] undef, double 0xBFF290ABC01FDB7C, [0 x i8] undef, double 0xBFBA86F96C25EBF0, [0 x i8] undef }, [0 x i8] undef, { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] } { [0 x i8] undef, double 0x3FE367069B93CCBC, [0 x i8] undef, double 0x40067EF2F57D949B, [0 x i8] undef, double 0xBF99D2D79A5A0715, [0 x i8] undef }, [0 x i8] undef, double 0x3FA34C95D9AB33D8, [0 x i8] undef }, { [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], double, [0 x i8] } { [0 x i8] undef, { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] } { [0 x i8] undef, double 0x4020AFCDC332CA67, [0 x i8] undef, double 0x40107FCB31DE01B0, [0 x i8] undef, double 0xBFD9D353E1EB467C, [0 x i8] undef }, [0 x i8] undef, { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] } { [0 x i8] undef, double 0xBFF02C21B8879442, [0 x i8] undef, double 0x3FFD35E9BF1F8F13, [0 x i8] undef, double 0x3F813C485F1123B4, [0 x i8] undef }, [0 x i8] undef, double 0x3F871D490D07C637, [0 x i8] undef }, { [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], double, [0 x i8] } { [0 x i8] undef, { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] } { [0 x i8] undef, double 0x4029C9EACEA7D9CF, [0 x i8] undef, double 0xC02E38E8D626667E, [0 x i8] undef, double 0xBFCC9557BE257DA0, [0 x i8] undef }, [0 x i8] undef, { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] } { [0 x i8] undef, double 0x3FF1531CA9911BEF, [0 x i8] undef, double 0x3FEBCC7F3E54BBC5, [0 x i8] undef, double 0xBF862F6BFAF23E7C, [0 x i8] undef }, [0 x i8] undef, double 0x3F5C3DD29CF41EB3, [0 x i8] undef }, { [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], double, [0 x i8] } { [0 x i8] undef, { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] } { [0 x i8] undef, double 0x402EC267A905572A, [0 x i8] undef, double 0xC039EB5833C8A220, [0 x i8] undef, double 0x3FC6F1F393ABE540, [0 x i8] undef }, [0 x i8] undef, { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] } { [0 x i8] undef, double 0x3FEF54B61659BC4A, [0 x i8] undef, double 0x3FE307C631C4FBA3, [0 x i8] undef, double 0xBFA1CB88587665F6, [0 x i8] undef }, [0 x i8] undef, double 0x3F60A8F3531799AC, [0 x i8] undef } }, align 8 | |
@str.q = internal constant [0 x i8] zeroinitializer | |
@str.r = internal constant [1 x i8] c"\0A" | |
@ref.s = private unnamed_addr constant [2 x { [0 x i8]*, i64 }] [{ [0 x i8]*, i64 } { [0 x i8]* @str.q, i64 0 }, { [0 x i8]*, i64 } { [0 x i8]* bitcast ([1 x i8]* @str.r to [0 x i8]*), i64 1 }], align 8 | |
@ref.t = private unnamed_addr constant { { [0 x i8], { i64, [0 x i8], i64, [0 x i8] }, [0 x i8], { [0 x i8], <{ i64, [8 x i8] }>, [0 x i8], <{ i64, [8 x i8] }>, [0 x i8], i32, [0 x i8], i32, [0 x i8], i8, [7 x i8] }, [0 x i8] } } { { [0 x i8], { i64, [0 x i8], i64, [0 x i8] }, [0 x i8], { [0 x i8], <{ i64, [8 x i8] }>, [0 x i8], <{ i64, [8 x i8] }>, [0 x i8], i32, [0 x i8], i32, [0 x i8], i8, [7 x i8] }, [0 x i8] } { [0 x i8] undef, { i64, [0 x i8], i64, [0 x i8] } { i64 1, [0 x i8] undef, i64 0, [0 x i8] undef }, [0 x i8] undef, { [0 x i8], <{ i64, [8 x i8] }>, [0 x i8], <{ i64, [8 x i8] }>, [0 x i8], i32, [0 x i8], i32, [0 x i8], i8, [7 x i8] } { [0 x i8] undef, <{ i64, [8 x i8] }> <{ i64 3, [8 x i8] undef }>, [0 x i8] undef, <{ i64, [8 x i8] }> <{ i64 3, [8 x i8] undef }>, [0 x i8] undef, i32 32, [0 x i8] undef, i32 0, [0 x i8] undef, i8 3, [7 x i8] undef }, [0 x i8] undef } }, align 8 | |
@ref.v = private unnamed_addr constant { { [0 x i8], { i64, [0 x i8], i64, [0 x i8] }, [0 x i8], { [0 x i8], { i64, [0 x i8], i64, [0 x i8] }, [0 x i8], <{ i64, [8 x i8] }>, [0 x i8], i32, [0 x i8], i32, [0 x i8], i8, [7 x i8] }, [0 x i8] } } { { [0 x i8], { i64, [0 x i8], i64, [0 x i8] }, [0 x i8], { [0 x i8], { i64, [0 x i8], i64, [0 x i8] }, [0 x i8], <{ i64, [8 x i8] }>, [0 x i8], i32, [0 x i8], i32, [0 x i8], i8, [7 x i8] }, [0 x i8] } { [0 x i8] undef, { i64, [0 x i8], i64, [0 x i8] } { i64 1, [0 x i8] undef, i64 0, [0 x i8] undef }, [0 x i8] undef, { [0 x i8], { i64, [0 x i8], i64, [0 x i8] }, [0 x i8], <{ i64, [8 x i8] }>, [0 x i8], i32, [0 x i8], i32, [0 x i8], i8, [7 x i8] } { [0 x i8] undef, { i64, [0 x i8], i64, [0 x i8] } { i64 0, [0 x i8] undef, i64 9, [0 x i8] undef }, [0 x i8] undef, <{ i64, [8 x i8] }> <{ i64 3, [8 x i8] undef }>, [0 x i8] undef, i32 32, [0 x i8] undef, i32 0, [0 x i8] undef, i8 3, [7 x i8] undef }, [0 x i8] undef } }, align 8 | |
; Function Attrs: uwtable | |
define hidden i64 @_ZN3std2rt10lang_start17h7057daff8a3d666bE(void ()* nonnull, i64, i8**) unnamed_addr #0 { | |
%4 = alloca i8*, align 8 | |
%5 = bitcast i8** %4 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %5) | |
%6 = bitcast i8** %4 to void ()** | |
store void ()* %0, void ()** %6, align 8 | |
%7 = bitcast i8** %4 to {}* | |
%8 = call i64 @_ZN3std2rt19lang_start_internal17he461b456319e29d6E({}* nonnull %7, {}* noalias nonnull readonly bitcast ({ void (i8**)*, i64, i64, i32 (i8**)*, i32 (i8**)*, i32 (i8*)* }* @vtable.4 to {}*), i64 %1, i8** %2) | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %5) | |
ret i64 %8 | |
} | |
; Function Attrs: uwtable | |
define internal i32 @"_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h64ffb38e2fed3ec4E"(i8** noalias nocapture readonly dereferenceable(8)) unnamed_addr #0 { | |
%2 = bitcast i8** %0 to void ()** | |
%3 = load void ()*, void ()** %2, align 8, !nonnull !1 | |
tail call void %3() | |
%4 = tail call i32 @"_ZN58_$LT$$LP$$RP$$u20$as$u20$std..termination..Termination$GT$6report17h5ef51a1159d52e9eE"() | |
ret i32 %4 | |
} | |
; Function Attrs: uwtable | |
define internal i32 @_ZN4core3ops8function6FnOnce9call_once17he8c51a13e1ce2e56E(i8* nonnull) unnamed_addr #0 personality i32 (i32, i32, i64, %"unwind::libunwind::_Unwind_Exception"*, %"unwind::libunwind::_Unwind_Context"*)* @rust_eh_personality { | |
%2 = bitcast i8* %0 to void ()* | |
tail call void %2(), !noalias !2 | |
%3 = tail call i32 @"_ZN58_$LT$$LP$$RP$$u20$as$u20$std..termination..Termination$GT$6report17h5ef51a1159d52e9eE"(), !noalias !2 | |
ret i32 %3 | |
} | |
; Function Attrs: norecurse nounwind readnone uwtable | |
define internal void @_ZN4core3ptr13drop_in_place17h3bd07621d6b15e9aE(i8** nocapture) unnamed_addr #1 { | |
ret void | |
} | |
; Function Attrs: uwtable | |
define internal fastcc void @_ZN4core3ptr13drop_in_place17h5ad1bad050c6ee33E(%"std::env::ArgsOs"* nocapture) unnamed_addr #0 personality i32 (i32, i32, i64, %"unwind::libunwind::_Unwind_Exception"*, %"unwind::libunwind::_Unwind_Context"*)* @rust_eh_personality { | |
%2 = getelementptr inbounds %"std::env::ArgsOs", %"std::env::ArgsOs"* %0, i64 0, i32 1, i32 3, i32 7 | |
%3 = load %"std::ffi::os_str::OsString"*, %"std::ffi::os_str::OsString"** %2, align 8, !noalias !5 | |
%4 = getelementptr inbounds %"std::env::ArgsOs", %"std::env::ArgsOs"* %0, i64 0, i32 1, i32 3, i32 9 | |
%5 = load %"std::ffi::os_str::OsString"*, %"std::ffi::os_str::OsString"** %4, align 8, !noalias !5 | |
%6 = icmp eq %"std::ffi::os_str::OsString"* %3, %5 | |
br i1 %6, label %17, label %7 | |
; <label>:7: ; preds = %1 | |
br label %8 | |
; <label>:8: ; preds = %25, %7 | |
%9 = phi %"std::ffi::os_str::OsString"* [ %26, %25 ], [ %5, %7 ] | |
%10 = phi %"std::ffi::os_str::OsString"* [ %27, %25 ], [ %3, %7 ] | |
%11 = getelementptr inbounds %"std::ffi::os_str::OsString", %"std::ffi::os_str::OsString"* %10, i64 1 | |
store %"std::ffi::os_str::OsString"* %11, %"std::ffi::os_str::OsString"** %2, align 8, !noalias !5 | |
%12 = bitcast %"std::ffi::os_str::OsString"* %10 to {}** | |
%13 = load {}*, {}** %12, align 8 | |
%14 = getelementptr inbounds %"std::ffi::os_str::OsString", %"std::ffi::os_str::OsString"* %10, i64 0, i32 1, i32 1, i32 1, i32 1 | |
%15 = load i64, i64* %14, align 8 | |
%16 = icmp eq {}* %13, null | |
br i1 %16, label %17, label %29 | |
; <label>:17: ; preds = %25, %8, %1 | |
%18 = getelementptr inbounds %"std::env::ArgsOs", %"std::env::ArgsOs"* %0, i64 0, i32 1, i32 3, i32 5 | |
%19 = load i64, i64* %18, align 8 | |
%20 = icmp eq i64 %19, 0 | |
br i1 %20, label %35, label %21 | |
; <label>:21: ; preds = %17 | |
%22 = bitcast %"std::env::ArgsOs"* %0 to i8** | |
%23 = load i8*, i8** %22, align 8, !nonnull !1 | |
%24 = mul i64 %19, 24 | |
tail call void @__rust_dealloc(i8* nonnull %23, i64 %24, i64 8) #6 | |
br label %35 | |
; <label>:25: ; preds = %31, %29 | |
%26 = phi %"std::ffi::os_str::OsString"* [ %34, %31 ], [ %9, %29 ] | |
%27 = phi %"std::ffi::os_str::OsString"* [ %33, %31 ], [ %11, %29 ] | |
%28 = icmp eq %"std::ffi::os_str::OsString"* %27, %26 | |
br i1 %28, label %17, label %8 | |
; <label>:29: ; preds = %8 | |
%30 = icmp eq i64 %15, 0 | |
br i1 %30, label %25, label %31 | |
; <label>:31: ; preds = %29 | |
%32 = bitcast {}* %13 to i8* | |
tail call void @__rust_dealloc(i8* %32, i64 %15, i64 1) #6 | |
%33 = load %"std::ffi::os_str::OsString"*, %"std::ffi::os_str::OsString"** %2, align 8, !noalias !5 | |
%34 = load %"std::ffi::os_str::OsString"*, %"std::ffi::os_str::OsString"** %4, align 8, !noalias !5 | |
br label %25 | |
; <label>:35: ; preds = %21, %17 | |
ret void | |
} | |
; Function Attrs: nounwind uwtable | |
define internal fastcc void @_ZN4core3ptr13drop_in_place17hce82c5074859547eE(%"alloc::string::String"* nocapture readonly) unnamed_addr #2 personality i32 (i32, i32, i64, %"unwind::libunwind::_Unwind_Exception"*, %"unwind::libunwind::_Unwind_Context"*)* @rust_eh_personality { | |
%2 = getelementptr %"alloc::string::String", %"alloc::string::String"* %0, i64 0, i32 1, i32 1, i32 1 | |
%3 = load i64, i64* %2, align 8 | |
%4 = icmp eq i64 %3, 0 | |
br i1 %4, label %8, label %5 | |
; <label>:5: ; preds = %1 | |
%6 = bitcast %"alloc::string::String"* %0 to i8** | |
%7 = load i8*, i8** %6, align 8 | |
tail call void @__rust_dealloc(i8* %7, i64 %3, i64 1) #6 | |
br label %8 | |
; <label>:8: ; preds = %5, %1 | |
ret void | |
} | |
; Function Attrs: nounwind readonly uwtable | |
define internal fastcc double @_ZN4test6energy17h6acdc4d37a6ab310E([5 x %Planet]* noalias readonly dereferenceable(280)) unnamed_addr #3 personality i32 (i32, i32, i64, %"unwind::libunwind::_Unwind_Exception"*, %"unwind::libunwind::_Unwind_Context"*)* @rust_eh_personality { | |
%2 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 7 | |
%3 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 3 | |
%4 = bitcast i64* %3 to double* | |
%5 = load double, double* %4, align 8, !alias.scope !10 | |
%6 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 4 | |
%7 = bitcast i64* %6 to double* | |
%8 = load double, double* %7, align 8, !alias.scope !10 | |
%9 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 5 | |
%10 = bitcast i64* %9 to double* | |
%11 = load double, double* %10, align 8, !alias.scope !10 | |
%12 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 5 | |
%13 = load double, double* %12, align 8 | |
%14 = bitcast [5 x %Planet]* %0 to double* | |
%15 = load double, double* %14, align 8, !noalias !13 | |
%16 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 1, i32 3 | |
%17 = load double, double* %16, align 8, !noalias !13 | |
%18 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 1, i32 5 | |
%19 = load double, double* %18, align 8, !noalias !13 | |
%20 = insertelement <2 x double> undef, double %15, i32 0 | |
%21 = insertelement <2 x double> %20, double %19, i32 1 | |
%22 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 14 | |
%23 = bitcast i64* %2 to double* | |
%24 = load double, double* %23, align 8, !alias.scope !22, !noalias !23 | |
%25 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 8 | |
%26 = bitcast i64* %25 to double* | |
%27 = load double, double* %26, align 8, !alias.scope !22, !noalias !23 | |
%28 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 9 | |
%29 = bitcast i64* %28 to double* | |
%30 = load double, double* %29, align 8, !alias.scope !22, !noalias !23 | |
%31 = fsub double %17, %27 | |
%32 = insertelement <2 x double> undef, double %24, i32 0 | |
%33 = insertelement <2 x double> %32, double %30, i32 1 | |
%34 = fsub <2 x double> %21, %33 | |
%35 = fmul <2 x double> %34, %34 | |
%36 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 21 | |
%37 = bitcast i64* %22 to double* | |
%38 = load double, double* %37, align 8, !alias.scope !22, !noalias !23 | |
%39 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 15 | |
%40 = bitcast i64* %39 to double* | |
%41 = load double, double* %40, align 8, !alias.scope !22, !noalias !23 | |
%42 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 16 | |
%43 = bitcast i64* %42 to double* | |
%44 = load double, double* %43, align 8, !alias.scope !22, !noalias !23 | |
%45 = fsub double %17, %41 | |
%46 = insertelement <2 x double> undef, double %38, i32 0 | |
%47 = insertelement <2 x double> %46, double %44, i32 1 | |
%48 = fsub <2 x double> %21, %47 | |
%49 = fmul <2 x double> %48, %48 | |
%50 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 28 | |
%51 = bitcast i64* %36 to double* | |
%52 = load double, double* %51, align 8, !alias.scope !22, !noalias !23 | |
%53 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 22 | |
%54 = bitcast i64* %53 to double* | |
%55 = load double, double* %54, align 8, !alias.scope !22, !noalias !23 | |
%56 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 23 | |
%57 = bitcast i64* %56 to double* | |
%58 = load double, double* %57, align 8, !alias.scope !22, !noalias !23 | |
%59 = fsub double %17, %55 | |
%60 = insertelement <2 x double> undef, double %52, i32 0 | |
%61 = insertelement <2 x double> %60, double %58, i32 1 | |
%62 = fsub <2 x double> %21, %61 | |
%63 = fmul <2 x double> %62, %62 | |
%64 = bitcast i64* %50 to double* | |
%65 = load double, double* %64, align 8, !alias.scope !22, !noalias !23 | |
%66 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 29 | |
%67 = bitcast i64* %66 to double* | |
%68 = load double, double* %67, align 8, !alias.scope !22, !noalias !23 | |
%69 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 30 | |
%70 = bitcast i64* %69 to double* | |
%71 = load double, double* %70, align 8, !alias.scope !22, !noalias !23 | |
%72 = fsub double %17, %68 | |
%73 = insertelement <2 x double> undef, double %65, i32 0 | |
%74 = insertelement <2 x double> %73, double %71, i32 1 | |
%75 = fsub <2 x double> %21, %74 | |
%76 = fmul <2 x double> %75, %75 | |
%77 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 14 | |
%78 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 10 | |
%79 = bitcast i64* %78 to double* | |
%80 = load double, double* %79, align 8, !alias.scope !10 | |
%81 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 11 | |
%82 = bitcast i64* %81 to double* | |
%83 = load double, double* %82, align 8, !alias.scope !10 | |
%84 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 12 | |
%85 = bitcast i64* %84 to double* | |
%86 = load double, double* %85, align 8, !alias.scope !10 | |
%87 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 13 | |
%88 = bitcast i64* %87 to double* | |
%89 = load double, double* %88, align 8 | |
%90 = bitcast i64* %2 to double* | |
%91 = load double, double* %90, align 8, !noalias !13 | |
%92 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 8 | |
%93 = bitcast i64* %92 to double* | |
%94 = load double, double* %93, align 8, !noalias !13 | |
%95 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 9 | |
%96 = bitcast i64* %95 to double* | |
%97 = load double, double* %96, align 8, !noalias !13 | |
%98 = insertelement <2 x double> undef, double %91, i32 0 | |
%99 = insertelement <2 x double> %98, double %97, i32 1 | |
%100 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 21 | |
%101 = bitcast i64* %77 to double* | |
%102 = load double, double* %101, align 8, !alias.scope !22, !noalias !23 | |
%103 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 15 | |
%104 = bitcast i64* %103 to double* | |
%105 = load double, double* %104, align 8, !alias.scope !22, !noalias !23 | |
%106 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 16 | |
%107 = bitcast i64* %106 to double* | |
%108 = load double, double* %107, align 8, !alias.scope !22, !noalias !23 | |
%109 = fsub double %94, %105 | |
%110 = insertelement <2 x double> undef, double %102, i32 0 | |
%111 = insertelement <2 x double> %110, double %108, i32 1 | |
%112 = fsub <2 x double> %99, %111 | |
%113 = fmul <2 x double> %112, %112 | |
%114 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 28 | |
%115 = bitcast i64* %100 to double* | |
%116 = load double, double* %115, align 8, !alias.scope !22, !noalias !23 | |
%117 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 22 | |
%118 = bitcast i64* %117 to double* | |
%119 = load double, double* %118, align 8, !alias.scope !22, !noalias !23 | |
%120 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 23 | |
%121 = bitcast i64* %120 to double* | |
%122 = load double, double* %121, align 8, !alias.scope !22, !noalias !23 | |
%123 = fsub double %94, %119 | |
%124 = insertelement <2 x double> undef, double %116, i32 0 | |
%125 = insertelement <2 x double> %124, double %122, i32 1 | |
%126 = fsub <2 x double> %99, %125 | |
%127 = fmul <2 x double> %126, %126 | |
%128 = bitcast i64* %114 to double* | |
%129 = load double, double* %128, align 8, !alias.scope !22, !noalias !23 | |
%130 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 29 | |
%131 = bitcast i64* %130 to double* | |
%132 = load double, double* %131, align 8, !alias.scope !22, !noalias !23 | |
%133 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 30 | |
%134 = bitcast i64* %133 to double* | |
%135 = load double, double* %134, align 8, !alias.scope !22, !noalias !23 | |
%136 = fsub double %94, %132 | |
%137 = insertelement <2 x double> undef, double %129, i32 0 | |
%138 = insertelement <2 x double> %137, double %135, i32 1 | |
%139 = fsub <2 x double> %99, %138 | |
%140 = fmul <2 x double> %139, %139 | |
%141 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 21 | |
%142 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 17 | |
%143 = bitcast i64* %142 to double* | |
%144 = load double, double* %143, align 8, !alias.scope !10 | |
%145 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 18 | |
%146 = bitcast i64* %145 to double* | |
%147 = load double, double* %146, align 8, !alias.scope !10 | |
%148 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 19 | |
%149 = bitcast i64* %148 to double* | |
%150 = load double, double* %149, align 8, !alias.scope !10 | |
%151 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 20 | |
%152 = bitcast i64* %151 to double* | |
%153 = load double, double* %152, align 8 | |
%154 = bitcast i64* %77 to double* | |
%155 = load double, double* %154, align 8, !noalias !13 | |
%156 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 15 | |
%157 = bitcast i64* %156 to double* | |
%158 = load double, double* %157, align 8, !noalias !13 | |
%159 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 16 | |
%160 = bitcast i64* %159 to double* | |
%161 = load double, double* %160, align 8, !noalias !13 | |
%162 = insertelement <2 x double> undef, double %155, i32 0 | |
%163 = insertelement <2 x double> %162, double %161, i32 1 | |
%164 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 28 | |
%165 = bitcast i64* %141 to double* | |
%166 = load double, double* %165, align 8, !alias.scope !22, !noalias !23 | |
%167 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 22 | |
%168 = bitcast i64* %167 to double* | |
%169 = load double, double* %168, align 8, !alias.scope !22, !noalias !23 | |
%170 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 23 | |
%171 = bitcast i64* %170 to double* | |
%172 = load double, double* %171, align 8, !alias.scope !22, !noalias !23 | |
%173 = fsub double %158, %169 | |
%174 = insertelement <2 x double> undef, double %166, i32 0 | |
%175 = insertelement <2 x double> %174, double %172, i32 1 | |
%176 = fsub <2 x double> %163, %175 | |
%177 = fmul <2 x double> %176, %176 | |
%178 = bitcast i64* %164 to double* | |
%179 = load double, double* %178, align 8, !alias.scope !22, !noalias !23 | |
%180 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 29 | |
%181 = bitcast i64* %180 to double* | |
%182 = load double, double* %181, align 8, !alias.scope !22, !noalias !23 | |
%183 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 30 | |
%184 = bitcast i64* %183 to double* | |
%185 = load double, double* %184, align 8, !alias.scope !22, !noalias !23 | |
%186 = fsub double %158, %182 | |
%187 = insertelement <2 x double> undef, double %179, i32 0 | |
%188 = insertelement <2 x double> %187, double %185, i32 1 | |
%189 = fsub <2 x double> %163, %188 | |
%190 = fmul <2 x double> %189, %189 | |
%191 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 24 | |
%192 = bitcast i64* %191 to double* | |
%193 = load double, double* %192, align 8, !alias.scope !10 | |
%194 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 25 | |
%195 = bitcast i64* %194 to double* | |
%196 = load double, double* %195, align 8, !alias.scope !10 | |
%197 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 26 | |
%198 = bitcast i64* %197 to double* | |
%199 = load double, double* %198, align 8, !alias.scope !10 | |
%200 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 27 | |
%201 = bitcast i64* %200 to double* | |
%202 = load double, double* %201, align 8 | |
%203 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 28 | |
%204 = bitcast i64* %141 to double* | |
%205 = load double, double* %204, align 8, !noalias !13 | |
%206 = insertelement <2 x double> undef, double %205, i32 0 | |
%207 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 23 | |
%208 = bitcast i64* %207 to double* | |
%209 = load double, double* %208, align 8, !noalias !13 | |
%210 = insertelement <2 x double> %206, double %209, i32 1 | |
%211 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 22 | |
%212 = bitcast i64* %211 to double* | |
%213 = load double, double* %212, align 8, !noalias !13 | |
%214 = fmul double %193, %193 | |
%215 = fmul double %196, %196 | |
%216 = fadd double %214, %215 | |
%217 = fmul double %199, %199 | |
%218 = fadd double %216, %217 | |
%219 = fmul double %218, %202 | |
%220 = fmul double %219, 5.000000e-01 | |
%221 = fmul double %5, %5 | |
%222 = fmul double %8, %8 | |
%223 = fadd double %221, %222 | |
%224 = fmul double %11, %11 | |
%225 = fadd double %223, %224 | |
%226 = fmul double %225, %13 | |
%227 = fmul double %226, 5.000000e-01 | |
%228 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 13 | |
%229 = bitcast i64* %228 to double* | |
%230 = load double, double* %229, align 8, !alias.scope !22, !noalias !23 | |
%231 = extractelement <2 x double> %35, i32 0 | |
%232 = fmul double %31, %31 | |
%233 = fadd double %231, %232 | |
%234 = extractelement <2 x double> %35, i32 1 | |
%235 = fadd double %233, %234 | |
%236 = tail call double @llvm.sqrt.f64(double %235) #6 | |
%237 = fdiv double %230, %236 | |
%238 = fadd double %237, 0.000000e+00 | |
%239 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 20 | |
%240 = bitcast i64* %239 to double* | |
%241 = load double, double* %240, align 8, !alias.scope !22, !noalias !23 | |
%242 = extractelement <2 x double> %49, i32 0 | |
%243 = fmul double %45, %45 | |
%244 = fadd double %242, %243 | |
%245 = extractelement <2 x double> %49, i32 1 | |
%246 = fadd double %244, %245 | |
%247 = tail call double @llvm.sqrt.f64(double %246) #6 | |
%248 = fdiv double %241, %247 | |
%249 = fadd double %238, %248 | |
%250 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 27 | |
%251 = bitcast i64* %250 to double* | |
%252 = load double, double* %251, align 8, !alias.scope !22, !noalias !23 | |
%253 = extractelement <2 x double> %63, i32 0 | |
%254 = fmul double %59, %59 | |
%255 = fadd double %253, %254 | |
%256 = extractelement <2 x double> %63, i32 1 | |
%257 = fadd double %255, %256 | |
%258 = tail call double @llvm.sqrt.f64(double %257) #6 | |
%259 = fdiv double %252, %258 | |
%260 = fadd double %249, %259 | |
%261 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 34 | |
%262 = bitcast i64* %261 to double* | |
%263 = load double, double* %262, align 8, !alias.scope !22, !noalias !23 | |
%264 = extractelement <2 x double> %76, i32 0 | |
%265 = fmul double %72, %72 | |
%266 = fadd double %264, %265 | |
%267 = extractelement <2 x double> %76, i32 1 | |
%268 = fadd double %266, %267 | |
%269 = tail call double @llvm.sqrt.f64(double %268) #6 | |
%270 = fdiv double %263, %269 | |
%271 = fadd double %260, %270 | |
%272 = fmul double %13, %271 | |
%273 = fsub double %227, %272 | |
%274 = fadd double %273, 0.000000e+00 | |
%275 = fmul double %80, %80 | |
%276 = fmul double %83, %83 | |
%277 = fadd double %275, %276 | |
%278 = fmul double %86, %86 | |
%279 = fadd double %277, %278 | |
%280 = fmul double %279, %89 | |
%281 = fmul double %280, 5.000000e-01 | |
%282 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 20 | |
%283 = bitcast i64* %282 to double* | |
%284 = load double, double* %283, align 8, !alias.scope !22, !noalias !23 | |
%285 = extractelement <2 x double> %113, i32 0 | |
%286 = fmul double %109, %109 | |
%287 = fadd double %285, %286 | |
%288 = extractelement <2 x double> %113, i32 1 | |
%289 = fadd double %287, %288 | |
%290 = tail call double @llvm.sqrt.f64(double %289) #6 | |
%291 = fdiv double %284, %290 | |
%292 = fadd double %291, 0.000000e+00 | |
%293 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 27 | |
%294 = bitcast i64* %293 to double* | |
%295 = load double, double* %294, align 8, !alias.scope !22, !noalias !23 | |
%296 = extractelement <2 x double> %127, i32 0 | |
%297 = fmul double %123, %123 | |
%298 = fadd double %296, %297 | |
%299 = extractelement <2 x double> %127, i32 1 | |
%300 = fadd double %298, %299 | |
%301 = tail call double @llvm.sqrt.f64(double %300) #6 | |
%302 = fdiv double %295, %301 | |
%303 = fadd double %292, %302 | |
%304 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 34 | |
%305 = bitcast i64* %304 to double* | |
%306 = load double, double* %305, align 8, !alias.scope !22, !noalias !23 | |
%307 = extractelement <2 x double> %140, i32 0 | |
%308 = fmul double %136, %136 | |
%309 = fadd double %307, %308 | |
%310 = extractelement <2 x double> %140, i32 1 | |
%311 = fadd double %309, %310 | |
%312 = tail call double @llvm.sqrt.f64(double %311) #6 | |
%313 = fdiv double %306, %312 | |
%314 = fadd double %303, %313 | |
%315 = fmul double %89, %314 | |
%316 = fsub double %281, %315 | |
%317 = fadd double %274, %316 | |
%318 = fmul double %144, %144 | |
%319 = fmul double %147, %147 | |
%320 = fadd double %318, %319 | |
%321 = fmul double %150, %150 | |
%322 = fadd double %320, %321 | |
%323 = fmul double %322, %153 | |
%324 = fmul double %323, 5.000000e-01 | |
%325 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 27 | |
%326 = bitcast i64* %325 to double* | |
%327 = load double, double* %326, align 8, !alias.scope !22, !noalias !23 | |
%328 = extractelement <2 x double> %177, i32 0 | |
%329 = fmul double %173, %173 | |
%330 = fadd double %328, %329 | |
%331 = extractelement <2 x double> %177, i32 1 | |
%332 = fadd double %330, %331 | |
%333 = tail call double @llvm.sqrt.f64(double %332) #6 | |
%334 = fdiv double %327, %333 | |
%335 = fadd double %334, 0.000000e+00 | |
%336 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 34 | |
%337 = bitcast i64* %336 to double* | |
%338 = load double, double* %337, align 8, !alias.scope !22, !noalias !23 | |
%339 = extractelement <2 x double> %190, i32 0 | |
%340 = fmul double %186, %186 | |
%341 = fadd double %339, %340 | |
%342 = extractelement <2 x double> %190, i32 1 | |
%343 = fadd double %341, %342 | |
%344 = tail call double @llvm.sqrt.f64(double %343) #6 | |
%345 = fdiv double %338, %344 | |
%346 = fadd double %335, %345 | |
%347 = fmul double %153, %346 | |
%348 = fsub double %324, %347 | |
%349 = fadd double %317, %348 | |
%350 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 34 | |
%351 = bitcast i64* %350 to double* | |
%352 = load double, double* %351, align 8, !alias.scope !22, !noalias !23 | |
%353 = bitcast i64* %203 to double* | |
%354 = load double, double* %353, align 8, !alias.scope !22, !noalias !23 | |
%355 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 29 | |
%356 = bitcast i64* %355 to double* | |
%357 = load double, double* %356, align 8, !alias.scope !22, !noalias !23 | |
%358 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 30 | |
%359 = bitcast i64* %358 to double* | |
%360 = load double, double* %359, align 8, !alias.scope !22, !noalias !23 | |
%361 = fsub double %213, %357 | |
%362 = insertelement <2 x double> undef, double %354, i32 0 | |
%363 = insertelement <2 x double> %362, double %360, i32 1 | |
%364 = fsub <2 x double> %210, %363 | |
%365 = fmul double %361, %361 | |
%366 = fmul <2 x double> %364, %364 | |
%367 = extractelement <2 x double> %366, i32 0 | |
%368 = fadd double %367, %365 | |
%369 = extractelement <2 x double> %366, i32 1 | |
%370 = fadd double %368, %369 | |
%371 = tail call double @llvm.sqrt.f64(double %370) #6 | |
%372 = fdiv double %352, %371 | |
%373 = fadd double %372, 0.000000e+00 | |
%374 = fmul double %202, %373 | |
%375 = fsub double %220, %374 | |
%376 = fadd double %349, %375 | |
%377 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 31 | |
%378 = bitcast i64* %377 to double* | |
%379 = load double, double* %378, align 8, !alias.scope !10 | |
%380 = fmul double %379, %379 | |
%381 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 32 | |
%382 = bitcast i64* %381 to <2 x double>* | |
%383 = load <2 x double>, <2 x double>* %382, align 8, !alias.scope !10 | |
%384 = fmul <2 x double> %383, %383 | |
%385 = extractelement <2 x double> %384, i32 0 | |
%386 = fadd double %380, %385 | |
%387 = extractelement <2 x double> %384, i32 1 | |
%388 = fadd double %386, %387 | |
%389 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 34 | |
%390 = bitcast i64* %389 to double* | |
%391 = load double, double* %390, align 8 | |
%392 = fmul double %388, %391 | |
%393 = fmul double %392, 5.000000e-01 | |
%394 = fmul double %391, 0.000000e+00 | |
%395 = fsub double %393, %394 | |
%396 = fadd double %376, %395 | |
ret double %396 | |
} | |
; Function Attrs: uwtable | |
define internal void @_ZN4test4main17h6f2dd3dc2bc8dfe6E() unnamed_addr #0 personality i32 (i32, i32, i64, %"unwind::libunwind::_Unwind_Exception"*, %"unwind::libunwind::_Unwind_Context"*)* @rust_eh_personality { | |
%1 = alloca { [0 x i64], %"alloc::string::String", [0 x i64] }, align 8 | |
%2 = alloca %"std::ffi::os_str::OsString", align 8 | |
%3 = alloca %"core::result::Result<alloc::string::String, std::ffi::os_str::OsString>", align 8 | |
%4 = alloca %"core::option::Option<std::ffi::os_str::OsString>", align 8 | |
%5 = alloca double, align 8 | |
%6 = alloca [1 x { i8*, i8* }], align 8 | |
%7 = alloca %"core::fmt::Arguments", align 8 | |
%8 = alloca double, align 8 | |
%9 = alloca [1 x { i8*, i8* }], align 8 | |
%10 = alloca %"core::fmt::Arguments", align 8 | |
%11 = alloca [5 x %Planet], align 16 | |
%12 = alloca [1 x { i8*, i8* }], align 8 | |
%13 = alloca %"core::fmt::Arguments", align 8 | |
%14 = alloca %"std::env::ArgsOs", align 8 | |
%15 = alloca [2 x i64], align 8 | |
%16 = alloca i32, align 4 | |
%17 = bitcast i32* %16 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %17) | |
%18 = bitcast [2 x i64]* %15 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %18) | |
%19 = bitcast %"std::env::ArgsOs"* %14 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %19) | |
call void @_ZN3std3env7args_os17h0e97fc174faccbd6E(%"std::env::ArgsOs"* noalias nocapture nonnull sret dereferenceable(32) %14) | |
%20 = bitcast %"core::option::Option<std::ffi::os_str::OsString>"* %4 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %20), !noalias !24 | |
invoke void @"_ZN67_$LT$std..env..ArgsOs$u20$as$u20$core..iter..iterator..Iterator$GT$4next17h2da8ead691074258E"(%"core::option::Option<std::ffi::os_str::OsString>"* noalias nocapture nonnull sret dereferenceable(24) %4, %"std::env::ArgsOs"* nonnull dereferenceable(32) %14) | |
to label %21 unwind label %464 | |
; <label>:21: ; preds = %0 | |
%22 = bitcast %"core::option::Option<std::ffi::os_str::OsString>"* %4 to {}** | |
%23 = load {}*, {}** %22, align 8, !noalias !24 | |
%24 = icmp eq {}* %23, null | |
br i1 %24, label %28, label %25 | |
; <label>:25: ; preds = %21 | |
%26 = getelementptr inbounds %"core::option::Option<std::ffi::os_str::OsString>", %"core::option::Option<std::ffi::os_str::OsString>"* %4, i64 0, i32 2, i64 0 | |
%27 = bitcast i64* %26 to <2 x i64>* | |
br label %38 | |
; <label>:28: ; preds = %34, %21 | |
call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %20), !noalias !24 | |
br label %91 | |
; <label>:29: ; preds = %38 | |
%30 = extractelement <2 x i64> %42, i32 0 | |
%31 = icmp eq i64 %30, 0 | |
br i1 %31, label %33, label %32 | |
; <label>:32: ; preds = %29 | |
call void @__rust_dealloc(i8* %41, i64 %30, i64 1) #6, !noalias !24 | |
br label %33 | |
; <label>:33: ; preds = %32, %29 | |
call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %20), !noalias !24 | |
invoke void @"_ZN67_$LT$std..env..ArgsOs$u20$as$u20$core..iter..iterator..Iterator$GT$4next17h2da8ead691074258E"(%"core::option::Option<std::ffi::os_str::OsString>"* noalias nocapture nonnull sret dereferenceable(24) %4, %"std::env::ArgsOs"* nonnull dereferenceable(32) %14) | |
to label %34 unwind label %462 | |
; <label>:34: ; preds = %33 | |
%35 = add nsw i64 %40, -1 | |
%36 = load {}*, {}** %22, align 8, !noalias !24 | |
%37 = icmp eq {}* %36, null | |
br i1 %37, label %28, label %38 | |
; <label>:38: ; preds = %34, %25 | |
%39 = phi {}* [ %23, %25 ], [ %36, %34 ] | |
%40 = phi i64 [ 1, %25 ], [ %35, %34 ] | |
%41 = bitcast {}* %39 to i8* | |
%42 = load <2 x i64>, <2 x i64>* %27, align 8 | |
call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %20), !noalias !24 | |
%43 = icmp eq i64 %40, 0 | |
br i1 %43, label %44, label %29 | |
; <label>:44: ; preds = %38 | |
%45 = bitcast %"core::result::Result<alloc::string::String, std::ffi::os_str::OsString>"* %3 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %45), !noalias !27 | |
%46 = bitcast %"std::ffi::os_str::OsString"* %2 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %46), !noalias !27 | |
%47 = bitcast %"std::ffi::os_str::OsString"* %2 to {}** | |
store {}* %39, {}** %47, align 8 | |
%48 = getelementptr inbounds %"std::ffi::os_str::OsString", %"std::ffi::os_str::OsString"* %2, i64 0, i32 1, i32 1, i32 1, i32 1 | |
%49 = bitcast i64* %48 to <2 x i64>* | |
store <2 x i64> %42, <2 x i64>* %49, align 8 | |
invoke void @_ZN3std3ffi6os_str8OsString11into_string17h567757e2e42e16abE(%"core::result::Result<alloc::string::String, std::ffi::os_str::OsString>"* noalias nocapture nonnull sret dereferenceable(32) %3, %"std::ffi::os_str::OsString"* noalias nocapture nonnull dereferenceable(24) %2) | |
to label %50 unwind label %464 | |
; <label>:50: ; preds = %44 | |
call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %46), !noalias !27 | |
%51 = getelementptr inbounds %"core::result::Result<alloc::string::String, std::ffi::os_str::OsString>", %"core::result::Result<alloc::string::String, std::ffi::os_str::OsString>"* %3, i64 0, i32 0, i64 0 | |
%52 = load i64, i64* %51, align 8, !range !34, !alias.scope !35, !noalias !38 | |
%53 = icmp eq i64 %52, 1 | |
br i1 %53, label %54, label %63 | |
; <label>:54: ; preds = %50 | |
%55 = getelementptr inbounds %"core::result::Result<alloc::string::String, std::ffi::os_str::OsString>", %"core::result::Result<alloc::string::String, std::ffi::os_str::OsString>"* %3, i64 0, i32 2, i64 1 | |
%56 = load i64, i64* %55, align 8, !alias.scope !35, !noalias !38 | |
%57 = icmp eq i64 %56, 0 | |
br i1 %57, label %62, label %58 | |
; <label>:58: ; preds = %54 | |
%59 = getelementptr inbounds %"core::result::Result<alloc::string::String, std::ffi::os_str::OsString>", %"core::result::Result<alloc::string::String, std::ffi::os_str::OsString>"* %3, i64 0, i32 2 | |
%60 = bitcast [3 x i64]* %59 to i8** | |
%61 = load i8*, i8** %60, align 8, !alias.scope !35, !noalias !38 | |
call void @__rust_dealloc(i8* %61, i64 %56, i64 1) #6, !noalias !40 | |
br label %62 | |
; <label>:62: ; preds = %58, %54 | |
call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %45), !noalias !27 | |
br label %91 | |
; <label>:63: ; preds = %50 | |
%64 = getelementptr inbounds %"core::result::Result<alloc::string::String, std::ffi::os_str::OsString>", %"core::result::Result<alloc::string::String, std::ffi::os_str::OsString>"* %3, i64 0, i32 2 | |
%65 = bitcast [3 x i64]* %64 to {}** | |
%66 = load {}*, {}** %65, align 8 | |
%67 = getelementptr inbounds %"core::result::Result<alloc::string::String, std::ffi::os_str::OsString>", %"core::result::Result<alloc::string::String, std::ffi::os_str::OsString>"* %3, i64 0, i32 2, i64 1 | |
%68 = bitcast i64* %67 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull %18, i8* nonnull %68, i64 16, i32 8, i1 false) | |
call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %45), !noalias !27 | |
%69 = icmp eq {}* %66, null | |
br i1 %69, label %91, label %73 | |
; <label>:70: ; preds = %73 | |
%71 = landingpad { i8*, i32 } | |
cleanup | |
%72 = bitcast { [0 x i64], %"alloc::string::String", [0 x i64] }* %1 to %"alloc::string::String"* | |
call fastcc void @_ZN4core3ptr13drop_in_place17hce82c5074859547eE(%"alloc::string::String"* nonnull %72) #7, !noalias !41 | |
br label %466 | |
; <label>:73: ; preds = %63 | |
%74 = bitcast { [0 x i64], %"alloc::string::String", [0 x i64] }* %1 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %74), !noalias !41 | |
%75 = bitcast { [0 x i64], %"alloc::string::String", [0 x i64] }* %1 to {}** | |
store {}* %66, {}** %75, align 8 | |
%76 = getelementptr inbounds { [0 x i64], %"alloc::string::String", [0 x i64] }, { [0 x i64], %"alloc::string::String", [0 x i64] }* %1, i64 0, i32 1, i32 1, i32 1, i32 1 | |
%77 = bitcast i64* %76 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull %77, i8* nonnull %18, i64 16, i32 8, i1 false) | |
%78 = bitcast {}* %66 to [0 x i8]* | |
%79 = getelementptr inbounds { [0 x i64], %"alloc::string::String", [0 x i64] }, { [0 x i64], %"alloc::string::String", [0 x i64] }* %1, i64 0, i32 1, i32 1, i32 3 | |
%80 = load i64, i64* %79, align 8, !alias.scope !44, !noalias !41 | |
%81 = bitcast {}* %66 to i8* | |
%82 = invoke i64 @"_ZN4core3num52_$LT$impl$u20$core..str..FromStr$u20$for$u20$i32$GT$8from_str17h99b48ffb87a27724E"([0 x i8]* noalias nonnull readonly %78, i64 %80) | |
to label %83 unwind label %70, !noalias !51 | |
; <label>:83: ; preds = %73 | |
%84 = and i64 %82, 1 | |
%85 = xor i64 %84, 1 | |
%86 = load i64, i64* %76, align 8, !alias.scope !52, !noalias !41 | |
%87 = icmp eq i64 %86, 0 | |
br i1 %87, label %89, label %88 | |
; <label>:88: ; preds = %83 | |
call void @__rust_dealloc(i8* nonnull %81, i64 %86, i64 1) #6, !noalias !51 | |
br label %89 | |
; <label>:89: ; preds = %88, %83 | |
%90 = and i64 %82, -4294967296 | |
call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %74), !noalias !41 | |
br label %91 | |
; <label>:91: ; preds = %89, %63, %62, %28 | |
%92 = phi i64 [ %85, %89 ], [ 0, %63 ], [ 0, %62 ], [ 0, %28 ] | |
%93 = phi i64 [ %90, %89 ], [ 0, %63 ], [ 0, %62 ], [ 0, %28 ] | |
%94 = or i64 %93, %92 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %18) | |
%95 = and i64 %92, 4294967295 | |
%96 = icmp eq i64 %95, 0 | |
%97 = lshr i64 %94, 32 | |
%98 = trunc i64 %97 to i32 | |
%99 = select i1 %96, i32 1000, i32 %98 | |
store i32 %99, i32* %16, align 4 | |
%100 = getelementptr inbounds %"std::env::ArgsOs", %"std::env::ArgsOs"* %14, i64 0, i32 1, i32 3, i32 7 | |
%101 = load %"std::ffi::os_str::OsString"*, %"std::ffi::os_str::OsString"** %100, align 8, !noalias !53 | |
%102 = getelementptr inbounds %"std::env::ArgsOs", %"std::env::ArgsOs"* %14, i64 0, i32 1, i32 3, i32 9 | |
%103 = load %"std::ffi::os_str::OsString"*, %"std::ffi::os_str::OsString"** %102, align 8, !noalias !53 | |
%104 = icmp eq %"std::ffi::os_str::OsString"* %101, %103 | |
br i1 %104, label %115, label %105 | |
; <label>:105: ; preds = %91 | |
br label %106 | |
; <label>:106: ; preds = %123, %105 | |
%107 = phi %"std::ffi::os_str::OsString"* [ %124, %123 ], [ %103, %105 ] | |
%108 = phi %"std::ffi::os_str::OsString"* [ %125, %123 ], [ %101, %105 ] | |
%109 = getelementptr inbounds %"std::ffi::os_str::OsString", %"std::ffi::os_str::OsString"* %108, i64 1 | |
store %"std::ffi::os_str::OsString"* %109, %"std::ffi::os_str::OsString"** %100, align 8, !noalias !53 | |
%110 = bitcast %"std::ffi::os_str::OsString"* %108 to {}** | |
%111 = load {}*, {}** %110, align 8 | |
%112 = getelementptr inbounds %"std::ffi::os_str::OsString", %"std::ffi::os_str::OsString"* %108, i64 0, i32 1, i32 1, i32 1, i32 1 | |
%113 = load i64, i64* %112, align 8 | |
%114 = icmp eq {}* %111, null | |
br i1 %114, label %115, label %127 | |
; <label>:115: ; preds = %123, %106, %91 | |
%116 = getelementptr inbounds %"std::env::ArgsOs", %"std::env::ArgsOs"* %14, i64 0, i32 1, i32 3, i32 5 | |
%117 = load i64, i64* %116, align 8 | |
%118 = icmp eq i64 %117, 0 | |
br i1 %118, label %133, label %119 | |
; <label>:119: ; preds = %115 | |
%120 = bitcast %"std::env::ArgsOs"* %14 to i8** | |
%121 = load i8*, i8** %120, align 8, !nonnull !1 | |
%122 = mul i64 %117, 24 | |
call void @__rust_dealloc(i8* nonnull %121, i64 %122, i64 8) #6 | |
br label %133 | |
; <label>:123: ; preds = %129, %127 | |
%124 = phi %"std::ffi::os_str::OsString"* [ %132, %129 ], [ %107, %127 ] | |
%125 = phi %"std::ffi::os_str::OsString"* [ %131, %129 ], [ %109, %127 ] | |
%126 = icmp eq %"std::ffi::os_str::OsString"* %125, %124 | |
br i1 %126, label %115, label %106 | |
; <label>:127: ; preds = %106 | |
%128 = icmp eq i64 %113, 0 | |
br i1 %128, label %123, label %129 | |
; <label>:129: ; preds = %127 | |
%130 = bitcast {}* %111 to i8* | |
call void @__rust_dealloc(i8* %130, i64 %113, i64 1) #6 | |
%131 = load %"std::ffi::os_str::OsString"*, %"std::ffi::os_str::OsString"** %100, align 8, !noalias !53 | |
%132 = load %"std::ffi::os_str::OsString"*, %"std::ffi::os_str::OsString"** %102, align 8, !noalias !53 | |
br label %123 | |
; <label>:133: ; preds = %119, %115 | |
call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %19) | |
%134 = bitcast %"core::fmt::Arguments"* %13 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 48, i8* nonnull %134) | |
%135 = bitcast [1 x { i8*, i8* }]* %12 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %135) | |
%136 = bitcast [1 x { i8*, i8* }]* %12 to i32** | |
store i32* %16, i32** %136, align 8 | |
%137 = getelementptr inbounds [1 x { i8*, i8* }], [1 x { i8*, i8* }]* %12, i64 0, i64 0, i32 1 | |
store i8* bitcast (i1 (i32*, %"core::fmt::Formatter"*)* @"_ZN4core3fmt3num52_$LT$impl$u20$core..fmt..Display$u20$for$u20$i32$GT$3fmt17h8208a598556d09a5E" to i8*), i8** %137, align 8 | |
%138 = bitcast %"core::fmt::Arguments"* %13 to [0 x { [0 x i8]*, i64 }]** | |
store [0 x { [0 x i8]*, i64 }]* bitcast ([2 x { [0 x i8]*, i64 }]* @ref.s to [0 x { [0 x i8]*, i64 }]*), [0 x { [0 x i8]*, i64 }]** %138, align 8, !alias.scope !58, !noalias !61 | |
%139 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %13, i64 0, i32 1, i32 1 | |
store i64 2, i64* %139, align 8, !alias.scope !58, !noalias !61 | |
%140 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %13, i64 0, i32 3 | |
%141 = bitcast %"core::option::Option<&[core::fmt::rt::v1::Argument]>"* %140 to [0 x %"core::fmt::rt::v1::Argument"]** | |
store [0 x %"core::fmt::rt::v1::Argument"]* bitcast ({ { [0 x i8], { i64, [0 x i8], i64, [0 x i8] }, [0 x i8], { [0 x i8], <{ i64, [8 x i8] }>, [0 x i8], <{ i64, [8 x i8] }>, [0 x i8], i32, [0 x i8], i32, [0 x i8], i8, [7 x i8] }, [0 x i8] } }* @ref.t to [0 x %"core::fmt::rt::v1::Argument"]*), [0 x %"core::fmt::rt::v1::Argument"]** %141, align 8, !alias.scope !58, !noalias !61 | |
%142 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %13, i64 0, i32 3, i32 2, i64 0 | |
store i64 1, i64* %142, align 8, !alias.scope !58, !noalias !61 | |
%143 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %13, i64 0, i32 5, i32 0 | |
%144 = bitcast [0 x { i8*, i8* }]** %143 to [1 x { i8*, i8* }]** | |
store [1 x { i8*, i8* }]* %12, [1 x { i8*, i8* }]** %144, align 8, !alias.scope !58, !noalias !61 | |
%145 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %13, i64 0, i32 5, i32 1 | |
store i64 1, i64* %145, align 8, !alias.scope !58, !noalias !61 | |
call void @_ZN3std2io5stdio6_print17hf909a9417e8e3c23E(%"core::fmt::Arguments"* noalias nocapture nonnull dereferenceable(48) %13) | |
call void @llvm.lifetime.end.p0i8(i64 48, i8* nonnull %134) | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %135) | |
%146 = bitcast [5 x %Planet]* %11 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 280, i8* nonnull %146) | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull %146, i8* bitcast (double* getelementptr inbounds ({ { [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], double, [0 x i8] }, { [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], double, [0 x i8] }, { [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], double, [0 x i8] }, { [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], double, [0 x i8] }, { [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], double, [0 x i8] } }, { { [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], double, [0 x i8] }, { [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], double, [0 x i8] }, { [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], double, [0 x i8] }, { [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], double, [0 x i8] }, { [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], double, [0 x i8] } }* @_ZN4test6BODIES17h6b5b7f6a11be243fE, i64 0, i32 0, i32 1, i32 1) to i8*), i64 280, i32 8, i1 false) | |
%147 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %11, i64 0, i64 0, i32 0, i64 3 | |
%148 = bitcast i64* %147 to double* | |
%149 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %11, i64 0, i64 0, i32 0, i64 4 | |
%150 = bitcast i64* %149 to double* | |
%151 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %11, i64 0, i64 0, i32 0, i64 5 | |
%152 = bitcast i64* %151 to double* | |
%153 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %11, i64 0, i64 0, i32 3 | |
%154 = bitcast %Vec3* %153 to <2 x double>* | |
store <2 x double> <double 0xBF3967E9A7E0D6F3, double 0xBF6AD4ECFE5089FB>, <2 x double>* %154, align 8 | |
%155 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %11, i64 0, i64 0, i32 3, i32 5 | |
store double 0x3EF919331F0B8A71, double* %155, align 8 | |
%156 = bitcast %"core::fmt::Arguments"* %10 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 48, i8* nonnull %156) | |
%157 = bitcast [1 x { i8*, i8* }]* %9 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %157) | |
%158 = bitcast double* %8 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %158) | |
%159 = call fastcc double @_ZN4test6energy17h6acdc4d37a6ab310E([5 x %Planet]* noalias nonnull readonly dereferenceable(280) %11) | |
store double %159, double* %8, align 8 | |
%160 = bitcast [1 x { i8*, i8* }]* %9 to double** | |
store double* %8, double** %160, align 8 | |
%161 = getelementptr inbounds [1 x { i8*, i8* }], [1 x { i8*, i8* }]* %9, i64 0, i64 0, i32 1 | |
store i8* bitcast (i1 (double*, %"core::fmt::Formatter"*)* @"_ZN4core3fmt5float52_$LT$impl$u20$core..fmt..Display$u20$for$u20$f64$GT$3fmt17h9a2c74a963a03ea1E" to i8*), i8** %161, align 8 | |
%162 = bitcast %"core::fmt::Arguments"* %10 to [0 x { [0 x i8]*, i64 }]** | |
store [0 x { [0 x i8]*, i64 }]* bitcast ([2 x { [0 x i8]*, i64 }]* @ref.s to [0 x { [0 x i8]*, i64 }]*), [0 x { [0 x i8]*, i64 }]** %162, align 8, !alias.scope !65, !noalias !68 | |
%163 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %10, i64 0, i32 1, i32 1 | |
store i64 2, i64* %163, align 8, !alias.scope !65, !noalias !68 | |
%164 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %10, i64 0, i32 3 | |
%165 = bitcast %"core::option::Option<&[core::fmt::rt::v1::Argument]>"* %164 to [0 x %"core::fmt::rt::v1::Argument"]** | |
store [0 x %"core::fmt::rt::v1::Argument"]* bitcast ({ { [0 x i8], { i64, [0 x i8], i64, [0 x i8] }, [0 x i8], { [0 x i8], { i64, [0 x i8], i64, [0 x i8] }, [0 x i8], <{ i64, [8 x i8] }>, [0 x i8], i32, [0 x i8], i32, [0 x i8], i8, [7 x i8] }, [0 x i8] } }* @ref.v to [0 x %"core::fmt::rt::v1::Argument"]*), [0 x %"core::fmt::rt::v1::Argument"]** %165, align 8, !alias.scope !65, !noalias !68 | |
%166 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %10, i64 0, i32 3, i32 2, i64 0 | |
store i64 1, i64* %166, align 8, !alias.scope !65, !noalias !68 | |
%167 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %10, i64 0, i32 5, i32 0 | |
%168 = bitcast [0 x { i8*, i8* }]** %167 to [1 x { i8*, i8* }]** | |
store [1 x { i8*, i8* }]* %9, [1 x { i8*, i8* }]** %168, align 8, !alias.scope !65, !noalias !68 | |
%169 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %10, i64 0, i32 5, i32 1 | |
store i64 1, i64* %169, align 8, !alias.scope !65, !noalias !68 | |
call void @_ZN3std2io5stdio6_print17hf909a9417e8e3c23E(%"core::fmt::Arguments"* noalias nocapture nonnull dereferenceable(48) %10) | |
call void @llvm.lifetime.end.p0i8(i64 48, i8* nonnull %156) | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %157) | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %158) | |
%170 = load i32, i32* %16, align 4 | |
%171 = icmp sgt i32 %170, 0 | |
br i1 %171, label %468, label %188 | |
; <label>:172: ; preds = %203 | |
%173 = extractelement <4 x double> %452, i32 3 | |
store double %173, double* %472, align 16 | |
%174 = bitcast [5 x %Planet]* %11 to <2 x double>* | |
store <2 x double> %444, <2 x double>* %174, align 16 | |
%175 = extractelement <4 x double> %452, i32 2 | |
store double %175, double* %476, align 8 | |
%176 = bitcast i64* %474 to <2 x double>* | |
store <2 x double> %446, <2 x double>* %176, align 8 | |
%177 = extractelement <4 x double> %452, i32 1 | |
store double %177, double* %479, align 16 | |
%178 = bitcast i64* %473 to <2 x double>* | |
store <2 x double> %448, <2 x double>* %178, align 16 | |
%179 = extractelement <4 x double> %452, i32 0 | |
store double %179, double* %482, align 8 | |
%180 = bitcast i64* %477 to <2 x double>* | |
store <2 x double> %451, <2 x double>* %180, align 8 | |
store double %456, double* %484, align 16 | |
%181 = bitcast i64* %480 to <2 x double>* | |
store <2 x double> %455, <2 x double>* %181, align 16 | |
%182 = extractelement <2 x double> %352, i32 0 | |
store double %182, double* %148, align 8 | |
%183 = extractelement <2 x double> %352, i32 1 | |
store double %183, double* %150, align 16 | |
store double %461, double* %152, align 8 | |
%184 = bitcast i64* %488 to <2 x double>* | |
store <2 x double> %396, <2 x double>* %184, align 8 | |
store double %460, double* %490, align 8 | |
%185 = bitcast i64* %495 to <2 x double>* | |
store <2 x double> %419, <2 x double>* %185, align 8 | |
store double %459, double* %497, align 8 | |
%186 = bitcast i64* %501 to <2 x double>* | |
store <2 x double> %432, <2 x double>* %186, align 8 | |
store double %458, double* %503, align 8 | |
%187 = bitcast i64* %507 to <2 x double>* | |
store <2 x double> %440, <2 x double>* %187, align 8 | |
store double %442, double* %509, align 8 | |
br label %188 | |
; <label>:188: ; preds = %172, %133 | |
%189 = bitcast %"core::fmt::Arguments"* %7 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 48, i8* nonnull %189) | |
%190 = bitcast [1 x { i8*, i8* }]* %6 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %190) | |
%191 = bitcast double* %5 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %191) | |
%192 = call fastcc double @_ZN4test6energy17h6acdc4d37a6ab310E([5 x %Planet]* noalias nonnull readonly dereferenceable(280) %11) | |
store double %192, double* %5, align 8 | |
%193 = bitcast [1 x { i8*, i8* }]* %6 to double** | |
store double* %5, double** %193, align 8 | |
%194 = getelementptr inbounds [1 x { i8*, i8* }], [1 x { i8*, i8* }]* %6, i64 0, i64 0, i32 1 | |
store i8* bitcast (i1 (double*, %"core::fmt::Formatter"*)* @"_ZN4core3fmt5float52_$LT$impl$u20$core..fmt..Display$u20$for$u20$f64$GT$3fmt17h9a2c74a963a03ea1E" to i8*), i8** %194, align 8 | |
%195 = bitcast %"core::fmt::Arguments"* %7 to [0 x { [0 x i8]*, i64 }]** | |
store [0 x { [0 x i8]*, i64 }]* bitcast ([2 x { [0 x i8]*, i64 }]* @ref.s to [0 x { [0 x i8]*, i64 }]*), [0 x { [0 x i8]*, i64 }]** %195, align 8, !alias.scope !72, !noalias !75 | |
%196 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %7, i64 0, i32 1, i32 1 | |
store i64 2, i64* %196, align 8, !alias.scope !72, !noalias !75 | |
%197 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %7, i64 0, i32 3 | |
%198 = bitcast %"core::option::Option<&[core::fmt::rt::v1::Argument]>"* %197 to [0 x %"core::fmt::rt::v1::Argument"]** | |
store [0 x %"core::fmt::rt::v1::Argument"]* bitcast ({ { [0 x i8], { i64, [0 x i8], i64, [0 x i8] }, [0 x i8], { [0 x i8], { i64, [0 x i8], i64, [0 x i8] }, [0 x i8], <{ i64, [8 x i8] }>, [0 x i8], i32, [0 x i8], i32, [0 x i8], i8, [7 x i8] }, [0 x i8] } }* @ref.v to [0 x %"core::fmt::rt::v1::Argument"]*), [0 x %"core::fmt::rt::v1::Argument"]** %198, align 8, !alias.scope !72, !noalias !75 | |
%199 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %7, i64 0, i32 3, i32 2, i64 0 | |
store i64 1, i64* %199, align 8, !alias.scope !72, !noalias !75 | |
%200 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %7, i64 0, i32 5, i32 0 | |
%201 = bitcast [0 x { i8*, i8* }]** %200 to [1 x { i8*, i8* }]** | |
store [1 x { i8*, i8* }]* %6, [1 x { i8*, i8* }]** %201, align 8, !alias.scope !72, !noalias !75 | |
%202 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %7, i64 0, i32 5, i32 1 | |
store i64 1, i64* %202, align 8, !alias.scope !72, !noalias !75 | |
call void @_ZN3std2io5stdio6_print17hf909a9417e8e3c23E(%"core::fmt::Arguments"* noalias nocapture nonnull dereferenceable(48) %7) | |
call void @llvm.lifetime.end.p0i8(i64 48, i8* nonnull %189) | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %190) | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %191) | |
call void @llvm.lifetime.end.p0i8(i64 280, i8* nonnull %146) | |
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %17) | |
ret void | |
; <label>:203: ; preds = %468, %203 | |
%204 = phi double [ %539, %468 ], [ %442, %203 ] | |
%205 = phi double [ %536, %468 ], [ %458, %203 ] | |
%206 = phi double [ %533, %468 ], [ %459, %203 ] | |
%207 = phi double [ %530, %468 ], [ %460, %203 ] | |
%208 = phi double [ %527, %468 ], [ %461, %203 ] | |
%209 = phi double [ %522, %468 ], [ %456, %203 ] | |
%210 = phi i32 [ 0, %468 ], [ %222, %203 ] | |
%211 = phi <2 x double> [ %512, %468 ], [ %444, %203 ] | |
%212 = phi <2 x double> [ %526, %468 ], [ %352, %203 ] | |
%213 = phi <2 x double> [ %515, %468 ], [ %446, %203 ] | |
%214 = phi <2 x double> [ %518, %468 ], [ %448, %203 ] | |
%215 = phi <2 x double> [ %521, %468 ], [ %451, %203 ] | |
%216 = phi <2 x double> [ %524, %468 ], [ %455, %203 ] | |
%217 = phi <2 x double> [ %529, %468 ], [ %396, %203 ] | |
%218 = phi <4 x double> [ %543, %468 ], [ %452, %203 ] | |
%219 = phi <2 x double> [ %532, %468 ], [ %419, %203 ] | |
%220 = phi <2 x double> [ %535, %468 ], [ %432, %203 ] | |
%221 = phi <2 x double> [ %538, %468 ], [ %440, %203 ] | |
%222 = add i32 %210, 1 | |
%223 = extractelement <4 x double> %218, i32 2 | |
%224 = extractelement <4 x double> %218, i32 3 | |
%225 = fsub double %224, %223 | |
%226 = fsub <2 x double> %211, %213 | |
%227 = extractelement <4 x double> %218, i32 1 | |
%228 = fsub <2 x double> %211, %214 | |
%229 = extractelement <4 x double> %218, i32 0 | |
%230 = shufflevector <4 x double> %218, <4 x double> undef, <2 x i32> <i32 3, i32 3> | |
%231 = shufflevector <4 x double> %218, <4 x double> undef, <2 x i32> <i32 1, i32 0> | |
%232 = fsub <2 x double> %230, %231 | |
%233 = fsub <2 x double> %211, %215 | |
%234 = fsub <2 x double> %211, %216 | |
%235 = shufflevector <2 x double> %234, <2 x double> undef, <4 x i32> <i32 0, i32 1, i32 undef, i32 undef> | |
%236 = fsub <2 x double> %213, %214 | |
%237 = shufflevector <4 x double> %218, <4 x double> undef, <2 x i32> <i32 2, i32 2> | |
%238 = fsub <2 x double> %237, %231 | |
%239 = fsub <2 x double> %213, %215 | |
%240 = fsub <2 x double> %213, %216 | |
%241 = shufflevector <2 x double> %240, <2 x double> undef, <4 x i32> <i32 0, i32 1, i32 undef, i32 undef> | |
%242 = fsub double %227, %229 | |
%243 = fsub <2 x double> %214, %215 | |
%244 = fsub <2 x double> %214, %216 | |
%245 = insertelement <4 x double> undef, double %209, i32 0 | |
%246 = shufflevector <4 x double> %245, <4 x double> undef, <4 x i32> zeroinitializer | |
%247 = fsub <4 x double> %218, %246 | |
%248 = fsub <2 x double> %215, %216 | |
%249 = fmul <2 x double> %226, %226 | |
%250 = extractelement <2 x double> %249, i32 1 | |
%251 = extractelement <2 x double> %249, i32 0 | |
%252 = fadd double %250, %251 | |
%253 = fmul double %225, %225 | |
%254 = fadd double %253, %252 | |
%255 = call double @llvm.sqrt.f64(double %254) #6 | |
%256 = fmul double %254, %255 | |
%257 = fdiv double 1.000000e-02, %256 | |
%258 = shufflevector <2 x double> %228, <2 x double> %233, <2 x i32> <i32 0, i32 2> | |
%259 = fmul <2 x double> %258, %258 | |
%260 = shufflevector <2 x double> %228, <2 x double> %233, <2 x i32> <i32 1, i32 3> | |
%261 = fmul <2 x double> %260, %260 | |
%262 = fadd <2 x double> %259, %261 | |
%263 = fmul <2 x double> %232, %232 | |
%264 = fadd <2 x double> %262, %263 | |
%265 = call <2 x double> @llvm.sqrt.v2f64(<2 x double> %264) | |
%266 = fmul <2 x double> %264, %265 | |
%267 = fdiv <2 x double> <double 1.000000e-02, double 1.000000e-02>, %266 | |
%268 = shufflevector <2 x double> %236, <2 x double> %239, <2 x i32> <i32 0, i32 2> | |
%269 = fmul <2 x double> %268, %268 | |
%270 = shufflevector <2 x double> %236, <2 x double> undef, <2 x i32> <i32 1, i32 undef> | |
%271 = shufflevector <2 x double> %270, <2 x double> %239, <2 x i32> <i32 0, i32 3> | |
%272 = fmul <2 x double> %271, %271 | |
%273 = fadd <2 x double> %269, %272 | |
%274 = fmul <2 x double> %238, %238 | |
%275 = fadd <2 x double> %273, %274 | |
%276 = call <2 x double> @llvm.sqrt.v2f64(<2 x double> %275) | |
%277 = fmul <2 x double> %275, %276 | |
%278 = fdiv <2 x double> <double 1.000000e-02, double 1.000000e-02>, %277 | |
%279 = fmul <2 x double> %243, %243 | |
%280 = extractelement <2 x double> %279, i32 0 | |
%281 = extractelement <2 x double> %279, i32 1 | |
%282 = fadd double %280, %281 | |
%283 = fmul double %242, %242 | |
%284 = fadd double %282, %283 | |
%285 = call double @llvm.sqrt.f64(double %284) #6 | |
%286 = fmul double %284, %285 | |
%287 = fdiv double 1.000000e-02, %286 | |
%288 = shufflevector <2 x double> %248, <2 x double> %244, <4 x i32> <i32 0, i32 2, i32 undef, i32 undef> | |
%289 = shufflevector <4 x double> %288, <4 x double> %241, <4 x i32> <i32 0, i32 1, i32 4, i32 undef> | |
%290 = shufflevector <4 x double> %289, <4 x double> %235, <4 x i32> <i32 0, i32 1, i32 2, i32 4> | |
%291 = fmul <4 x double> %290, %290 | |
%292 = shufflevector <2 x double> %248, <2 x double> %244, <4 x i32> <i32 1, i32 3, i32 undef, i32 undef> | |
%293 = shufflevector <4 x double> %292, <4 x double> %241, <4 x i32> <i32 0, i32 1, i32 5, i32 undef> | |
%294 = shufflevector <4 x double> %293, <4 x double> %235, <4 x i32> <i32 0, i32 1, i32 2, i32 5> | |
%295 = fmul <4 x double> %294, %294 | |
%296 = fadd <4 x double> %291, %295 | |
%297 = fmul <4 x double> %247, %247 | |
%298 = fadd <4 x double> %296, %297 | |
%299 = call <4 x double> @llvm.sqrt.v4f64(<4 x double> %298) | |
%300 = fmul <4 x double> %298, %299 | |
%301 = fdiv <4 x double> <double 1.000000e-02, double 1.000000e-02, double 1.000000e-02, double 1.000000e-02>, %300 | |
%302 = fmul double %257, %487 | |
%303 = insertelement <2 x double> undef, double %302, i32 0 | |
%304 = shufflevector <2 x double> %303, <2 x double> undef, <2 x i32> zeroinitializer | |
%305 = fmul <2 x double> %226, %304 | |
%306 = fmul double %225, %302 | |
%307 = fsub <2 x double> %212, %305 | |
%308 = fsub double %208, %306 | |
%309 = fmul double %257, %491 | |
%310 = insertelement <2 x double> undef, double %309, i32 0 | |
%311 = shufflevector <2 x double> %310, <2 x double> undef, <2 x i32> zeroinitializer | |
%312 = fmul <2 x double> %226, %311 | |
%313 = fmul double %225, %309 | |
%314 = fadd <2 x double> %217, %312 | |
%315 = fadd double %207, %313 | |
%316 = fmul <2 x double> %267, %547 | |
%317 = shufflevector <2 x double> %316, <2 x double> undef, <2 x i32> zeroinitializer | |
%318 = fmul <2 x double> %228, %317 | |
%319 = fsub <2 x double> %307, %318 | |
%320 = fmul <2 x double> %232, %316 | |
%321 = extractelement <2 x double> %320, i32 0 | |
%322 = fsub double %308, %321 | |
%323 = extractelement <2 x double> %267, i32 0 | |
%324 = fmul double %323, %491 | |
%325 = insertelement <2 x double> undef, double %324, i32 0 | |
%326 = shufflevector <2 x double> %325, <2 x double> undef, <2 x i32> zeroinitializer | |
%327 = fmul <2 x double> %228, %326 | |
%328 = extractelement <2 x double> %232, i32 0 | |
%329 = fmul double %328, %324 | |
%330 = fadd <2 x double> %327, %219 | |
%331 = fadd double %329, %206 | |
%332 = shufflevector <2 x double> %316, <2 x double> undef, <2 x i32> <i32 1, i32 1> | |
%333 = fmul <2 x double> %233, %332 | |
%334 = fsub <2 x double> %319, %333 | |
%335 = extractelement <2 x double> %320, i32 1 | |
%336 = fsub double %322, %335 | |
%337 = shufflevector <2 x double> %278, <2 x double> %267, <2 x i32> <i32 1, i32 3> | |
%338 = fmul <2 x double> %337, %549 | |
%339 = shufflevector <2 x double> %239, <2 x double> %233, <2 x i32> <i32 0, i32 2> | |
%340 = fmul <2 x double> %339, %338 | |
%341 = shufflevector <2 x double> %239, <2 x double> %233, <2 x i32> <i32 1, i32 3> | |
%342 = fmul <2 x double> %341, %338 | |
%343 = shufflevector <2 x double> %340, <2 x double> %342, <2 x i32> <i32 1, i32 3> | |
%344 = fadd <2 x double> %343, %220 | |
%345 = shufflevector <2 x double> %238, <2 x double> %232, <2 x i32> <i32 1, i32 3> | |
%346 = fmul <2 x double> %345, %338 | |
%347 = extractelement <2 x double> %346, i32 1 | |
%348 = fadd double %347, %205 | |
%349 = fmul <4 x double> %301, %545 | |
%350 = shufflevector <4 x double> %349, <4 x double> undef, <2 x i32> <i32 3, i32 3> | |
%351 = fmul <2 x double> %234, %350 | |
%352 = fsub <2 x double> %334, %351 | |
%353 = extractelement <4 x double> %301, i32 3 | |
%354 = fmul double %353, %491 | |
%355 = insertelement <2 x double> undef, double %354, i32 0 | |
%356 = shufflevector <2 x double> %355, <2 x double> undef, <2 x i32> zeroinitializer | |
%357 = fmul <2 x double> %234, %356 | |
%358 = extractelement <4 x double> %247, i32 3 | |
%359 = fmul double %358, %354 | |
%360 = fadd <2 x double> %357, %221 | |
%361 = fadd double %359, %204 | |
%362 = fmul <2 x double> %278, %547 | |
%363 = shufflevector <2 x double> %362, <2 x double> undef, <2 x i32> zeroinitializer | |
%364 = fmul <2 x double> %236, %363 | |
%365 = fsub <2 x double> %314, %364 | |
%366 = fmul <2 x double> %238, %362 | |
%367 = extractelement <2 x double> %366, i32 0 | |
%368 = fsub double %315, %367 | |
%369 = extractelement <2 x double> %278, i32 0 | |
%370 = insertelement <2 x double> undef, double %369, i32 0 | |
%371 = insertelement <2 x double> %370, double %287, i32 1 | |
%372 = fmul <2 x double> %371, %550 | |
%373 = extractelement <2 x double> %238, i32 0 | |
%374 = shufflevector <2 x double> %236, <2 x double> %243, <2 x i32> <i32 0, i32 2> | |
%375 = fmul <2 x double> %374, %372 | |
%376 = shufflevector <2 x double> %270, <2 x double> %243, <2 x i32> <i32 0, i32 3> | |
%377 = fmul <2 x double> %376, %372 | |
%378 = shufflevector <2 x double> %375, <2 x double> %377, <2 x i32> <i32 0, i32 2> | |
%379 = fadd <2 x double> %378, %330 | |
%380 = insertelement <2 x double> undef, double %373, i32 0 | |
%381 = insertelement <2 x double> %380, double %242, i32 1 | |
%382 = fmul <2 x double> %381, %372 | |
%383 = extractelement <2 x double> %382, i32 0 | |
%384 = fadd double %383, %331 | |
%385 = shufflevector <2 x double> %362, <2 x double> undef, <2 x i32> <i32 1, i32 1> | |
%386 = fmul <2 x double> %239, %385 | |
%387 = fsub <2 x double> %365, %386 | |
%388 = extractelement <2 x double> %366, i32 1 | |
%389 = fsub double %368, %388 | |
%390 = shufflevector <2 x double> %340, <2 x double> %342, <2 x i32> <i32 0, i32 2> | |
%391 = fadd <2 x double> %390, %344 | |
%392 = extractelement <2 x double> %346, i32 0 | |
%393 = fadd double %392, %348 | |
%394 = shufflevector <4 x double> %349, <4 x double> undef, <2 x i32> <i32 2, i32 2> | |
%395 = fmul <2 x double> %240, %394 | |
%396 = fsub <2 x double> %387, %395 | |
%397 = extractelement <4 x double> %301, i32 2 | |
%398 = fmul double %397, %487 | |
%399 = insertelement <2 x double> undef, double %398, i32 0 | |
%400 = shufflevector <2 x double> %399, <2 x double> undef, <2 x i32> zeroinitializer | |
%401 = fmul <2 x double> %240, %400 | |
%402 = extractelement <4 x double> %247, i32 2 | |
%403 = fmul double %402, %398 | |
%404 = fadd <2 x double> %401, %360 | |
%405 = fadd double %403, %361 | |
%406 = shufflevector <2 x double> %375, <2 x double> %377, <2 x i32> <i32 1, i32 3> | |
%407 = fsub <2 x double> %379, %406 | |
%408 = extractelement <2 x double> %382, i32 1 | |
%409 = fsub double %384, %408 | |
%410 = fmul double %287, %494 | |
%411 = insertelement <2 x double> undef, double %410, i32 0 | |
%412 = shufflevector <2 x double> %411, <2 x double> undef, <2 x i32> zeroinitializer | |
%413 = fmul <2 x double> %243, %412 | |
%414 = fmul double %242, %410 | |
%415 = fadd <2 x double> %413, %391 | |
%416 = fadd double %414, %393 | |
%417 = shufflevector <4 x double> %349, <4 x double> undef, <2 x i32> <i32 1, i32 1> | |
%418 = fmul <2 x double> %244, %417 | |
%419 = fsub <2 x double> %407, %418 | |
%420 = shufflevector <4 x double> %301, <4 x double> undef, <2 x i32> <i32 0, i32 1> | |
%421 = fmul <2 x double> %420, %552 | |
%422 = shufflevector <2 x double> %421, <2 x double> undef, <2 x i32> <i32 1, i32 1> | |
%423 = fmul <2 x double> %244, %422 | |
%424 = fadd <2 x double> %423, %404 | |
%425 = shufflevector <4 x double> %247, <4 x double> undef, <2 x i32> <i32 0, i32 1> | |
%426 = fmul <2 x double> %425, %421 | |
%427 = extractelement <2 x double> %426, i32 1 | |
%428 = fadd double %427, %405 | |
%429 = shufflevector <4 x double> %349, <4 x double> undef, <2 x i32> zeroinitializer | |
%430 = fmul <2 x double> %248, %429 | |
%431 = fmul <4 x double> %247, %349 | |
%432 = fsub <2 x double> %415, %430 | |
%433 = insertelement <4 x double> undef, double %416, i32 0 | |
%434 = insertelement <4 x double> %433, double %409, i32 1 | |
%435 = insertelement <4 x double> %434, double %389, i32 2 | |
%436 = insertelement <4 x double> %435, double %336, i32 3 | |
%437 = fsub <4 x double> %436, %431 | |
%438 = shufflevector <2 x double> %421, <2 x double> undef, <2 x i32> zeroinitializer | |
%439 = fmul <2 x double> %248, %438 | |
%440 = fadd <2 x double> %439, %424 | |
%441 = extractelement <2 x double> %426, i32 0 | |
%442 = fadd double %441, %428 | |
%443 = fmul <2 x double> %352, <double 1.000000e-02, double 1.000000e-02> | |
%444 = fadd <2 x double> %211, %443 | |
%445 = fmul <2 x double> %396, <double 1.000000e-02, double 1.000000e-02> | |
%446 = fadd <2 x double> %213, %445 | |
%447 = fmul <2 x double> %419, <double 1.000000e-02, double 1.000000e-02> | |
%448 = fadd <2 x double> %214, %447 | |
%449 = fmul <2 x double> %432, <double 1.000000e-02, double 1.000000e-02> | |
%450 = fmul <4 x double> %437, <double 1.000000e-02, double 1.000000e-02, double 1.000000e-02, double 1.000000e-02> | |
%451 = fadd <2 x double> %215, %449 | |
%452 = fadd <4 x double> %218, %450 | |
%453 = fmul <2 x double> %440, <double 1.000000e-02, double 1.000000e-02> | |
%454 = fmul double %442, 1.000000e-02 | |
%455 = fadd <2 x double> %216, %453 | |
%456 = fadd double %209, %454 | |
%457 = icmp slt i32 %222, %170 | |
%458 = extractelement <4 x double> %437, i32 0 | |
%459 = extractelement <4 x double> %437, i32 1 | |
%460 = extractelement <4 x double> %437, i32 2 | |
%461 = extractelement <4 x double> %437, i32 3 | |
br i1 %457, label %203, label %172 | |
; <label>:462: ; preds = %33 | |
%463 = landingpad { i8*, i32 } | |
cleanup | |
br label %466 | |
; <label>:464: ; preds = %44, %0 | |
%465 = landingpad { i8*, i32 } | |
cleanup | |
br label %466 | |
; <label>:466: ; preds = %464, %462, %70 | |
%467 = phi { i8*, i32 } [ %71, %70 ], [ %463, %462 ], [ %465, %464 ] | |
call fastcc void @_ZN4core3ptr13drop_in_place17h5ad1bad050c6ee33E(%"std::env::ArgsOs"* nonnull %14) #7 | |
resume { i8*, i32 } %467 | |
; <label>:468: ; preds = %133 | |
%469 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %11, i64 0, i64 0, i32 0, i64 6 | |
%470 = bitcast i64* %469 to double* | |
%471 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %11, i64 0, i64 0, i32 0, i64 2 | |
%472 = bitcast i64* %471 to double* | |
%473 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %11, i64 0, i64 0, i32 0, i64 14 | |
%474 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %11, i64 0, i64 0, i32 0, i64 7 | |
%475 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %11, i64 0, i64 0, i32 0, i64 9 | |
%476 = bitcast i64* %475 to double* | |
%477 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %11, i64 0, i64 0, i32 0, i64 21 | |
%478 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %11, i64 0, i64 0, i32 0, i64 16 | |
%479 = bitcast i64* %478 to double* | |
%480 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %11, i64 0, i64 0, i32 0, i64 28 | |
%481 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %11, i64 0, i64 0, i32 0, i64 23 | |
%482 = bitcast i64* %481 to double* | |
%483 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %11, i64 0, i64 0, i32 0, i64 30 | |
%484 = bitcast i64* %483 to double* | |
%485 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %11, i64 0, i64 1, i32 0, i64 6 | |
%486 = bitcast i64* %485 to double* | |
%487 = load double, double* %486, align 8 | |
%488 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %11, i64 0, i64 1, i32 0, i64 3 | |
%489 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %11, i64 0, i64 1, i32 0, i64 5 | |
%490 = bitcast i64* %489 to double* | |
%491 = load double, double* %470, align 16 | |
%492 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %11, i64 0, i64 1, i32 0, i64 13 | |
%493 = bitcast i64* %492 to double* | |
%494 = load double, double* %493, align 8 | |
%495 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %11, i64 0, i64 1, i32 0, i64 10 | |
%496 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %11, i64 0, i64 1, i32 0, i64 12 | |
%497 = bitcast i64* %496 to double* | |
%498 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %11, i64 0, i64 1, i32 0, i64 20 | |
%499 = bitcast i64* %498 to double* | |
%500 = load double, double* %499, align 8 | |
%501 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %11, i64 0, i64 1, i32 0, i64 17 | |
%502 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %11, i64 0, i64 1, i32 0, i64 19 | |
%503 = bitcast i64* %502 to double* | |
%504 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %11, i64 0, i64 1, i32 0, i64 27 | |
%505 = bitcast i64* %504 to double* | |
%506 = load double, double* %505, align 8 | |
%507 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %11, i64 0, i64 1, i32 0, i64 24 | |
%508 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %11, i64 0, i64 1, i32 0, i64 26 | |
%509 = bitcast i64* %508 to double* | |
%510 = load double, double* %472, align 16 | |
%511 = bitcast [5 x %Planet]* %11 to <2 x double>* | |
%512 = load <2 x double>, <2 x double>* %511, align 16 | |
%513 = load double, double* %476, align 8 | |
%514 = bitcast i64* %474 to <2 x double>* | |
%515 = load <2 x double>, <2 x double>* %514, align 8 | |
%516 = load double, double* %479, align 16 | |
%517 = bitcast i64* %473 to <2 x double>* | |
%518 = load <2 x double>, <2 x double>* %517, align 16 | |
%519 = load double, double* %482, align 8 | |
%520 = bitcast i64* %477 to <2 x double>* | |
%521 = load <2 x double>, <2 x double>* %520, align 8 | |
%522 = load double, double* %484, align 16 | |
%523 = bitcast i64* %480 to <2 x double>* | |
%524 = load <2 x double>, <2 x double>* %523, align 16 | |
%525 = bitcast i64* %147 to <2 x double>* | |
%526 = load <2 x double>, <2 x double>* %525, align 8 | |
%527 = load double, double* %152, align 8 | |
%528 = bitcast i64* %488 to <2 x double>* | |
%529 = load <2 x double>, <2 x double>* %528, align 8 | |
%530 = load double, double* %490, align 8 | |
%531 = bitcast i64* %495 to <2 x double>* | |
%532 = load <2 x double>, <2 x double>* %531, align 8 | |
%533 = load double, double* %497, align 8 | |
%534 = bitcast i64* %501 to <2 x double>* | |
%535 = load <2 x double>, <2 x double>* %534, align 8 | |
%536 = load double, double* %503, align 8 | |
%537 = bitcast i64* %507 to <2 x double>* | |
%538 = load <2 x double>, <2 x double>* %537, align 8 | |
%539 = load double, double* %509, align 8 | |
%540 = insertelement <4 x double> undef, double %519, i32 0 | |
%541 = insertelement <4 x double> %540, double %516, i32 1 | |
%542 = insertelement <4 x double> %541, double %513, i32 2 | |
%543 = insertelement <4 x double> %542, double %510, i32 3 | |
%544 = insertelement <4 x double> undef, double %506, i32 0 | |
%545 = shufflevector <4 x double> %544, <4 x double> undef, <4 x i32> zeroinitializer | |
%546 = insertelement <2 x double> undef, double %494, i32 0 | |
%547 = insertelement <2 x double> %546, double %500, i32 1 | |
%548 = insertelement <2 x double> undef, double %487, i32 0 | |
%549 = insertelement <2 x double> %548, double %491, i32 1 | |
%550 = insertelement <2 x double> %548, double %500, i32 1 | |
%551 = insertelement <2 x double> undef, double %500, i32 0 | |
%552 = insertelement <2 x double> %551, double %494, i32 1 | |
br label %203 | |
} | |
declare i32 @rust_eh_personality(i32, i32, i64, %"unwind::libunwind::_Unwind_Exception"*, %"unwind::libunwind::_Unwind_Context"*) unnamed_addr | |
; Function Attrs: argmemonly nounwind | |
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture writeonly, i8* nocapture readonly, i64, i32, i1) #4 | |
declare i64 @_ZN3std2rt19lang_start_internal17he461b456319e29d6E({}* nonnull, {}* noalias nonnull readonly, i64, i8**) unnamed_addr | |
declare i32 @"_ZN58_$LT$$LP$$RP$$u20$as$u20$std..termination..Termination$GT$6report17h5ef51a1159d52e9eE"() unnamed_addr | |
; Function Attrs: nounwind readnone speculatable | |
declare double @llvm.sqrt.f64(double) #5 | |
declare i64 @"_ZN4core3num52_$LT$impl$u20$core..str..FromStr$u20$for$u20$i32$GT$8from_str17h99b48ffb87a27724E"([0 x i8]* noalias nonnull readonly, i64) unnamed_addr | |
; Function Attrs: nounwind | |
declare void @__rust_dealloc(i8*, i64, i64) unnamed_addr #6 | |
declare void @"_ZN67_$LT$std..env..ArgsOs$u20$as$u20$core..iter..iterator..Iterator$GT$4next17h2da8ead691074258E"(%"core::option::Option<std::ffi::os_str::OsString>"* noalias nocapture sret dereferenceable(24), %"std::env::ArgsOs"* dereferenceable(32)) unnamed_addr | |
declare void @_ZN3std3env7args_os17h0e97fc174faccbd6E(%"std::env::ArgsOs"* noalias nocapture sret dereferenceable(32)) unnamed_addr | |
declare zeroext i1 @"_ZN4core3fmt3num52_$LT$impl$u20$core..fmt..Display$u20$for$u20$i32$GT$3fmt17h8208a598556d09a5E"(i32* noalias readonly dereferenceable(4), %"core::fmt::Formatter"* dereferenceable(96)) unnamed_addr | |
declare void @_ZN3std2io5stdio6_print17hf909a9417e8e3c23E(%"core::fmt::Arguments"* noalias nocapture dereferenceable(48)) unnamed_addr | |
declare zeroext i1 @"_ZN4core3fmt5float52_$LT$impl$u20$core..fmt..Display$u20$for$u20$f64$GT$3fmt17h9a2c74a963a03ea1E"(double* noalias readonly dereferenceable(8), %"core::fmt::Formatter"* dereferenceable(96)) unnamed_addr | |
declare void @_ZN3std3ffi6os_str8OsString11into_string17h567757e2e42e16abE(%"core::result::Result<alloc::string::String, std::ffi::os_str::OsString>"* noalias nocapture sret dereferenceable(32), %"std::ffi::os_str::OsString"* noalias nocapture dereferenceable(24)) unnamed_addr | |
define i32 @main(i32, i8**) unnamed_addr { | |
%3 = alloca i8*, align 8 | |
%4 = sext i32 %0 to i64 | |
%5 = bitcast i8** %3 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %5) | |
%6 = bitcast i8** %3 to void ()** | |
store void ()* @_ZN4test4main17h6f2dd3dc2bc8dfe6E, void ()** %6, align 8 | |
%7 = bitcast i8** %3 to {}* | |
%8 = call i64 @_ZN3std2rt19lang_start_internal17he461b456319e29d6E({}* nonnull %7, {}* noalias nonnull readonly bitcast ({ void (i8**)*, i64, i64, i32 (i8**)*, i32 (i8**)*, i32 (i8*)* }* @vtable.4 to {}*), i64 %4, i8** %1) | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %5) | |
%9 = trunc i64 %8 to i32 | |
ret i32 %9 | |
} | |
; Function Attrs: argmemonly nounwind | |
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #4 | |
; Function Attrs: argmemonly nounwind | |
declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #4 | |
; Function Attrs: nounwind readnone speculatable | |
declare <4 x double> @llvm.sqrt.v4f64(<4 x double>) #5 | |
; Function Attrs: nounwind readnone speculatable | |
declare <2 x double> @llvm.sqrt.v2f64(<2 x double>) #5 | |
attributes #0 = { uwtable } | |
attributes #1 = { norecurse nounwind readnone uwtable } | |
attributes #2 = { nounwind uwtable } | |
attributes #3 = { nounwind readonly uwtable } | |
attributes #4 = { argmemonly nounwind } | |
attributes #5 = { nounwind readnone speculatable } | |
attributes #6 = { nounwind } | |
attributes #7 = { noinline } | |
!llvm.module.flags = !{!0} | |
!0 = !{i32 7, !"PIE Level", i32 2} | |
!1 = !{} | |
!2 = !{!3} | |
!3 = distinct !{!3, !4, !"_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h64ffb38e2fed3ec4E: argument 0"} | |
!4 = distinct !{!4, !"_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h64ffb38e2fed3ec4E"} | |
!5 = !{!6, !8} | |
!6 = distinct !{!6, !7, !"_ZN80_$LT$alloc..vec..IntoIter$LT$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$4next17h04e50c9174a9b00dE: argument 0"} | |
!7 = distinct !{!7, !"_ZN80_$LT$alloc..vec..IntoIter$LT$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$4next17h04e50c9174a9b00dE"} | |
!8 = distinct !{!8, !9, !"_ZN75_$LT$$RF$$u27$a$u20$mut$u20$I$u20$as$u20$core..iter..iterator..Iterator$GT$4next17he05fd7ab4618c162E: argument 0"} | |
!9 = distinct !{!9, !"_ZN75_$LT$$RF$$u27$a$u20$mut$u20$I$u20$as$u20$core..iter..iterator..Iterator$GT$4next17he05fd7ab4618c162E"} | |
!10 = !{!11} | |
!11 = distinct !{!11, !12, !"_ZN4test4Vec312squared_norm17h432dc8574a0bf316E: argument 0"} | |
!12 = distinct !{!12, !"_ZN4test4Vec312squared_norm17h432dc8574a0bf316E"} | |
!13 = !{!14, !16, !18, !20} | |
!14 = distinct !{!14, !15, !"_ZN4test6energy28_$u7b$$u7b$closure$u7d$$u7d$17ha38cbc1d8f4f6c5eE: argument 0"} | |
!15 = distinct !{!15, !"_ZN4test6energy28_$u7b$$u7b$closure$u7d$$u7d$17ha38cbc1d8f4f6c5eE"} | |
!16 = distinct !{!16, !17, !"_ZN84_$LT$core..iter..Map$LT$I$C$$u20$F$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$4fold28_$u7b$$u7b$closure$u7d$$u7d$17hdbb45dd658aa063fE: argument 0"} | |
!17 = distinct !{!17, !"_ZN84_$LT$core..iter..Map$LT$I$C$$u20$F$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$4fold28_$u7b$$u7b$closure$u7d$$u7d$17hdbb45dd658aa063fE"} | |
!18 = distinct !{!18, !19, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$4fold17hecd838a7900d1617E: argument 0"} | |
!19 = distinct !{!19, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$4fold17hecd838a7900d1617E"} | |
!20 = distinct !{!20, !21, !"_ZN84_$LT$core..iter..Map$LT$I$C$$u20$F$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$4fold17ha5d8ab8ae0e98620E: argument 0"} | |
!21 = distinct !{!21, !"_ZN84_$LT$core..iter..Map$LT$I$C$$u20$F$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$4fold17ha5d8ab8ae0e98620E"} | |
!22 = !{!14, !16} | |
!23 = !{!18, !20} | |
!24 = !{!25} | |
!25 = distinct !{!25, !26, !"_ZN4core4iter8iterator8Iterator3nth17h1563a4e0b7230cedE: argument 0"} | |
!26 = distinct !{!26, !"_ZN4core4iter8iterator8Iterator3nth17h1563a4e0b7230cedE"} | |
!27 = !{!28, !30, !31, !33} | |
!28 = distinct !{!28, !29, !"_ZN4test4main28_$u7b$$u7b$closure$u7d$$u7d$17hbabc083ce480624cE: argument 0"} | |
!29 = distinct !{!29, !"_ZN4test4main28_$u7b$$u7b$closure$u7d$$u7d$17hbabc083ce480624cE"} | |
!30 = distinct !{!30, !29, !"_ZN4test4main28_$u7b$$u7b$closure$u7d$$u7d$17hbabc083ce480624cE: argument 1"} | |
!31 = distinct !{!31, !32, !"_ZN38_$LT$core..option..Option$LT$T$GT$$GT$8and_then17hc6da7a8d14258841E: argument 0"} | |
!32 = distinct !{!32, !"_ZN38_$LT$core..option..Option$LT$T$GT$$GT$8and_then17hc6da7a8d14258841E"} | |
!33 = distinct !{!33, !32, !"_ZN38_$LT$core..option..Option$LT$T$GT$$GT$8and_then17hc6da7a8d14258841E: argument 1"} | |
!34 = !{i64 0, i64 2} | |
!35 = !{!36} | |
!36 = distinct !{!36, !37, !"_ZN47_$LT$core..result..Result$LT$T$C$$u20$E$GT$$GT$2ok17h8d88d07d961397f1E: argument 1"} | |
!37 = distinct !{!37, !"_ZN47_$LT$core..result..Result$LT$T$C$$u20$E$GT$$GT$2ok17h8d88d07d961397f1E"} | |
!38 = !{!39, !28, !30, !31, !33} | |
!39 = distinct !{!39, !37, !"_ZN47_$LT$core..result..Result$LT$T$C$$u20$E$GT$$GT$2ok17h8d88d07d961397f1E: argument 0"} | |
!40 = !{!39, !36, !28, !30, !31, !33} | |
!41 = !{!42} | |
!42 = distinct !{!42, !43, !"_ZN38_$LT$core..option..Option$LT$T$GT$$GT$8and_then17hed108e8b4b447622E: argument 0"} | |
!43 = distinct !{!43, !"_ZN38_$LT$core..option..Option$LT$T$GT$$GT$8and_then17hed108e8b4b447622E"} | |
!44 = !{!45, !47, !49} | |
!45 = distinct !{!45, !46, !"_ZN68_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$core..ops..deref..Deref$GT$5deref17h15454f68f103465cE: argument 0"} | |
!46 = distinct !{!46, !"_ZN68_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$core..ops..deref..Deref$GT$5deref17h15454f68f103465cE"} | |
!47 = distinct !{!47, !48, !"_ZN65_$LT$alloc..string..String$u20$as$u20$core..ops..deref..Deref$GT$5deref17h592502204d4931f8E: argument 0"} | |
!48 = distinct !{!48, !"_ZN65_$LT$alloc..string..String$u20$as$u20$core..ops..deref..Deref$GT$5deref17h592502204d4931f8E"} | |
!49 = distinct !{!49, !50, !"_ZN4test4main28_$u7b$$u7b$closure$u7d$$u7d$17hab760d6fcd6093b0E: argument 0"} | |
!50 = distinct !{!50, !"_ZN4test4main28_$u7b$$u7b$closure$u7d$$u7d$17hab760d6fcd6093b0E"} | |
!51 = !{!49, !42} | |
!52 = !{!49} | |
!53 = !{!54, !56} | |
!54 = distinct !{!54, !55, !"_ZN80_$LT$alloc..vec..IntoIter$LT$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$4next17h04e50c9174a9b00dE: argument 0"} | |
!55 = distinct !{!55, !"_ZN80_$LT$alloc..vec..IntoIter$LT$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$4next17h04e50c9174a9b00dE"} | |
!56 = distinct !{!56, !57, !"_ZN75_$LT$$RF$$u27$a$u20$mut$u20$I$u20$as$u20$core..iter..iterator..Iterator$GT$4next17he05fd7ab4618c162E: argument 0"} | |
!57 = distinct !{!57, !"_ZN75_$LT$$RF$$u27$a$u20$mut$u20$I$u20$as$u20$core..iter..iterator..Iterator$GT$4next17he05fd7ab4618c162E"} | |
!58 = !{!59} | |
!59 = distinct !{!59, !60, !"_ZN4core3fmt9Arguments16new_v1_formatted17hea2ae333548f7201E: argument 0"} | |
!60 = distinct !{!60, !"_ZN4core3fmt9Arguments16new_v1_formatted17hea2ae333548f7201E"} | |
!61 = !{!62, !63, !64} | |
!62 = distinct !{!62, !60, !"_ZN4core3fmt9Arguments16new_v1_formatted17hea2ae333548f7201E: argument 1"} | |
!63 = distinct !{!63, !60, !"_ZN4core3fmt9Arguments16new_v1_formatted17hea2ae333548f7201E: argument 2"} | |
!64 = distinct !{!64, !60, !"_ZN4core3fmt9Arguments16new_v1_formatted17hea2ae333548f7201E: argument 3"} | |
!65 = !{!66} | |
!66 = distinct !{!66, !67, !"_ZN4core3fmt9Arguments16new_v1_formatted17hea2ae333548f7201E: argument 0"} | |
!67 = distinct !{!67, !"_ZN4core3fmt9Arguments16new_v1_formatted17hea2ae333548f7201E"} | |
!68 = !{!69, !70, !71} | |
!69 = distinct !{!69, !67, !"_ZN4core3fmt9Arguments16new_v1_formatted17hea2ae333548f7201E: argument 1"} | |
!70 = distinct !{!70, !67, !"_ZN4core3fmt9Arguments16new_v1_formatted17hea2ae333548f7201E: argument 2"} | |
!71 = distinct !{!71, !67, !"_ZN4core3fmt9Arguments16new_v1_formatted17hea2ae333548f7201E: argument 3"} | |
!72 = !{!73} | |
!73 = distinct !{!73, !74, !"_ZN4core3fmt9Arguments16new_v1_formatted17hea2ae333548f7201E: argument 0"} | |
!74 = distinct !{!74, !"_ZN4core3fmt9Arguments16new_v1_formatted17hea2ae333548f7201E"} | |
!75 = !{!76, !77, !78} | |
!76 = distinct !{!76, !74, !"_ZN4core3fmt9Arguments16new_v1_formatted17hea2ae333548f7201E: argument 1"} | |
!77 = distinct !{!77, !74, !"_ZN4core3fmt9Arguments16new_v1_formatted17hea2ae333548f7201E: argument 2"} | |
!78 = distinct !{!78, !74, !"_ZN4core3fmt9Arguments16new_v1_formatted17hea2ae333548f7201E: argument 3"} |
This file contains 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 = 'test-pgo-use.test0.rcgu.bc' | |
source_filename = "test0-317d481089b8c8fe83113de504472633.rs" | |
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" | |
target triple = "x86_64-unknown-linux-gnu" | |
%Planet = type { [0 x i64], %Vec3, [0 x i64], %Vec3, [0 x i64], double, [0 x i64] } | |
%Vec3 = type { [0 x i64], double, [0 x i64], double, [0 x i64], double, [0 x i64] } | |
%"std::env::ArgsOs" = type { [0 x i64], %"std::sys::unix::args::Args", [0 x i64] } | |
%"std::sys::unix::args::Args" = type { [0 x i8], %"core::marker::PhantomData<*mut ()>", [0 x i8], %"alloc::vec::IntoIter<std::ffi::os_str::OsString>", [0 x i64] } | |
%"core::marker::PhantomData<*mut ()>" = type {} | |
%"alloc::vec::IntoIter<std::ffi::os_str::OsString>" = type { [0 x i8], %"core::marker::PhantomData<std::ffi::os_str::OsString>", [0 x i8], i64*, [0 x i64], i64, [0 x i64], %"std::ffi::os_str::OsString"*, [0 x i64], %"std::ffi::os_str::OsString"*, [0 x i64] } | |
%"core::marker::PhantomData<std::ffi::os_str::OsString>" = type {} | |
%"std::ffi::os_str::OsString" = type { [0 x i64], %"std::sys::unix::os_str::Buf", [0 x i64] } | |
%"std::sys::unix::os_str::Buf" = type { [0 x i64], %"alloc::vec::Vec<u8>", [0 x i64] } | |
%"alloc::vec::Vec<u8>" = type { [0 x i64], { i8*, i64 }, [0 x i64], i64, [0 x i64] } | |
%"alloc::string::String" = type { [0 x i64], %"alloc::vec::Vec<u8>", [0 x i64] } | |
%"core::ptr::swap_nonoverlapping_bytes::UnalignedBlock" = type { [0 x i64], i64, [0 x i64], i64, [0 x i64], i64, [0 x i64], i64, [0 x i64] } | |
%"core::result::Result<alloc::string::String, std::ffi::os_str::OsString>" = type { [0 x i64], i64, [3 x i64] } | |
%"core::option::Option<std::ffi::os_str::OsString>" = type { [0 x i64], {}*, [2 x i64] } | |
%"core::fmt::Arguments" = type { [0 x i64], { [0 x { [0 x i8]*, i64 }]*, i64 }, [0 x i64], %"core::option::Option<&[core::fmt::rt::v1::Argument]>", [0 x i64], { [0 x { i8*, i8* }]*, i64 }, [0 x i64] } | |
%"core::option::Option<&[core::fmt::rt::v1::Argument]>" = type { [0 x i64], {}*, [1 x i64] } | |
%"core::option::Option<alloc::string::String>" = type { [0 x i64], {}*, [2 x i64] } | |
%"core::fmt::rt::v1::Argument" = type { [0 x i64], %"core::fmt::rt::v1::Position", [0 x i64], %"core::fmt::rt::v1::FormatSpec", [0 x i64] } | |
%"core::fmt::rt::v1::Position" = type { [0 x i64], i64, [1 x i64] } | |
%"core::fmt::rt::v1::FormatSpec" = type { [0 x i64], %"core::fmt::rt::v1::Count", [0 x i64], %"core::fmt::rt::v1::Count", [0 x i32], i32, [0 x i32], i32, [0 x i8], i8, [7 x i8] } | |
%"core::fmt::rt::v1::Count" = type { [0 x i64], i64, [1 x i64] } | |
%"unwind::libunwind::_Unwind_Exception" = type { [0 x i64], i64, [0 x i64], void (i32, %"unwind::libunwind::_Unwind_Exception"*)*, [0 x i64], [6 x i64], [0 x i64] } | |
%"unwind::libunwind::_Unwind_Context" = type { [0 x i8] } | |
%"core::fmt::Formatter" = type { [0 x i64], %"core::option::Option<usize>", [0 x i64], %"core::option::Option<usize>", [0 x i64], { {}*, {}* }, [0 x i64], { i64*, i64* }, [0 x i64], { [0 x { i8*, i8* }]*, i64 }, [0 x i32], i32, [0 x i32], i32, [0 x i8], i8, [7 x i8] } | |
%"core::option::Option<usize>" = type { [0 x i64], i64, [1 x i64] } | |
@str.0 = internal constant [43 x i8] c"called `Option::unwrap()` on a `None` value" | |
@str.1 = internal constant [17 x i8] c"libcore/option.rs" | |
@ref.2 = private unnamed_addr constant { [0 x i8], { [0 x i8]*, i64 }, [0 x i8], { [0 x i8]*, i64 }, [0 x i8], i32, [0 x i8], i32, [0 x i8] } { [0 x i8] undef, { [0 x i8]*, i64 } { [0 x i8]* bitcast ([43 x i8]* @str.0 to [0 x i8]*), i64 43 }, [0 x i8] undef, { [0 x i8]*, i64 } { [0 x i8]* bitcast ([17 x i8]* @str.1 to [0 x i8]*), i64 17 }, [0 x i8] undef, i32 335, [0 x i8] undef, i32 21, [0 x i8] undef }, align 8 | |
@vtable.4 = private unnamed_addr constant { void (i8**)*, i64, i64, i32 (i8**)*, i32 (i8**)*, i32 (i8*)* } { void (i8**)* @_ZN4core3ptr13drop_in_place17h3bd07621d6b15e9aE, i64 8, i64 8, i32 (i8**)* @"_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h64ffb38e2fed3ec4E", i32 (i8**)* @"_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h64ffb38e2fed3ec4E", i32 (i8*)* @_ZN4core3ops8function6FnOnce9call_once17he8c51a13e1ce2e56E }, align 8 | |
@str.j = internal constant [28 x i8] c"assertion failed: mid <= len" | |
@str.k = internal constant [20 x i8] c"libcore/slice/mod.rs" | |
@ref.l = private unnamed_addr constant { [0 x i8], { [0 x i8]*, i64 }, [0 x i8], { [0 x i8]*, i64 }, [0 x i8], i32, [0 x i8], i32, [0 x i8] } { [0 x i8] undef, { [0 x i8]*, i64 } { [0 x i8]* bitcast ([28 x i8]* @str.j to [0 x i8]*), i64 28 }, [0 x i8] undef, { [0 x i8]*, i64 } { [0 x i8]* bitcast ([20 x i8]* @str.k to [0 x i8]*), i64 20 }, [0 x i8] undef, i32 457, [0 x i8] undef, i32 13, [0 x i8] undef }, align 8 | |
@_ZN4test6BODIES17h6b5b7f6a11be243fE = internal unnamed_addr constant { { [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], double, [0 x i8] }, { [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], double, [0 x i8] }, { [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], double, [0 x i8] }, { [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], double, [0 x i8] }, { [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], double, [0 x i8] } } { { [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], double, [0 x i8] } { [0 x i8] undef, { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] } { [0 x i8] undef, double 0.000000e+00, [0 x i8] undef, double 0.000000e+00, [0 x i8] undef, double 0.000000e+00, [0 x i8] undef }, [0 x i8] undef, { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] } { [0 x i8] undef, double 0.000000e+00, [0 x i8] undef, double 0.000000e+00, [0 x i8] undef, double 0.000000e+00, [0 x i8] undef }, [0 x i8] undef, double 0x4043BD3CC9BE45DE, [0 x i8] undef }, { [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], double, [0 x i8] } { [0 x i8] undef, { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] } { [0 x i8] undef, double 0x40135DA0343CD92C, [0 x i8] undef, double 0xBFF290ABC01FDB7C, [0 x i8] undef, double 0xBFBA86F96C25EBF0, [0 x i8] undef }, [0 x i8] undef, { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] } { [0 x i8] undef, double 0x3FE367069B93CCBC, [0 x i8] undef, double 0x40067EF2F57D949B, [0 x i8] undef, double 0xBF99D2D79A5A0715, [0 x i8] undef }, [0 x i8] undef, double 0x3FA34C95D9AB33D8, [0 x i8] undef }, { [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], double, [0 x i8] } { [0 x i8] undef, { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] } { [0 x i8] undef, double 0x4020AFCDC332CA67, [0 x i8] undef, double 0x40107FCB31DE01B0, [0 x i8] undef, double 0xBFD9D353E1EB467C, [0 x i8] undef }, [0 x i8] undef, { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] } { [0 x i8] undef, double 0xBFF02C21B8879442, [0 x i8] undef, double 0x3FFD35E9BF1F8F13, [0 x i8] undef, double 0x3F813C485F1123B4, [0 x i8] undef }, [0 x i8] undef, double 0x3F871D490D07C637, [0 x i8] undef }, { [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], double, [0 x i8] } { [0 x i8] undef, { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] } { [0 x i8] undef, double 0x4029C9EACEA7D9CF, [0 x i8] undef, double 0xC02E38E8D626667E, [0 x i8] undef, double 0xBFCC9557BE257DA0, [0 x i8] undef }, [0 x i8] undef, { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] } { [0 x i8] undef, double 0x3FF1531CA9911BEF, [0 x i8] undef, double 0x3FEBCC7F3E54BBC5, [0 x i8] undef, double 0xBF862F6BFAF23E7C, [0 x i8] undef }, [0 x i8] undef, double 0x3F5C3DD29CF41EB3, [0 x i8] undef }, { [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], double, [0 x i8] } { [0 x i8] undef, { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] } { [0 x i8] undef, double 0x402EC267A905572A, [0 x i8] undef, double 0xC039EB5833C8A220, [0 x i8] undef, double 0x3FC6F1F393ABE540, [0 x i8] undef }, [0 x i8] undef, { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] } { [0 x i8] undef, double 0x3FEF54B61659BC4A, [0 x i8] undef, double 0x3FE307C631C4FBA3, [0 x i8] undef, double 0xBFA1CB88587665F6, [0 x i8] undef }, [0 x i8] undef, double 0x3F60A8F3531799AC, [0 x i8] undef } }, align 8 | |
@str.q = internal constant [0 x i8] zeroinitializer | |
@str.r = internal constant [1 x i8] c"\0A" | |
@ref.s = private unnamed_addr constant [2 x { [0 x i8]*, i64 }] [{ [0 x i8]*, i64 } { [0 x i8]* @str.q, i64 0 }, { [0 x i8]*, i64 } { [0 x i8]* bitcast ([1 x i8]* @str.r to [0 x i8]*), i64 1 }], align 8 | |
@ref.t = private unnamed_addr constant { { [0 x i8], { i64, [0 x i8], i64, [0 x i8] }, [0 x i8], { [0 x i8], <{ i64, [8 x i8] }>, [0 x i8], <{ i64, [8 x i8] }>, [0 x i8], i32, [0 x i8], i32, [0 x i8], i8, [7 x i8] }, [0 x i8] } } { { [0 x i8], { i64, [0 x i8], i64, [0 x i8] }, [0 x i8], { [0 x i8], <{ i64, [8 x i8] }>, [0 x i8], <{ i64, [8 x i8] }>, [0 x i8], i32, [0 x i8], i32, [0 x i8], i8, [7 x i8] }, [0 x i8] } { [0 x i8] undef, { i64, [0 x i8], i64, [0 x i8] } { i64 1, [0 x i8] undef, i64 0, [0 x i8] undef }, [0 x i8] undef, { [0 x i8], <{ i64, [8 x i8] }>, [0 x i8], <{ i64, [8 x i8] }>, [0 x i8], i32, [0 x i8], i32, [0 x i8], i8, [7 x i8] } { [0 x i8] undef, <{ i64, [8 x i8] }> <{ i64 3, [8 x i8] undef }>, [0 x i8] undef, <{ i64, [8 x i8] }> <{ i64 3, [8 x i8] undef }>, [0 x i8] undef, i32 32, [0 x i8] undef, i32 0, [0 x i8] undef, i8 3, [7 x i8] undef }, [0 x i8] undef } }, align 8 | |
@ref.v = private unnamed_addr constant { { [0 x i8], { i64, [0 x i8], i64, [0 x i8] }, [0 x i8], { [0 x i8], { i64, [0 x i8], i64, [0 x i8] }, [0 x i8], <{ i64, [8 x i8] }>, [0 x i8], i32, [0 x i8], i32, [0 x i8], i8, [7 x i8] }, [0 x i8] } } { { [0 x i8], { i64, [0 x i8], i64, [0 x i8] }, [0 x i8], { [0 x i8], { i64, [0 x i8], i64, [0 x i8] }, [0 x i8], <{ i64, [8 x i8] }>, [0 x i8], i32, [0 x i8], i32, [0 x i8], i8, [7 x i8] }, [0 x i8] } { [0 x i8] undef, { i64, [0 x i8], i64, [0 x i8] } { i64 1, [0 x i8] undef, i64 0, [0 x i8] undef }, [0 x i8] undef, { [0 x i8], { i64, [0 x i8], i64, [0 x i8] }, [0 x i8], <{ i64, [8 x i8] }>, [0 x i8], i32, [0 x i8], i32, [0 x i8], i8, [7 x i8] } { [0 x i8] undef, { i64, [0 x i8], i64, [0 x i8] } { i64 0, [0 x i8] undef, i64 9, [0 x i8] undef }, [0 x i8] undef, <{ i64, [8 x i8] }> <{ i64 3, [8 x i8] undef }>, [0 x i8] undef, i32 32, [0 x i8] undef, i32 0, [0 x i8] undef, i8 3, [7 x i8] undef }, [0 x i8] undef } }, align 8 | |
@ref_mut.x = private unnamed_addr global [0 x %Planet] zeroinitializer, align 8 | |
; Function Attrs: cold uwtable | |
define hidden i64 @_ZN3std2rt10lang_start17h7057daff8a3d666bE(void ()* nonnull, i64, i8**) unnamed_addr #0 !prof !28 { | |
%4 = alloca i8*, align 8 | |
%5 = bitcast i8** %4 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %5) | |
%6 = bitcast i8** %4 to void ()** | |
store void ()* %0, void ()** %6, align 8 | |
%7 = bitcast i8** %4 to {}* | |
%8 = call i64 @_ZN3std2rt19lang_start_internal17he461b456319e29d6E({}* nonnull %7, {}* noalias nonnull readonly bitcast ({ void (i8**)*, i64, i64, i32 (i8**)*, i32 (i8**)*, i32 (i8*)* }* @vtable.4 to {}*), i64 %1, i8** %2) | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %5) | |
ret i64 %8 | |
} | |
; Function Attrs: cold uwtable | |
define internal i32 @"_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h64ffb38e2fed3ec4E"(i8** noalias nocapture readonly dereferenceable(8)) unnamed_addr #0 !prof !29 !PGOFuncName !30 { | |
%2 = bitcast i8** %0 to void ()** | |
%3 = load void ()*, void ()** %2, align 8, !nonnull !31 | |
tail call void %3(), !prof !32 | |
%4 = tail call i32 @"_ZN58_$LT$$LP$$RP$$u20$as$u20$std..termination..Termination$GT$6report17h5ef51a1159d52e9eE"() | |
ret i32 %4 | |
} | |
; Function Attrs: cold uwtable | |
define internal i32 @_ZN4core3ops8function6FnOnce9call_once17he8c51a13e1ce2e56E(i8* nocapture nonnull) unnamed_addr #0 personality i32 (i32, i32, i64, %"unwind::libunwind::_Unwind_Exception"*, %"unwind::libunwind::_Unwind_Context"*)* @rust_eh_personality !prof !28 !PGOFuncName !33 { | |
%2 = bitcast i8* %0 to void ()* | |
tail call void %2(), !noalias !34 | |
%3 = tail call i32 @"_ZN58_$LT$$LP$$RP$$u20$as$u20$std..termination..Termination$GT$6report17h5ef51a1159d52e9eE"(), !noalias !34 | |
ret i32 %3 | |
} | |
; Function Attrs: cold norecurse nounwind readnone uwtable | |
define internal void @_ZN4core3ptr13drop_in_place17h3bd07621d6b15e9aE(i8** nocapture) unnamed_addr #1 !prof !28 !PGOFuncName !37 { | |
ret void | |
} | |
; Function Attrs: cold nounwind uwtable | |
define internal fastcc void @_ZN4core3ptr13drop_in_place17h5ad1bad050c6ee33E(%"std::env::ArgsOs"* nocapture) unnamed_addr #2 personality i32 (i32, i32, i64, %"unwind::libunwind::_Unwind_Exception"*, %"unwind::libunwind::_Unwind_Context"*)* @rust_eh_personality !prof !29 !PGOFuncName !38 { | |
%2 = getelementptr inbounds %"std::env::ArgsOs", %"std::env::ArgsOs"* %0, i64 0, i32 1, i32 3, i32 7 | |
%3 = load %"std::ffi::os_str::OsString"*, %"std::ffi::os_str::OsString"** %2, align 8, !noalias !39 | |
%4 = getelementptr inbounds %"std::env::ArgsOs", %"std::env::ArgsOs"* %0, i64 0, i32 1, i32 3, i32 9 | |
%5 = load %"std::ffi::os_str::OsString"*, %"std::ffi::os_str::OsString"** %4, align 8, !noalias !39 | |
%6 = icmp eq %"std::ffi::os_str::OsString"* %3, %5 | |
br i1 %6, label %20, label %7, !prof !44 | |
; <label>:7: ; preds = %1 | |
br label %8 | |
; <label>:8: ; preds = %31, %7 | |
%9 = phi %"std::ffi::os_str::OsString"* [ %32, %31 ], [ %5, %7 ] | |
%10 = phi %"std::ffi::os_str::OsString"* [ %33, %31 ], [ %3, %7 ] | |
%11 = getelementptr inbounds %"std::ffi::os_str::OsString", %"std::ffi::os_str::OsString"* %10, i64 1 | |
store %"std::ffi::os_str::OsString"* %11, %"std::ffi::os_str::OsString"** %2, align 8, !noalias !39 | |
%12 = bitcast %"std::ffi::os_str::OsString"* %10 to {}** | |
%13 = load {}*, {}** %12, align 8 | |
%14 = bitcast {}* %13 to i8* | |
%15 = getelementptr inbounds %"std::ffi::os_str::OsString", %"std::ffi::os_str::OsString"* %10, i64 0, i32 1, i32 1, i32 1, i32 1 | |
%16 = load i64, i64* %15, align 8 | |
%17 = icmp eq {}* %13, null | |
br i1 %17, label %20, label %18, !prof !45 | |
; <label>:18: ; preds = %8 | |
%19 = icmp eq i64 %16, 0 | |
br i1 %19, label %31, label %28 | |
; <label>:20: ; preds = %31, %8, %1 | |
%21 = getelementptr inbounds %"std::env::ArgsOs", %"std::env::ArgsOs"* %0, i64 0, i32 1, i32 3, i32 5 | |
%22 = load i64, i64* %21, align 8 | |
%23 = icmp eq i64 %22, 0 | |
br i1 %23, label %35, label %24, !prof !46 | |
; <label>:24: ; preds = %20 | |
%25 = bitcast %"std::env::ArgsOs"* %0 to i8** | |
%26 = load i8*, i8** %25, align 8, !nonnull !31 | |
%27 = mul i64 %22, 24 | |
tail call void @__rust_dealloc(i8* nonnull %26, i64 %27, i64 8) | |
br label %35 | |
; <label>:28: ; preds = %18 | |
tail call void @__rust_dealloc(i8* nonnull %14, i64 %16, i64 1) | |
%29 = load %"std::ffi::os_str::OsString"*, %"std::ffi::os_str::OsString"** %2, align 8, !noalias !39 | |
%30 = load %"std::ffi::os_str::OsString"*, %"std::ffi::os_str::OsString"** %4, align 8, !noalias !39 | |
br label %31 | |
; <label>:31: ; preds = %28, %18 | |
%32 = phi %"std::ffi::os_str::OsString"* [ %30, %28 ], [ %9, %18 ] | |
%33 = phi %"std::ffi::os_str::OsString"* [ %29, %28 ], [ %11, %18 ] | |
%34 = icmp eq %"std::ffi::os_str::OsString"* %33, %32 | |
br i1 %34, label %20, label %8, !prof !44 | |
; <label>:35: ; preds = %24, %20 | |
ret void | |
} | |
; Function Attrs: cold nounwind uwtable | |
define internal fastcc void @_ZN4core3ptr13drop_in_place17hce82c5074859547eE(%"alloc::string::String"* nocapture readonly) unnamed_addr #2 personality i32 (i32, i32, i64, %"unwind::libunwind::_Unwind_Exception"*, %"unwind::libunwind::_Unwind_Context"*)* @rust_eh_personality !prof !28 !PGOFuncName !47 { | |
%2 = getelementptr inbounds %"alloc::string::String", %"alloc::string::String"* %0, i64 0, i32 1, i32 1, i32 1 | |
%3 = load i64, i64* %2, align 8, !alias.scope !48, !noalias !51 | |
%4 = icmp eq i64 %3, 0 | |
br i1 %4, label %8, label %5 | |
; <label>:5: ; preds = %1 | |
%6 = bitcast %"alloc::string::String"* %0 to i8** | |
%7 = load i8*, i8** %6, align 8, !alias.scope !53, !nonnull !31 | |
tail call void @__rust_dealloc(i8* nonnull %7, i64 %3, i64 1) | |
br label %8 | |
; <label>:8: ; preds = %5, %1 | |
ret void | |
} | |
; Function Attrs: cold nounwind uwtable | |
define internal fastcc double @_ZN4test6energy17h6acdc4d37a6ab310E([5 x %Planet]* noalias readonly dereferenceable(280)) unnamed_addr #2 personality i32 (i32, i32, i64, %"unwind::libunwind::_Unwind_Exception"*, %"unwind::libunwind::_Unwind_Context"*)* @rust_eh_personality !prof !56 !PGOFuncName !57 { | |
%2 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 0 | |
%3 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 5, i32 0, i64 0 | |
%4 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %0, i64 0, i64 0, i32 0, i64 7 | |
br label %7 | |
; <label>:5: ; preds = %133, %35 | |
%6 = phi double [ %38, %35 ], [ %137, %133 ] | |
ret double %6 | |
; <label>:7: ; preds = %133, %1 | |
%8 = phi i64* [ %4, %1 ], [ %139, %133 ] | |
%9 = phi double [ 0.000000e+00, %1 ], [ %137, %133 ] | |
%10 = phi i64* [ %2, %1 ], [ %8, %133 ] | |
%11 = getelementptr inbounds i64, i64* %10, i64 3 | |
%12 = bitcast i64* %11 to double* | |
%13 = load double, double* %12, align 8, !alias.scope !58 | |
%14 = fmul double %13, %13 | |
%15 = getelementptr inbounds i64, i64* %10, i64 4 | |
%16 = bitcast i64* %15 to double* | |
%17 = load double, double* %16, align 8, !alias.scope !58 | |
%18 = fmul double %17, %17 | |
%19 = fadd double %14, %18 | |
%20 = getelementptr inbounds i64, i64* %10, i64 5 | |
%21 = bitcast i64* %20 to double* | |
%22 = load double, double* %21, align 8, !alias.scope !58 | |
%23 = fmul double %22, %22 | |
%24 = fadd double %19, %23 | |
%25 = icmp ne i64* %10, null | |
tail call void @llvm.assume(i1 %25) | |
%26 = getelementptr inbounds i64, i64* %10, i64 6 | |
%27 = bitcast i64* %26 to double* | |
%28 = load double, double* %27, align 8 | |
%29 = fmul double %24, %28 | |
%30 = fmul double %29, 5.000000e-01 | |
%31 = icmp ne i64* %8, null | |
tail call void @llvm.assume(i1 %31), !noalias !61 | |
%32 = icmp eq i64* %8, %3 | |
%33 = icmp eq i64* %8, null | |
%34 = or i1 %32, %33 | |
br i1 %34, label %35, label %39, !prof !66 | |
; <label>:35: ; preds = %7 | |
%36 = fmul double %28, 0.000000e+00 | |
%37 = fsub double %30, %36 | |
%38 = fadd double %9, %37 | |
br label %5 | |
; <label>:39: ; preds = %7 | |
%40 = bitcast i64* %10 to double* | |
%41 = load double, double* %40, align 8, !noalias !67 | |
%42 = getelementptr inbounds i64, i64* %10, i64 1 | |
%43 = bitcast i64* %42 to double* | |
%44 = load double, double* %43, align 8, !noalias !67 | |
%45 = getelementptr inbounds i64, i64* %10, i64 2 | |
%46 = bitcast i64* %45 to double* | |
%47 = load double, double* %46, align 8, !noalias !67 | |
%48 = insertelement <2 x double> undef, double %41, i32 0 | |
%49 = insertelement <2 x double> %48, double %47, i32 1 | |
%50 = getelementptr inbounds i64, i64* %8, i64 7 | |
%51 = getelementptr inbounds i64, i64* %8, i64 6 | |
%52 = bitcast i64* %51 to double* | |
%53 = load double, double* %52, align 8, !alias.scope !72, !noalias !61 | |
%54 = bitcast i64* %8 to double* | |
%55 = load double, double* %54, align 8, !alias.scope !72, !noalias !61 | |
%56 = getelementptr inbounds i64, i64* %8, i64 1 | |
%57 = bitcast i64* %56 to double* | |
%58 = load double, double* %57, align 8, !alias.scope !72, !noalias !61 | |
%59 = getelementptr inbounds i64, i64* %8, i64 2 | |
%60 = bitcast i64* %59 to double* | |
%61 = load double, double* %60, align 8, !alias.scope !72, !noalias !61 | |
%62 = fsub double %44, %58 | |
%63 = insertelement <2 x double> undef, double %55, i32 0 | |
%64 = insertelement <2 x double> %63, double %61, i32 1 | |
%65 = fsub <2 x double> %49, %64 | |
%66 = fmul double %62, %62 | |
%67 = fmul <2 x double> %65, %65 | |
%68 = extractelement <2 x double> %67, i32 0 | |
%69 = fadd double %68, %66 | |
%70 = extractelement <2 x double> %67, i32 1 | |
%71 = fadd double %69, %70 | |
%72 = tail call double @llvm.sqrt.f64(double %71) | |
%73 = fdiv double %53, %72 | |
%74 = fadd double %73, 0.000000e+00 | |
%75 = icmp eq i64* %50, %3 | |
br i1 %75, label %133, label %76, !prof !73 | |
; <label>:76: ; preds = %39 | |
%77 = getelementptr inbounds i64, i64* %8, i64 14 | |
%78 = getelementptr inbounds i64, i64* %8, i64 13 | |
%79 = bitcast i64* %78 to double* | |
%80 = load double, double* %79, align 8, !alias.scope !72, !noalias !61 | |
%81 = bitcast i64* %50 to double* | |
%82 = load double, double* %81, align 8, !alias.scope !72, !noalias !61 | |
%83 = getelementptr inbounds i64, i64* %8, i64 8 | |
%84 = bitcast i64* %83 to double* | |
%85 = load double, double* %84, align 8, !alias.scope !72, !noalias !61 | |
%86 = getelementptr inbounds i64, i64* %8, i64 9 | |
%87 = bitcast i64* %86 to double* | |
%88 = load double, double* %87, align 8, !alias.scope !72, !noalias !61 | |
%89 = fsub double %44, %85 | |
%90 = insertelement <2 x double> undef, double %82, i32 0 | |
%91 = insertelement <2 x double> %90, double %88, i32 1 | |
%92 = fsub <2 x double> %49, %91 | |
%93 = fmul double %89, %89 | |
%94 = fmul <2 x double> %92, %92 | |
%95 = extractelement <2 x double> %94, i32 0 | |
%96 = fadd double %95, %93 | |
%97 = extractelement <2 x double> %94, i32 1 | |
%98 = fadd double %96, %97 | |
%99 = tail call double @llvm.sqrt.f64(double %98) | |
%100 = fdiv double %80, %99 | |
%101 = fadd double %74, %100 | |
%102 = icmp eq i64* %77, %3 | |
br i1 %102, label %133, label %103, !prof !74 | |
; <label>:103: ; preds = %76 | |
br label %104 | |
; <label>:104: ; preds = %104, %103 | |
%105 = phi double [ %101, %103 ], [ %131, %104 ] | |
%106 = phi i64* [ %77, %103 ], [ %107, %104 ] | |
%107 = getelementptr inbounds i64, i64* %106, i64 7 | |
%108 = getelementptr inbounds i64, i64* %106, i64 6 | |
%109 = bitcast i64* %108 to double* | |
%110 = load double, double* %109, align 8, !alias.scope !72, !noalias !61 | |
%111 = bitcast i64* %106 to double* | |
%112 = load double, double* %111, align 8, !alias.scope !72, !noalias !61 | |
%113 = getelementptr inbounds i64, i64* %106, i64 1 | |
%114 = bitcast i64* %113 to double* | |
%115 = load double, double* %114, align 8, !alias.scope !72, !noalias !61 | |
%116 = getelementptr inbounds i64, i64* %106, i64 2 | |
%117 = bitcast i64* %116 to double* | |
%118 = load double, double* %117, align 8, !alias.scope !72, !noalias !61 | |
%119 = fsub double %44, %115 | |
%120 = insertelement <2 x double> undef, double %112, i32 0 | |
%121 = insertelement <2 x double> %120, double %118, i32 1 | |
%122 = fsub <2 x double> %49, %121 | |
%123 = fmul double %119, %119 | |
%124 = fmul <2 x double> %122, %122 | |
%125 = extractelement <2 x double> %124, i32 0 | |
%126 = fadd double %125, %123 | |
%127 = extractelement <2 x double> %124, i32 1 | |
%128 = fadd double %126, %127 | |
%129 = tail call double @llvm.sqrt.f64(double %128) | |
%130 = fdiv double %110, %129 | |
%131 = fadd double %105, %130 | |
%132 = icmp eq i64* %107, %3 | |
br i1 %132, label %133, label %104, !prof !75, !llvm.loop !76 | |
; <label>:133: ; preds = %104, %76, %39 | |
%134 = phi double [ %74, %39 ], [ %101, %76 ], [ %131, %104 ] | |
%135 = fmul double %28, %134 | |
%136 = fsub double %30, %135 | |
%137 = fadd double %9, %136 | |
%138 = getelementptr inbounds i64, i64* %8, i64 7 | |
%139 = select i1 %32, i64* %8, i64* %138, !prof !78 | |
br i1 %34, label %5, label %7, !prof !79 | |
} | |
; Function Attrs: uwtable | |
define internal void @_ZN4test4main17h6f2dd3dc2bc8dfe6E() unnamed_addr #3 personality i32 (i32, i32, i64, %"unwind::libunwind::_Unwind_Exception"*, %"unwind::libunwind::_Unwind_Context"*)* @rust_eh_personality !prof !29 !PGOFuncName !80 { | |
%1 = alloca %"core::ptr::swap_nonoverlapping_bytes::UnalignedBlock", align 8 | |
%2 = alloca { [0 x %Planet]*, i64 }, align 8 | |
%3 = alloca { [0 x %Planet]*, i64 }, align 8 | |
%4 = alloca { [0 x i64], %"alloc::string::String", [0 x i64] }, align 8 | |
%5 = alloca %"alloc::vec::Vec<u8>", align 8 | |
%6 = alloca %"std::ffi::os_str::OsString", align 8 | |
%7 = alloca %"core::result::Result<alloc::string::String, std::ffi::os_str::OsString>", align 8 | |
%8 = alloca %"core::option::Option<std::ffi::os_str::OsString>", align 8 | |
%9 = alloca double, align 8 | |
%10 = alloca [1 x { i8*, i8* }], align 8 | |
%11 = alloca %"core::fmt::Arguments", align 8 | |
%12 = alloca { i32, i32 }, align 4 | |
%13 = alloca double, align 8 | |
%14 = alloca [1 x { i8*, i8* }], align 8 | |
%15 = alloca %"core::fmt::Arguments", align 8 | |
%16 = alloca [10 x double], align 16 | |
%17 = bitcast [10 x double]* %16 to i8* | |
%18 = alloca [10 x %Vec3], align 8 | |
%19 = bitcast [10 x %Vec3]* %18 to i8* | |
%20 = alloca [5 x %Planet], align 16 | |
%21 = alloca [1 x { i8*, i8* }], align 8 | |
%22 = alloca %"core::fmt::Arguments", align 8 | |
%23 = alloca %"std::env::ArgsOs", align 8 | |
%24 = alloca %"core::option::Option<std::ffi::os_str::OsString>", align 8 | |
%25 = alloca %"core::option::Option<alloc::string::String>", align 8 | |
%26 = alloca i32, align 4 | |
%27 = bitcast i32* %26 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %27) | |
%28 = bitcast %"core::option::Option<alloc::string::String>"* %25 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %28) | |
%29 = bitcast %"core::option::Option<std::ffi::os_str::OsString>"* %24 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %29) | |
%30 = bitcast %"std::env::ArgsOs"* %23 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %30) | |
call void @_ZN3std3env7args_os17h0e97fc174faccbd6E(%"std::env::ArgsOs"* noalias nocapture nonnull sret dereferenceable(32) %23) | |
%31 = bitcast %"core::option::Option<std::ffi::os_str::OsString>"* %8 to i8* | |
%32 = bitcast %"core::option::Option<std::ffi::os_str::OsString>"* %8 to {}** | |
%33 = getelementptr inbounds %"core::option::Option<std::ffi::os_str::OsString>", %"core::option::Option<std::ffi::os_str::OsString>"* %8, i64 0, i32 2, i64 0 | |
%34 = bitcast i64* %33 to <2 x i64>* | |
br label %35 | |
; <label>:35: ; preds = %48, %0 | |
%36 = phi i64 [ 1, %0 ], [ %49, %48 ] | |
call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %31), !noalias !81 | |
invoke void @"_ZN67_$LT$std..env..ArgsOs$u20$as$u20$core..iter..iterator..Iterator$GT$4next17h2da8ead691074258E"(%"core::option::Option<std::ffi::os_str::OsString>"* noalias nocapture nonnull sret dereferenceable(24) %8, %"std::env::ArgsOs"* nonnull dereferenceable(32) %23) | |
to label %37 unwind label %450 | |
; <label>:37: ; preds = %35 | |
%38 = load {}*, {}** %32, align 8, !noalias !81 | |
%39 = icmp eq {}* %38, null | |
%40 = bitcast {}* %38 to i8* | |
br i1 %39, label %50, label %41, !prof !84 | |
; <label>:41: ; preds = %37 | |
%42 = load <2 x i64>, <2 x i64>* %34, align 8 | |
call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %31), !noalias !81 | |
%43 = icmp eq i64 %36, 0 | |
br i1 %43, label %52, label %44, !prof !85 | |
; <label>:44: ; preds = %41 | |
%45 = extractelement <2 x i64> %42, i32 0 | |
%46 = icmp eq i64 %45, 0 | |
br i1 %46, label %48, label %47, !prof !46 | |
; <label>:47: ; preds = %44 | |
call void @__rust_dealloc(i8* nonnull %40, i64 %45, i64 1), !noalias !81 | |
br label %48 | |
; <label>:48: ; preds = %47, %44 | |
%49 = add nsw i64 %36, -1 | |
br label %35 | |
; <label>:50: ; preds = %37 | |
call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %31), !noalias !81 | |
%51 = bitcast %"core::option::Option<alloc::string::String>"* %25 to {}** | |
store {}* null, {}** %51, align 8, !alias.scope !86, !noalias !89 | |
call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %29) | |
br label %81 | |
; <label>:52: ; preds = %41 | |
%53 = bitcast %"core::option::Option<std::ffi::os_str::OsString>"* %24 to {}** | |
store {}* %38, {}** %53, align 8, !alias.scope !81 | |
%54 = getelementptr inbounds %"core::option::Option<std::ffi::os_str::OsString>", %"core::option::Option<std::ffi::os_str::OsString>"* %24, i64 0, i32 2, i64 0 | |
%55 = bitcast i64* %54 to <2 x i64>* | |
store <2 x i64> %42, <2 x i64>* %55, align 8, !alias.scope !81 | |
%56 = bitcast %"core::result::Result<alloc::string::String, std::ffi::os_str::OsString>"* %7 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %56), !noalias !91 | |
%57 = bitcast %"std::ffi::os_str::OsString"* %6 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %57), !noalias !91 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull %57, i8* nonnull %29, i64 24, i32 8, i1 false) | |
invoke void @_ZN3std3ffi6os_str8OsString11into_string17h567757e2e42e16abE(%"core::result::Result<alloc::string::String, std::ffi::os_str::OsString>"* noalias nocapture nonnull sret dereferenceable(32) %7, %"std::ffi::os_str::OsString"* noalias nocapture nonnull dereferenceable(24) %6) | |
to label %58 unwind label %78, !noalias !86 | |
; <label>:58: ; preds = %52 | |
call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %57), !noalias !91 | |
%59 = getelementptr inbounds %"core::result::Result<alloc::string::String, std::ffi::os_str::OsString>", %"core::result::Result<alloc::string::String, std::ffi::os_str::OsString>"* %7, i64 0, i32 0, i64 0 | |
%60 = load i64, i64* %59, align 8, !range !95, !alias.scope !96, !noalias !99 | |
%61 = icmp eq i64 %60, 1 | |
br i1 %61, label %69, label %62, !prof !46 | |
; <label>:62: ; preds = %58 | |
%63 = getelementptr inbounds %"core::result::Result<alloc::string::String, std::ffi::os_str::OsString>", %"core::result::Result<alloc::string::String, std::ffi::os_str::OsString>"* %7, i64 0, i32 2 | |
%64 = bitcast [3 x i64]* %63 to i8* | |
%65 = bitcast %"core::option::Option<alloc::string::String>"* %25 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull %65, i8* nonnull %64, i64 24, i32 8, i1 false) | |
%66 = bitcast %"core::option::Option<alloc::string::String>"* %25 to {}** | |
%67 = load {}*, {}** %66, align 8, !alias.scope !101 | |
%68 = icmp eq {}* %67, null | |
call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %56), !noalias !91 | |
call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %29) | |
br i1 %68, label %81, label %83, !prof !79 | |
; <label>:69: ; preds = %58 | |
%70 = bitcast %"core::option::Option<alloc::string::String>"* %25 to {}** | |
store {}* null, {}** %70, align 8, !alias.scope !104, !noalias !105 | |
%71 = getelementptr inbounds %"core::result::Result<alloc::string::String, std::ffi::os_str::OsString>", %"core::result::Result<alloc::string::String, std::ffi::os_str::OsString>"* %7, i64 0, i32 2, i64 1 | |
%72 = load i64, i64* %71, align 8, !alias.scope !106, !noalias !109 | |
%73 = icmp eq i64 %72, 0 | |
br i1 %73, label %80, label %74 | |
; <label>:74: ; preds = %69 | |
%75 = getelementptr inbounds %"core::result::Result<alloc::string::String, std::ffi::os_str::OsString>", %"core::result::Result<alloc::string::String, std::ffi::os_str::OsString>"* %7, i64 0, i32 2 | |
%76 = bitcast [3 x i64]* %75 to i8** | |
%77 = load i8*, i8** %76, align 8, !alias.scope !111, !noalias !99, !nonnull !31 | |
call void @__rust_dealloc(i8* nonnull %77, i64 %72, i64 1), !noalias !114 | |
call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %56), !noalias !91 | |
call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %29) | |
br label %81 | |
; <label>:78: ; preds = %52 | |
%79 = landingpad { i8*, i32 } | |
cleanup | |
br label %452 | |
; <label>:80: ; preds = %69 | |
call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %56), !noalias !91 | |
call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %29) | |
br label %81 | |
; <label>:81: ; preds = %80, %74, %62, %50 | |
%82 = bitcast %"alloc::vec::Vec<u8>"* %5 to i8* | |
br label %105 | |
; <label>:83: ; preds = %62 | |
%84 = bitcast %"alloc::vec::Vec<u8>"* %5 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %84) | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull %84, i8* nonnull %28, i64 24, i32 8, i1 false) | |
%85 = bitcast { [0 x i64], %"alloc::string::String", [0 x i64] }* %4 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 24, i8* nonnull %85), !noalias !101 | |
%86 = bitcast { [0 x i64], %"alloc::string::String", [0 x i64] }* %4 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull %86, i8* nonnull %28, i64 24, i32 8, i1 false) | |
%87 = bitcast { [0 x i64], %"alloc::string::String", [0 x i64] }* %4 to [0 x i8]** | |
%88 = load [0 x i8]*, [0 x i8]** %87, align 8, !alias.scope !115, !noalias !101, !nonnull !31 | |
%89 = getelementptr inbounds { [0 x i64], %"alloc::string::String", [0 x i64] }, { [0 x i64], %"alloc::string::String", [0 x i64] }* %4, i64 0, i32 1, i32 1, i32 3 | |
%90 = load i64, i64* %89, align 8, !alias.scope !124, !noalias !101 | |
%91 = getelementptr inbounds [0 x i8], [0 x i8]* %88, i64 0, i64 0 | |
%92 = invoke i64 @"_ZN4core3num52_$LT$impl$u20$core..str..FromStr$u20$for$u20$i32$GT$8from_str17h99b48ffb87a27724E"([0 x i8]* noalias nonnull readonly %88, i64 %90) | |
to label %93 unwind label %102 | |
; <label>:93: ; preds = %83 | |
%94 = and i64 %92, 1 | |
%95 = xor i64 %94, 1 | |
%96 = getelementptr inbounds { [0 x i64], %"alloc::string::String", [0 x i64] }, { [0 x i64], %"alloc::string::String", [0 x i64] }* %4, i64 0, i32 1, i32 1, i32 1, i32 1 | |
%97 = load i64, i64* %96, align 8, !alias.scope !125, !noalias !128 | |
%98 = icmp eq i64 %97, 0 | |
br i1 %98, label %100, label %99, !prof !46 | |
; <label>:99: ; preds = %93 | |
call void @__rust_dealloc(i8* nonnull %91, i64 %97, i64 1) | |
br label %100 | |
; <label>:100: ; preds = %99, %93 | |
%101 = and i64 %92, -4294967296 | |
call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %85), !noalias !101 | |
br label %105 | |
; <label>:102: ; preds = %83 | |
%103 = landingpad { i8*, i32 } | |
cleanup | |
%104 = bitcast { [0 x i64], %"alloc::string::String", [0 x i64] }* %4 to %"alloc::string::String"* | |
call fastcc void @_ZN4core3ptr13drop_in_place17hce82c5074859547eE(%"alloc::string::String"* nonnull %104) #9 | |
br label %452 | |
; <label>:105: ; preds = %100, %81 | |
%106 = phi i8* [ %82, %81 ], [ %84, %100 ] | |
%107 = phi i64 [ 0, %81 ], [ %101, %100 ] | |
%108 = phi i64 [ 0, %81 ], [ %95, %100 ] | |
call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %106) | |
%109 = or i64 %108, %107 | |
call void @llvm.lifetime.end.p0i8(i64 24, i8* nonnull %28) | |
%110 = and i64 %108, 4294967295 | |
%111 = icmp eq i64 %110, 0 | |
%112 = lshr i64 %109, 32 | |
%113 = trunc i64 %112 to i32 | |
%114 = select i1 %111, i32 1000, i32 %113, !prof !46 | |
store i32 %114, i32* %26, align 4 | |
call fastcc void @_ZN4core3ptr13drop_in_place17h5ad1bad050c6ee33E(%"std::env::ArgsOs"* nonnull %23) | |
call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %30) | |
%115 = bitcast %"core::fmt::Arguments"* %22 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 48, i8* nonnull %115) | |
%116 = bitcast [1 x { i8*, i8* }]* %21 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %116) | |
%117 = bitcast [1 x { i8*, i8* }]* %21 to i32** | |
store i32* %26, i32** %117, align 8 | |
%118 = getelementptr inbounds [1 x { i8*, i8* }], [1 x { i8*, i8* }]* %21, i64 0, i64 0, i32 1 | |
store i8* bitcast (i1 (i32*, %"core::fmt::Formatter"*)* @"_ZN4core3fmt3num52_$LT$impl$u20$core..fmt..Display$u20$for$u20$i32$GT$3fmt17h8208a598556d09a5E" to i8*), i8** %118, align 8 | |
%119 = bitcast %"core::fmt::Arguments"* %22 to [0 x { [0 x i8]*, i64 }]** | |
store [0 x { [0 x i8]*, i64 }]* bitcast ([2 x { [0 x i8]*, i64 }]* @ref.s to [0 x { [0 x i8]*, i64 }]*), [0 x { [0 x i8]*, i64 }]** %119, align 8, !alias.scope !130, !noalias !133 | |
%120 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %22, i64 0, i32 1, i32 1 | |
store i64 2, i64* %120, align 8, !alias.scope !130, !noalias !133 | |
%121 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %22, i64 0, i32 3 | |
%122 = bitcast %"core::option::Option<&[core::fmt::rt::v1::Argument]>"* %121 to [0 x %"core::fmt::rt::v1::Argument"]** | |
store [0 x %"core::fmt::rt::v1::Argument"]* bitcast ({ { [0 x i8], { i64, [0 x i8], i64, [0 x i8] }, [0 x i8], { [0 x i8], <{ i64, [8 x i8] }>, [0 x i8], <{ i64, [8 x i8] }>, [0 x i8], i32, [0 x i8], i32, [0 x i8], i8, [7 x i8] }, [0 x i8] } }* @ref.t to [0 x %"core::fmt::rt::v1::Argument"]*), [0 x %"core::fmt::rt::v1::Argument"]** %122, align 8, !alias.scope !130, !noalias !133 | |
%123 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %22, i64 0, i32 3, i32 2, i64 0 | |
store i64 1, i64* %123, align 8, !alias.scope !130, !noalias !133 | |
%124 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %22, i64 0, i32 5, i32 0 | |
%125 = bitcast [0 x { i8*, i8* }]** %124 to [1 x { i8*, i8* }]** | |
store [1 x { i8*, i8* }]* %21, [1 x { i8*, i8* }]** %125, align 8, !alias.scope !130, !noalias !133 | |
%126 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %22, i64 0, i32 5, i32 1 | |
store i64 1, i64* %126, align 8, !alias.scope !130, !noalias !133 | |
call void @_ZN3std2io5stdio6_print17hf909a9417e8e3c23E(%"core::fmt::Arguments"* noalias nocapture nonnull dereferenceable(48) %22) | |
call void @llvm.lifetime.end.p0i8(i64 48, i8* nonnull %115) | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %116) | |
%127 = bitcast [5 x %Planet]* %20 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 280, i8* nonnull %127) | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull %127, i8* bitcast (double* getelementptr inbounds ({ { [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], double, [0 x i8] }, { [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], double, [0 x i8] }, { [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], double, [0 x i8] }, { [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], double, [0 x i8] }, { [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], double, [0 x i8] } }, { { [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], double, [0 x i8] }, { [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], double, [0 x i8] }, { [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], double, [0 x i8] }, { [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], double, [0 x i8] }, { [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], { [0 x i8], double, [0 x i8], double, [0 x i8], double, [0 x i8] }, [0 x i8], double, [0 x i8] } }* @_ZN4test6BODIES17h6b5b7f6a11be243fE, i64 0, i32 0, i32 1, i32 1) to i8*), i64 280, i32 8, i1 false) | |
call void @llvm.lifetime.start.p0i8(i64 240, i8* nonnull %19) | |
call void @llvm.memset.p0i8.i64(i8* nonnull %19, i8 0, i64 240, i32 8, i1 false) | |
call void @llvm.lifetime.start.p0i8(i64 80, i8* nonnull %17) | |
%128 = getelementptr inbounds [10 x double], [10 x double]* %16, i64 0, i64 10 | |
call void @llvm.memset.p0i8.i64(i8* nonnull %17, i8 0, i64 80, i32 16, i1 false) | |
%129 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %20, i64 0, i64 0, i32 0, i64 0 | |
%130 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %20, i64 0, i64 5, i32 0, i64 0 | |
%131 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %20, i64 0, i64 0, i32 0, i64 3 | |
%132 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %20, i64 0, i64 0, i32 0, i64 5 | |
%133 = bitcast i64* %132 to double* | |
%134 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %20, i64 0, i64 0, i32 0, i64 10 | |
%135 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %20, i64 0, i64 0, i32 0, i64 12 | |
%136 = bitcast i64* %135 to double* | |
%137 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %20, i64 0, i64 0, i32 0, i64 17 | |
%138 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %20, i64 0, i64 0, i32 0, i64 19 | |
%139 = bitcast i64* %138 to double* | |
%140 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %20, i64 0, i64 0, i32 0, i64 24 | |
%141 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %20, i64 0, i64 0, i32 0, i64 26 | |
%142 = bitcast i64* %141 to double* | |
%143 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %20, i64 0, i64 0, i32 0, i64 31 | |
%144 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %20, i64 0, i64 0, i32 0, i64 33 | |
%145 = bitcast i64* %144 to double* | |
%146 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %20, i64 0, i64 0, i32 3 | |
%147 = bitcast %Vec3* %146 to <2 x double>* | |
store <2 x double> <double 0xBF3967E9A7E0D6F3, double 0xBF6AD4ECFE5089FB>, <2 x double>* %147, align 8 | |
%148 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %20, i64 0, i64 0, i32 3, i32 5 | |
store double 0x3EF919331F0B8A71, double* %148, align 8 | |
%149 = bitcast %"core::fmt::Arguments"* %15 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 48, i8* nonnull %149) | |
%150 = bitcast [1 x { i8*, i8* }]* %14 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %150) | |
%151 = bitcast double* %13 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %151) | |
%152 = call fastcc double @_ZN4test6energy17h6acdc4d37a6ab310E([5 x %Planet]* noalias nonnull readonly dereferenceable(280) %20) | |
store double %152, double* %13, align 8 | |
%153 = bitcast [1 x { i8*, i8* }]* %14 to double** | |
store double* %13, double** %153, align 8 | |
%154 = getelementptr inbounds [1 x { i8*, i8* }], [1 x { i8*, i8* }]* %14, i64 0, i64 0, i32 1 | |
store i8* bitcast (i1 (double*, %"core::fmt::Formatter"*)* @"_ZN4core3fmt5float52_$LT$impl$u20$core..fmt..Display$u20$for$u20$f64$GT$3fmt17h9a2c74a963a03ea1E" to i8*), i8** %154, align 8 | |
%155 = bitcast %"core::fmt::Arguments"* %15 to [0 x { [0 x i8]*, i64 }]** | |
store [0 x { [0 x i8]*, i64 }]* bitcast ([2 x { [0 x i8]*, i64 }]* @ref.s to [0 x { [0 x i8]*, i64 }]*), [0 x { [0 x i8]*, i64 }]** %155, align 8, !alias.scope !137, !noalias !140 | |
%156 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %15, i64 0, i32 1, i32 1 | |
store i64 2, i64* %156, align 8, !alias.scope !137, !noalias !140 | |
%157 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %15, i64 0, i32 3 | |
%158 = bitcast %"core::option::Option<&[core::fmt::rt::v1::Argument]>"* %157 to [0 x %"core::fmt::rt::v1::Argument"]** | |
store [0 x %"core::fmt::rt::v1::Argument"]* bitcast ({ { [0 x i8], { i64, [0 x i8], i64, [0 x i8] }, [0 x i8], { [0 x i8], { i64, [0 x i8], i64, [0 x i8] }, [0 x i8], <{ i64, [8 x i8] }>, [0 x i8], i32, [0 x i8], i32, [0 x i8], i8, [7 x i8] }, [0 x i8] } }* @ref.v to [0 x %"core::fmt::rt::v1::Argument"]*), [0 x %"core::fmt::rt::v1::Argument"]** %158, align 8, !alias.scope !137, !noalias !140 | |
%159 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %15, i64 0, i32 3, i32 2, i64 0 | |
store i64 1, i64* %159, align 8, !alias.scope !137, !noalias !140 | |
%160 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %15, i64 0, i32 5, i32 0 | |
%161 = bitcast [0 x { i8*, i8* }]** %160 to [1 x { i8*, i8* }]** | |
store [1 x { i8*, i8* }]* %14, [1 x { i8*, i8* }]** %161, align 8, !alias.scope !137, !noalias !140 | |
%162 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %15, i64 0, i32 5, i32 1 | |
store i64 1, i64* %162, align 8, !alias.scope !137, !noalias !140 | |
call void @_ZN3std2io5stdio6_print17hf909a9417e8e3c23E(%"core::fmt::Arguments"* noalias nocapture nonnull dereferenceable(48) %15) | |
call void @llvm.lifetime.end.p0i8(i64 48, i8* nonnull %149) | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %150) | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %151) | |
%163 = load i32, i32* %26, align 4 | |
%164 = bitcast { i32, i32 }* %12 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %164) | |
%165 = getelementptr inbounds { i32, i32 }, { i32, i32 }* %12, i64 0, i32 0 | |
store i32 0, i32* %165, align 4 | |
%166 = getelementptr inbounds { i32, i32 }, { i32, i32 }* %12, i64 0, i32 1 | |
store i32 %163, i32* %166, align 4 | |
%167 = icmp sgt i32 %163, 0 | |
br i1 %167, label %454, label %171, !prof !144 | |
; <label>:168: ; preds = %454, %406 | |
%169 = phi i32 [ 0, %454 ], [ %447, %406 ] | |
%170 = add i32 %169, 1 | |
store i32 %170, i32* %165, align 4 | |
br label %186 | |
; <label>:171: ; preds = %406, %105 | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %164) | |
%172 = bitcast %"core::fmt::Arguments"* %11 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 48, i8* nonnull %172) | |
%173 = bitcast [1 x { i8*, i8* }]* %10 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %173) | |
%174 = bitcast double* %9 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %174) | |
%175 = call fastcc double @_ZN4test6energy17h6acdc4d37a6ab310E([5 x %Planet]* noalias nonnull readonly dereferenceable(280) %20) | |
store double %175, double* %9, align 8 | |
%176 = bitcast [1 x { i8*, i8* }]* %10 to double** | |
store double* %9, double** %176, align 8 | |
%177 = getelementptr inbounds [1 x { i8*, i8* }], [1 x { i8*, i8* }]* %10, i64 0, i64 0, i32 1 | |
store i8* bitcast (i1 (double*, %"core::fmt::Formatter"*)* @"_ZN4core3fmt5float52_$LT$impl$u20$core..fmt..Display$u20$for$u20$f64$GT$3fmt17h9a2c74a963a03ea1E" to i8*), i8** %177, align 8 | |
%178 = bitcast %"core::fmt::Arguments"* %11 to [0 x { [0 x i8]*, i64 }]** | |
store [0 x { [0 x i8]*, i64 }]* bitcast ([2 x { [0 x i8]*, i64 }]* @ref.s to [0 x { [0 x i8]*, i64 }]*), [0 x { [0 x i8]*, i64 }]** %178, align 8, !alias.scope !145, !noalias !148 | |
%179 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %11, i64 0, i32 1, i32 1 | |
store i64 2, i64* %179, align 8, !alias.scope !145, !noalias !148 | |
%180 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %11, i64 0, i32 3 | |
%181 = bitcast %"core::option::Option<&[core::fmt::rt::v1::Argument]>"* %180 to [0 x %"core::fmt::rt::v1::Argument"]** | |
store [0 x %"core::fmt::rt::v1::Argument"]* bitcast ({ { [0 x i8], { i64, [0 x i8], i64, [0 x i8] }, [0 x i8], { [0 x i8], { i64, [0 x i8], i64, [0 x i8] }, [0 x i8], <{ i64, [8 x i8] }>, [0 x i8], i32, [0 x i8], i32, [0 x i8], i8, [7 x i8] }, [0 x i8] } }* @ref.v to [0 x %"core::fmt::rt::v1::Argument"]*), [0 x %"core::fmt::rt::v1::Argument"]** %181, align 8, !alias.scope !145, !noalias !148 | |
%182 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %11, i64 0, i32 3, i32 2, i64 0 | |
store i64 1, i64* %182, align 8, !alias.scope !145, !noalias !148 | |
%183 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %11, i64 0, i32 5, i32 0 | |
%184 = bitcast [0 x { i8*, i8* }]** %183 to [1 x { i8*, i8* }]** | |
store [1 x { i8*, i8* }]* %10, [1 x { i8*, i8* }]** %184, align 8, !alias.scope !145, !noalias !148 | |
%185 = getelementptr inbounds %"core::fmt::Arguments", %"core::fmt::Arguments"* %11, i64 0, i32 5, i32 1 | |
store i64 1, i64* %185, align 8, !alias.scope !145, !noalias !148 | |
call void @_ZN3std2io5stdio6_print17hf909a9417e8e3c23E(%"core::fmt::Arguments"* noalias nocapture nonnull dereferenceable(48) %11) | |
call void @llvm.lifetime.end.p0i8(i64 48, i8* nonnull %172) | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %173) | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %174) | |
call void @llvm.lifetime.end.p0i8(i64 80, i8* nonnull %17) | |
call void @llvm.lifetime.end.p0i8(i64 240, i8* nonnull %19) | |
call void @llvm.lifetime.end.p0i8(i64 280, i8* nonnull %127) | |
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %27) | |
ret void | |
; <label>:186: ; preds = %201, %168 | |
%187 = phi i64* [ %461, %168 ], [ %202, %201 ] | |
%188 = phi i64* [ %129, %168 ], [ %187, %201 ] | |
%189 = phi i64* [ %459, %168 ], [ %215, %201 ] | |
%190 = icmp ne i64* %187, null | |
call void @llvm.assume(i1 %190) | |
%191 = icmp eq i64* %187, %130 | |
%192 = icmp eq i64* %187, null | |
%193 = or i1 %191, %192 | |
br i1 %193, label %225, label %194, !prof !152 | |
; <label>:194: ; preds = %186 | |
%195 = getelementptr inbounds i64, i64* %187, i64 7 | |
%196 = bitcast i64* %188 to <2 x double>* | |
%197 = load <2 x double>, <2 x double>* %196, align 8, !alias.scope !153 | |
%198 = getelementptr inbounds i64, i64* %188, i64 2 | |
%199 = bitcast i64* %198 to double* | |
%200 = load double, double* %199, align 8, !alias.scope !153 | |
br label %203 | |
; <label>:201: ; preds = %209 | |
%202 = select i1 %191, i64* %187, i64* %195, !prof !156 | |
br i1 %193, label %225, label %186, !prof !79 | |
; <label>:203: ; preds = %209, %194 | |
%204 = phi i64* [ %195, %194 ], [ %224, %209 ] | |
%205 = phi i64* [ %187, %194 ], [ %204, %209 ] | |
%206 = phi i64* [ %189, %194 ], [ %215, %209 ] | |
%207 = icmp eq i64* %206, %460 | |
br i1 %207, label %208, label %209, !prof !157 | |
; <label>:208: ; preds = %203 | |
call void @_ZN4core9panicking5panic17hfefa0158f97fa77bE({ [0 x i64], { [0 x i8]*, i64 }, [0 x i64], { [0 x i8]*, i64 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias readonly dereferenceable(40) bitcast ({ [0 x i8], { [0 x i8]*, i64 }, [0 x i8], { [0 x i8]*, i64 }, [0 x i8], i32, [0 x i8], i32, [0 x i8] }* @ref.2 to { [0 x i64], { [0 x i8]*, i64 }, [0 x i64], { [0 x i8]*, i64 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }*)) | |
unreachable | |
; <label>:209: ; preds = %203 | |
%210 = getelementptr inbounds i64, i64* %205, i64 2 | |
%211 = bitcast i64* %210 to double* | |
%212 = load double, double* %211, align 8, !alias.scope !153 | |
%213 = bitcast i64* %205 to <2 x double>* | |
%214 = load <2 x double>, <2 x double>* %213, align 8, !alias.scope !153 | |
%215 = getelementptr inbounds i64, i64* %206, i64 3 | |
%216 = fsub double %200, %212 | |
%217 = fsub <2 x double> %197, %214 | |
%218 = bitcast i64* %206 to <2 x double>* | |
store <2 x double> %217, <2 x double>* %218, align 8, !noalias !153 | |
%219 = getelementptr inbounds i64, i64* %206, i64 2 | |
%220 = bitcast i64* %219 to double* | |
store double %216, double* %220, align 8, !noalias !153 | |
%221 = icmp ne i64* %204, null | |
call void @llvm.assume(i1 %221) | |
%222 = icmp eq i64* %204, %130 | |
%223 = getelementptr inbounds i64, i64* %204, i64 7 | |
%224 = select i1 %222, i64* %204, i64* %223, !prof !152 | |
br i1 %222, label %201, label %203, !prof !152 | |
; <label>:225: ; preds = %201, %186 | |
%226 = load double, double* %471, align 8, !alias.scope !158 | |
%227 = load double, double* %472, align 8, !alias.scope !158 | |
%228 = load double, double* %473, align 8, !alias.scope !158 | |
%229 = load double, double* %475, align 8, !alias.scope !158 | |
%230 = insertelement <2 x double> undef, double %226, i32 0 | |
%231 = insertelement <2 x double> %230, double %229, i32 1 | |
%232 = fmul <2 x double> %231, %231 | |
%233 = load double, double* %477, align 8, !alias.scope !158 | |
%234 = insertelement <2 x double> undef, double %227, i32 0 | |
%235 = insertelement <2 x double> %234, double %233, i32 1 | |
%236 = fmul <2 x double> %235, %235 | |
%237 = fadd <2 x double> %232, %236 | |
%238 = load double, double* %479, align 8, !alias.scope !158 | |
%239 = insertelement <2 x double> undef, double %228, i32 0 | |
%240 = insertelement <2 x double> %239, double %238, i32 1 | |
%241 = fmul <2 x double> %240, %240 | |
%242 = fadd <2 x double> %237, %241 | |
%243 = call <2 x double> @llvm.sqrt.v2f64(<2 x double> %242) | |
%244 = fmul <2 x double> %242, %243 | |
%245 = fdiv <2 x double> <double 1.000000e-02, double 1.000000e-02>, %244 | |
store <2 x double> %245, <2 x double>* %542, align 16, !noalias !161 | |
%246 = load double, double* %482, align 8, !alias.scope !158 | |
%247 = load double, double* %484, align 8, !alias.scope !158 | |
%248 = load double, double* %486, align 8, !alias.scope !158 | |
%249 = load double, double* %488, align 8, !alias.scope !158 | |
%250 = insertelement <2 x double> undef, double %246, i32 0 | |
%251 = insertelement <2 x double> %250, double %249, i32 1 | |
%252 = fmul <2 x double> %251, %251 | |
%253 = load double, double* %490, align 8, !alias.scope !158 | |
%254 = insertelement <2 x double> undef, double %247, i32 0 | |
%255 = insertelement <2 x double> %254, double %253, i32 1 | |
%256 = fmul <2 x double> %255, %255 | |
%257 = fadd <2 x double> %252, %256 | |
%258 = load double, double* %492, align 8, !alias.scope !158 | |
%259 = insertelement <2 x double> undef, double %248, i32 0 | |
%260 = insertelement <2 x double> %259, double %258, i32 1 | |
%261 = fmul <2 x double> %260, %260 | |
%262 = fadd <2 x double> %257, %261 | |
%263 = call <2 x double> @llvm.sqrt.v2f64(<2 x double> %262) | |
%264 = fmul <2 x double> %262, %263 | |
%265 = fdiv <2 x double> <double 1.000000e-02, double 1.000000e-02>, %264 | |
store <2 x double> %265, <2 x double>* %543, align 16, !noalias !161 | |
%266 = load double, double* %495, align 8, !alias.scope !158 | |
%267 = load double, double* %497, align 8, !alias.scope !158 | |
%268 = load double, double* %499, align 8, !alias.scope !158 | |
%269 = load double, double* %501, align 8, !alias.scope !158 | |
%270 = insertelement <2 x double> undef, double %266, i32 0 | |
%271 = insertelement <2 x double> %270, double %269, i32 1 | |
%272 = fmul <2 x double> %271, %271 | |
%273 = load double, double* %503, align 8, !alias.scope !158 | |
%274 = insertelement <2 x double> undef, double %267, i32 0 | |
%275 = insertelement <2 x double> %274, double %273, i32 1 | |
%276 = fmul <2 x double> %275, %275 | |
%277 = fadd <2 x double> %272, %276 | |
%278 = load double, double* %505, align 8, !alias.scope !158 | |
%279 = insertelement <2 x double> undef, double %268, i32 0 | |
%280 = insertelement <2 x double> %279, double %278, i32 1 | |
%281 = fmul <2 x double> %280, %280 | |
%282 = fadd <2 x double> %277, %281 | |
%283 = call <2 x double> @llvm.sqrt.v2f64(<2 x double> %282) | |
%284 = fmul <2 x double> %282, %283 | |
%285 = fdiv <2 x double> <double 1.000000e-02, double 1.000000e-02>, %284 | |
store <2 x double> %285, <2 x double>* %544, align 16, !noalias !161 | |
%286 = load double, double* %508, align 8, !alias.scope !158 | |
%287 = load double, double* %510, align 8, !alias.scope !158 | |
%288 = load double, double* %512, align 8, !alias.scope !158 | |
%289 = load double, double* %514, align 8, !alias.scope !158 | |
%290 = insertelement <2 x double> undef, double %286, i32 0 | |
%291 = insertelement <2 x double> %290, double %289, i32 1 | |
%292 = fmul <2 x double> %291, %291 | |
%293 = load double, double* %516, align 8, !alias.scope !158 | |
%294 = insertelement <2 x double> undef, double %287, i32 0 | |
%295 = insertelement <2 x double> %294, double %293, i32 1 | |
%296 = fmul <2 x double> %295, %295 | |
%297 = fadd <2 x double> %292, %296 | |
%298 = load double, double* %518, align 8, !alias.scope !158 | |
%299 = insertelement <2 x double> undef, double %288, i32 0 | |
%300 = insertelement <2 x double> %299, double %298, i32 1 | |
%301 = fmul <2 x double> %300, %300 | |
%302 = fadd <2 x double> %297, %301 | |
%303 = call <2 x double> @llvm.sqrt.v2f64(<2 x double> %302) | |
%304 = fmul <2 x double> %302, %303 | |
%305 = fdiv <2 x double> <double 1.000000e-02, double 1.000000e-02>, %304 | |
store <2 x double> %305, <2 x double>* %545, align 16, !noalias !161 | |
%306 = load double, double* %521, align 8, !alias.scope !158 | |
%307 = load double, double* %523, align 8, !alias.scope !158 | |
%308 = load double, double* %525, align 8, !alias.scope !158 | |
%309 = load double, double* %527, align 8, !alias.scope !158 | |
%310 = insertelement <2 x double> undef, double %306, i32 0 | |
%311 = insertelement <2 x double> %310, double %309, i32 1 | |
%312 = fmul <2 x double> %311, %311 | |
%313 = load double, double* %529, align 8, !alias.scope !158 | |
%314 = insertelement <2 x double> undef, double %307, i32 0 | |
%315 = insertelement <2 x double> %314, double %313, i32 1 | |
%316 = fmul <2 x double> %315, %315 | |
%317 = fadd <2 x double> %312, %316 | |
%318 = load double, double* %531, align 8, !alias.scope !158 | |
%319 = insertelement <2 x double> undef, double %308, i32 0 | |
%320 = insertelement <2 x double> %319, double %318, i32 1 | |
%321 = fmul <2 x double> %320, %320 | |
%322 = fadd <2 x double> %317, %321 | |
%323 = call <2 x double> @llvm.sqrt.v2f64(<2 x double> %322) | |
%324 = fmul <2 x double> %322, %323 | |
%325 = fdiv <2 x double> <double 1.000000e-02, double 1.000000e-02>, %324 | |
store <2 x double> %325, <2 x double>* %546, align 16, !noalias !161 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %462) | |
store [5 x %Planet]* %20, [5 x %Planet]** %463, align 8 | |
store i64 5, i64* %464, align 8 | |
br label %326 | |
; <label>:326: ; preds = %349, %225 | |
%327 = phi i64* [ %465, %225 ], [ %351, %349 ] | |
%328 = phi i64* [ %459, %225 ], [ %350, %349 ] | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* nonnull %466) | |
store [0 x %Planet]* @ref_mut.x, [0 x %Planet]** %467, align 8 | |
store i64 0, i64* %468, align 8 | |
call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %469) | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull %469, i8* nonnull %462, i64 16, i32 8, i1 false), !prof !164 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull %462, i8* nonnull %466, i64 16, i32 8, i1 false), !prof !164 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* nonnull %466, i8* nonnull %469, i64 16, i32 8, i1 false), !prof !164 | |
call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %469) | |
%329 = load [0 x %Planet]*, [0 x %Planet]** %467, align 8, !nonnull !31 | |
%330 = load i64, i64* %468, align 8 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %466) | |
%331 = icmp eq i64 %330, 0 | |
br i1 %331, label %332, label %333, !prof !165 | |
; <label>:332: ; preds = %326 | |
call void @_ZN4core9panicking5panic17hfefa0158f97fa77bE({ [0 x i64], { [0 x i8]*, i64 }, [0 x i64], { [0 x i8]*, i64 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias readonly dereferenceable(40) bitcast ({ [0 x i8], { [0 x i8]*, i64 }, [0 x i8], { [0 x i8]*, i64 }, [0 x i8], i32, [0 x i8], i32, [0 x i8] }* @ref.l to { [0 x i64], { [0 x i8]*, i64 }, [0 x i64], { [0 x i8]*, i64 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }*)), !noalias !166 | |
unreachable | |
; <label>:333: ; preds = %326 | |
%334 = getelementptr inbounds [0 x %Planet], [0 x %Planet]* %329, i64 0, i64 1 | |
%335 = add i64 %330, -1 | |
%336 = ptrtoint %Planet* %334 to i64 | |
store i64 %336, i64* %470, align 8 | |
store i64 %335, i64* %464, align 8 | |
%337 = getelementptr inbounds %Planet, %Planet* %334, i64 0, i32 0, i64 0 | |
%338 = getelementptr inbounds [0 x %Planet], [0 x %Planet]* %329, i64 0, i64 %330, i32 0, i64 0 | |
%339 = icmp eq i64* %337, %338 | |
br i1 %339, label %349, label %340, !prof !152 | |
; <label>:340: ; preds = %333 | |
%341 = getelementptr inbounds [0 x %Planet], [0 x %Planet]* %329, i64 0, i64 1, i32 0, i64 7 | |
%342 = getelementptr inbounds [0 x %Planet], [0 x %Planet]* %329, i64 0, i64 0, i32 0, i64 3 | |
%343 = getelementptr inbounds [0 x %Planet], [0 x %Planet]* %329, i64 0, i64 0, i32 0, i64 5 | |
%344 = bitcast i64* %343 to double* | |
%345 = getelementptr inbounds [0 x %Planet], [0 x %Planet]* %329, i64 0, i64 0, i32 0, i64 6 | |
%346 = bitcast i64* %345 to double* | |
%347 = bitcast i64* %342 to <2 x double>* | |
%348 = bitcast i64* %342 to <2 x double>* | |
br label %353 | |
; <label>:349: ; preds = %372, %333 | |
%350 = phi i64* [ %328, %333 ], [ %360, %372 ] | |
%351 = phi i64* [ %327, %333 ], [ %373, %372 ] | |
%352 = icmp eq i64 %335, 0 | |
br i1 %352, label %406, label %326, !prof !156 | |
; <label>:353: ; preds = %372, %340 | |
%354 = phi i64* [ %341, %340 ], [ %405, %372 ] | |
%355 = phi i64* [ %327, %340 ], [ %373, %372 ] | |
%356 = phi i64* [ %337, %340 ], [ %354, %372 ] | |
%357 = phi i64* [ %328, %340 ], [ %360, %372 ] | |
%358 = icmp ne i64* %357, null | |
call void @llvm.assume(i1 %358) | |
%359 = icmp eq i64* %357, %460 | |
%360 = getelementptr inbounds i64, i64* %357, i64 3 | |
br i1 %359, label %361, label %362, !prof !157 | |
; <label>:361: ; preds = %353 | |
call void @_ZN4core9panicking5panic17hfefa0158f97fa77bE({ [0 x i64], { [0 x i8]*, i64 }, [0 x i64], { [0 x i8]*, i64 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias readonly dereferenceable(40) bitcast ({ [0 x i8], { [0 x i8]*, i64 }, [0 x i8], { [0 x i8]*, i64 }, [0 x i8], i32, [0 x i8], i32, [0 x i8] }* @ref.2 to { [0 x i64], { [0 x i8]*, i64 }, [0 x i64], { [0 x i8]*, i64 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }*)) | |
unreachable | |
; <label>:362: ; preds = %353 | |
%363 = bitcast i64* %357 to <2 x double>* | |
%364 = load <2 x double>, <2 x double>* %363, align 8 | |
%365 = getelementptr inbounds i64, i64* %357, i64 2 | |
%366 = bitcast i64* %365 to double* | |
%367 = load double, double* %366, align 8 | |
%368 = icmp ne i64* %355, null | |
call void @llvm.assume(i1 %368) | |
%369 = bitcast i64* %355 to double* | |
%370 = icmp eq double* %128, %369 | |
br i1 %370, label %371, label %372, !prof !157 | |
; <label>:371: ; preds = %362 | |
call void @_ZN4core9panicking5panic17hfefa0158f97fa77bE({ [0 x i64], { [0 x i8]*, i64 }, [0 x i64], { [0 x i8]*, i64 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias readonly dereferenceable(40) bitcast ({ [0 x i8], { [0 x i8]*, i64 }, [0 x i8], { [0 x i8]*, i64 }, [0 x i8], i32, [0 x i8], i32, [0 x i8] }* @ref.2 to { [0 x i64], { [0 x i8]*, i64 }, [0 x i64], { [0 x i8]*, i64 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }*)) | |
unreachable | |
; <label>:372: ; preds = %362 | |
%373 = getelementptr inbounds i64, i64* %355, i64 1 | |
%374 = load double, double* %369, align 8 | |
%375 = load <2 x double>, <2 x double>* %347, align 8 | |
%376 = load double, double* %344, align 8 | |
%377 = getelementptr inbounds i64, i64* %356, i64 6 | |
%378 = bitcast i64* %377 to double* | |
%379 = load double, double* %378, align 8 | |
%380 = fmul double %374, %379 | |
%381 = insertelement <2 x double> undef, double %380, i32 0 | |
%382 = shufflevector <2 x double> %381, <2 x double> undef, <2 x i32> zeroinitializer | |
%383 = fmul <2 x double> %364, %382 | |
%384 = fmul double %367, %380 | |
%385 = fsub <2 x double> %375, %383 | |
%386 = fsub double %376, %384 | |
store <2 x double> %385, <2 x double>* %348, align 8 | |
store double %386, double* %344, align 8 | |
%387 = getelementptr inbounds i64, i64* %356, i64 3 | |
%388 = bitcast i64* %387 to <2 x double>* | |
%389 = load <2 x double>, <2 x double>* %388, align 8 | |
%390 = getelementptr inbounds i64, i64* %356, i64 5 | |
%391 = bitcast i64* %390 to double* | |
%392 = load double, double* %391, align 8 | |
%393 = load double, double* %346, align 8 | |
%394 = fmul double %374, %393 | |
%395 = insertelement <2 x double> undef, double %394, i32 0 | |
%396 = shufflevector <2 x double> %395, <2 x double> undef, <2 x i32> zeroinitializer | |
%397 = fmul <2 x double> %364, %396 | |
%398 = fmul double %367, %394 | |
%399 = fadd <2 x double> %389, %397 | |
%400 = fadd double %392, %398 | |
%401 = bitcast i64* %387 to <2 x double>* | |
store <2 x double> %399, <2 x double>* %401, align 8 | |
store double %400, double* %391, align 8 | |
%402 = icmp ne i64* %354, null | |
call void @llvm.assume(i1 %402) | |
%403 = icmp eq i64* %354, %338 | |
%404 = getelementptr inbounds i64, i64* %354, i64 7 | |
%405 = select i1 %403, i64* %354, i64* %404, !prof !152 | |
br i1 %403, label %349, label %353, !prof !152 | |
; <label>:406: ; preds = %349 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* nonnull %462) | |
%407 = load <2 x double>, <2 x double>* %547, align 16 | |
%408 = load double, double* %533, align 16 | |
%409 = load <2 x double>, <2 x double>* %548, align 8 | |
%410 = load double, double* %133, align 8 | |
%411 = fmul <2 x double> %409, <double 1.000000e-02, double 1.000000e-02> | |
%412 = fmul double %410, 1.000000e-02 | |
%413 = fadd <2 x double> %407, %411 | |
%414 = fadd double %408, %412 | |
store <2 x double> %413, <2 x double>* %549, align 16 | |
store double %414, double* %533, align 16 | |
%415 = load <2 x double>, <2 x double>* %550, align 8 | |
%416 = load double, double* %535, align 8 | |
%417 = load <2 x double>, <2 x double>* %551, align 16 | |
%418 = load double, double* %136, align 16 | |
%419 = fmul <2 x double> %417, <double 1.000000e-02, double 1.000000e-02> | |
%420 = fmul double %418, 1.000000e-02 | |
%421 = fadd <2 x double> %415, %419 | |
%422 = fadd double %416, %420 | |
store <2 x double> %421, <2 x double>* %552, align 8 | |
store double %422, double* %535, align 8 | |
%423 = load <2 x double>, <2 x double>* %553, align 16 | |
%424 = load double, double* %537, align 16 | |
%425 = load <2 x double>, <2 x double>* %554, align 8 | |
%426 = load double, double* %139, align 8 | |
%427 = fmul <2 x double> %425, <double 1.000000e-02, double 1.000000e-02> | |
%428 = fmul double %426, 1.000000e-02 | |
%429 = fadd <2 x double> %423, %427 | |
%430 = fadd double %424, %428 | |
store <2 x double> %429, <2 x double>* %555, align 16 | |
store double %430, double* %537, align 16 | |
%431 = load <2 x double>, <2 x double>* %556, align 8 | |
%432 = load double, double* %539, align 8 | |
%433 = load <2 x double>, <2 x double>* %557, align 16 | |
%434 = load double, double* %142, align 16 | |
%435 = fmul <2 x double> %433, <double 1.000000e-02, double 1.000000e-02> | |
%436 = fmul double %434, 1.000000e-02 | |
%437 = fadd <2 x double> %431, %435 | |
%438 = fadd double %432, %436 | |
store <2 x double> %437, <2 x double>* %558, align 8 | |
store double %438, double* %539, align 8 | |
%439 = load <2 x double>, <2 x double>* %559, align 16 | |
%440 = load double, double* %541, align 16 | |
%441 = load <2 x double>, <2 x double>* %560, align 8 | |
%442 = load double, double* %145, align 8 | |
%443 = fmul <2 x double> %441, <double 1.000000e-02, double 1.000000e-02> | |
%444 = fmul double %442, 1.000000e-02 | |
%445 = fadd <2 x double> %439, %443 | |
%446 = fadd double %440, %444 | |
store <2 x double> %445, <2 x double>* %561, align 16 | |
store double %446, double* %541, align 16 | |
%447 = load i32, i32* %165, align 4, !alias.scope !171, !noalias !174 | |
%448 = load i32, i32* %166, align 4, !alias.scope !174, !noalias !171 | |
%449 = icmp slt i32 %447, %448 | |
br i1 %449, label %168, label %171, !prof !144 | |
; <label>:450: ; preds = %35 | |
%451 = landingpad { i8*, i32 } | |
cleanup | |
br label %452 | |
; <label>:452: ; preds = %450, %102, %78 | |
%453 = phi { i8*, i32 } [ %79, %78 ], [ %451, %450 ], [ %103, %102 ] | |
call fastcc void @_ZN4core3ptr13drop_in_place17h5ad1bad050c6ee33E(%"std::env::ArgsOs"* nonnull %23) #9 | |
resume { i8*, i32 } %453 | |
; <label>:454: ; preds = %105 | |
%455 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %20, i64 0, i64 0, i32 0, i64 28 | |
%456 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %20, i64 0, i64 0, i32 0, i64 21 | |
%457 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %20, i64 0, i64 0, i32 0, i64 14 | |
%458 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %20, i64 0, i64 0, i32 0, i64 7 | |
%459 = getelementptr inbounds [10 x %Vec3], [10 x %Vec3]* %18, i64 0, i64 0, i32 0, i64 0 | |
%460 = getelementptr inbounds [10 x %Vec3], [10 x %Vec3]* %18, i64 0, i64 10, i32 0, i64 0 | |
%461 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %20, i64 0, i64 0, i32 0, i64 7 | |
%462 = bitcast { [0 x %Planet]*, i64 }* %3 to i8* | |
%463 = bitcast { [0 x %Planet]*, i64 }* %3 to [5 x %Planet]** | |
%464 = getelementptr inbounds { [0 x %Planet]*, i64 }, { [0 x %Planet]*, i64 }* %3, i64 0, i32 1 | |
%465 = bitcast [10 x double]* %16 to i64* | |
%466 = bitcast { [0 x %Planet]*, i64 }* %2 to i8* | |
%467 = getelementptr inbounds { [0 x %Planet]*, i64 }, { [0 x %Planet]*, i64 }* %2, i64 0, i32 0 | |
%468 = getelementptr inbounds { [0 x %Planet]*, i64 }, { [0 x %Planet]*, i64 }* %2, i64 0, i32 1 | |
%469 = bitcast %"core::ptr::swap_nonoverlapping_bytes::UnalignedBlock"* %1 to i8* | |
%470 = bitcast { [0 x %Planet]*, i64 }* %3 to i64* | |
%471 = bitcast [10 x %Vec3]* %18 to double* | |
%472 = getelementptr inbounds [10 x %Vec3], [10 x %Vec3]* %18, i64 0, i64 0, i32 3 | |
%473 = getelementptr inbounds [10 x %Vec3], [10 x %Vec3]* %18, i64 0, i64 0, i32 5 | |
%474 = getelementptr inbounds [10 x %Vec3], [10 x %Vec3]* %18, i64 0, i64 1, i32 0, i64 0 | |
%475 = bitcast i64* %474 to double* | |
%476 = getelementptr inbounds [10 x %Vec3], [10 x %Vec3]* %18, i64 0, i64 1, i32 0, i64 1 | |
%477 = bitcast i64* %476 to double* | |
%478 = getelementptr inbounds [10 x %Vec3], [10 x %Vec3]* %18, i64 0, i64 1, i32 0, i64 2 | |
%479 = bitcast i64* %478 to double* | |
%480 = getelementptr inbounds [10 x %Vec3], [10 x %Vec3]* %18, i64 0, i64 2, i32 0, i64 0 | |
%481 = getelementptr inbounds [10 x double], [10 x double]* %16, i64 0, i64 2 | |
%482 = bitcast i64* %480 to double* | |
%483 = getelementptr inbounds [10 x %Vec3], [10 x %Vec3]* %18, i64 0, i64 2, i32 0, i64 1 | |
%484 = bitcast i64* %483 to double* | |
%485 = getelementptr inbounds [10 x %Vec3], [10 x %Vec3]* %18, i64 0, i64 2, i32 0, i64 2 | |
%486 = bitcast i64* %485 to double* | |
%487 = getelementptr inbounds [10 x %Vec3], [10 x %Vec3]* %18, i64 0, i64 3, i32 0, i64 0 | |
%488 = bitcast i64* %487 to double* | |
%489 = getelementptr inbounds [10 x %Vec3], [10 x %Vec3]* %18, i64 0, i64 3, i32 0, i64 1 | |
%490 = bitcast i64* %489 to double* | |
%491 = getelementptr inbounds [10 x %Vec3], [10 x %Vec3]* %18, i64 0, i64 3, i32 0, i64 2 | |
%492 = bitcast i64* %491 to double* | |
%493 = getelementptr inbounds [10 x %Vec3], [10 x %Vec3]* %18, i64 0, i64 4, i32 0, i64 0 | |
%494 = getelementptr inbounds [10 x double], [10 x double]* %16, i64 0, i64 4 | |
%495 = bitcast i64* %493 to double* | |
%496 = getelementptr inbounds [10 x %Vec3], [10 x %Vec3]* %18, i64 0, i64 4, i32 0, i64 1 | |
%497 = bitcast i64* %496 to double* | |
%498 = getelementptr inbounds [10 x %Vec3], [10 x %Vec3]* %18, i64 0, i64 4, i32 0, i64 2 | |
%499 = bitcast i64* %498 to double* | |
%500 = getelementptr inbounds [10 x %Vec3], [10 x %Vec3]* %18, i64 0, i64 5, i32 0, i64 0 | |
%501 = bitcast i64* %500 to double* | |
%502 = getelementptr inbounds [10 x %Vec3], [10 x %Vec3]* %18, i64 0, i64 5, i32 0, i64 1 | |
%503 = bitcast i64* %502 to double* | |
%504 = getelementptr inbounds [10 x %Vec3], [10 x %Vec3]* %18, i64 0, i64 5, i32 0, i64 2 | |
%505 = bitcast i64* %504 to double* | |
%506 = getelementptr inbounds [10 x %Vec3], [10 x %Vec3]* %18, i64 0, i64 6, i32 0, i64 0 | |
%507 = getelementptr inbounds [10 x double], [10 x double]* %16, i64 0, i64 6 | |
%508 = bitcast i64* %506 to double* | |
%509 = getelementptr inbounds [10 x %Vec3], [10 x %Vec3]* %18, i64 0, i64 6, i32 0, i64 1 | |
%510 = bitcast i64* %509 to double* | |
%511 = getelementptr inbounds [10 x %Vec3], [10 x %Vec3]* %18, i64 0, i64 6, i32 0, i64 2 | |
%512 = bitcast i64* %511 to double* | |
%513 = getelementptr inbounds [10 x %Vec3], [10 x %Vec3]* %18, i64 0, i64 7, i32 0, i64 0 | |
%514 = bitcast i64* %513 to double* | |
%515 = getelementptr inbounds [10 x %Vec3], [10 x %Vec3]* %18, i64 0, i64 7, i32 0, i64 1 | |
%516 = bitcast i64* %515 to double* | |
%517 = getelementptr inbounds [10 x %Vec3], [10 x %Vec3]* %18, i64 0, i64 7, i32 0, i64 2 | |
%518 = bitcast i64* %517 to double* | |
%519 = getelementptr inbounds [10 x %Vec3], [10 x %Vec3]* %18, i64 0, i64 8, i32 0, i64 0 | |
%520 = getelementptr inbounds [10 x double], [10 x double]* %16, i64 0, i64 8 | |
%521 = bitcast i64* %519 to double* | |
%522 = getelementptr inbounds [10 x %Vec3], [10 x %Vec3]* %18, i64 0, i64 8, i32 0, i64 1 | |
%523 = bitcast i64* %522 to double* | |
%524 = getelementptr inbounds [10 x %Vec3], [10 x %Vec3]* %18, i64 0, i64 8, i32 0, i64 2 | |
%525 = bitcast i64* %524 to double* | |
%526 = getelementptr inbounds [10 x %Vec3], [10 x %Vec3]* %18, i64 0, i64 9, i32 0, i64 0 | |
%527 = bitcast i64* %526 to double* | |
%528 = getelementptr inbounds [10 x %Vec3], [10 x %Vec3]* %18, i64 0, i64 9, i32 0, i64 1 | |
%529 = bitcast i64* %528 to double* | |
%530 = getelementptr inbounds [10 x %Vec3], [10 x %Vec3]* %18, i64 0, i64 9, i32 0, i64 2 | |
%531 = bitcast i64* %530 to double* | |
%532 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %20, i64 0, i64 0, i32 0, i64 2 | |
%533 = bitcast i64* %532 to double* | |
%534 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %20, i64 0, i64 0, i32 0, i64 9 | |
%535 = bitcast i64* %534 to double* | |
%536 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %20, i64 0, i64 0, i32 0, i64 16 | |
%537 = bitcast i64* %536 to double* | |
%538 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %20, i64 0, i64 0, i32 0, i64 23 | |
%539 = bitcast i64* %538 to double* | |
%540 = getelementptr inbounds [5 x %Planet], [5 x %Planet]* %20, i64 0, i64 0, i32 0, i64 30 | |
%541 = bitcast i64* %540 to double* | |
%542 = bitcast [10 x double]* %16 to <2 x double>* | |
%543 = bitcast double* %481 to <2 x double>* | |
%544 = bitcast double* %494 to <2 x double>* | |
%545 = bitcast double* %507 to <2 x double>* | |
%546 = bitcast double* %520 to <2 x double>* | |
%547 = bitcast [5 x %Planet]* %20 to <2 x double>* | |
%548 = bitcast i64* %131 to <2 x double>* | |
%549 = bitcast [5 x %Planet]* %20 to <2 x double>* | |
%550 = bitcast i64* %458 to <2 x double>* | |
%551 = bitcast i64* %134 to <2 x double>* | |
%552 = bitcast i64* %458 to <2 x double>* | |
%553 = bitcast i64* %457 to <2 x double>* | |
%554 = bitcast i64* %137 to <2 x double>* | |
%555 = bitcast i64* %457 to <2 x double>* | |
%556 = bitcast i64* %456 to <2 x double>* | |
%557 = bitcast i64* %140 to <2 x double>* | |
%558 = bitcast i64* %456 to <2 x double>* | |
%559 = bitcast i64* %455 to <2 x double>* | |
%560 = bitcast i64* %143 to <2 x double>* | |
%561 = bitcast i64* %455 to <2 x double>* | |
br label %168 | |
} | |
; Function Attrs: nounwind | |
declare void @llvm.assume(i1) #4 | |
declare i32 @rust_eh_personality(i32, i32, i64, %"unwind::libunwind::_Unwind_Exception"*, %"unwind::libunwind::_Unwind_Context"*) unnamed_addr | |
; Function Attrs: cold noinline noreturn | |
declare void @_ZN4core9panicking5panic17hfefa0158f97fa77bE({ [0 x i64], { [0 x i8]*, i64 }, [0 x i64], { [0 x i8]*, i64 }, [0 x i32], i32, [0 x i32], i32, [0 x i32] }* noalias readonly dereferenceable(40)) unnamed_addr #5 | |
; Function Attrs: argmemonly nounwind | |
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture writeonly, i8* nocapture readonly, i64, i32, i1) #6 | |
declare i64 @_ZN3std2rt19lang_start_internal17he461b456319e29d6E({}* nonnull, {}* noalias nonnull readonly, i64, i8**) unnamed_addr | |
declare i32 @"_ZN58_$LT$$LP$$RP$$u20$as$u20$std..termination..Termination$GT$6report17h5ef51a1159d52e9eE"() unnamed_addr | |
; Function Attrs: nounwind readnone speculatable | |
declare double @llvm.sqrt.f64(double) #7 | |
declare i64 @"_ZN4core3num52_$LT$impl$u20$core..str..FromStr$u20$for$u20$i32$GT$8from_str17h99b48ffb87a27724E"([0 x i8]* noalias nonnull readonly, i64) unnamed_addr | |
; Function Attrs: nounwind | |
declare void @__rust_dealloc(i8*, i64, i64) unnamed_addr #4 | |
declare void @"_ZN67_$LT$std..env..ArgsOs$u20$as$u20$core..iter..iterator..Iterator$GT$4next17h2da8ead691074258E"(%"core::option::Option<std::ffi::os_str::OsString>"* noalias nocapture sret dereferenceable(24), %"std::env::ArgsOs"* dereferenceable(32)) unnamed_addr | |
declare void @_ZN3std3env7args_os17h0e97fc174faccbd6E(%"std::env::ArgsOs"* noalias nocapture sret dereferenceable(32)) unnamed_addr | |
declare zeroext i1 @"_ZN4core3fmt3num52_$LT$impl$u20$core..fmt..Display$u20$for$u20$i32$GT$3fmt17h8208a598556d09a5E"(i32* noalias readonly dereferenceable(4), %"core::fmt::Formatter"* dereferenceable(96)) unnamed_addr | |
declare void @_ZN3std2io5stdio6_print17hf909a9417e8e3c23E(%"core::fmt::Arguments"* noalias nocapture dereferenceable(48)) unnamed_addr | |
declare zeroext i1 @"_ZN4core3fmt5float52_$LT$impl$u20$core..fmt..Display$u20$for$u20$f64$GT$3fmt17h9a2c74a963a03ea1E"(double* noalias readonly dereferenceable(8), %"core::fmt::Formatter"* dereferenceable(96)) unnamed_addr | |
declare void @_ZN3std3ffi6os_str8OsString11into_string17h567757e2e42e16abE(%"core::result::Result<alloc::string::String, std::ffi::os_str::OsString>"* noalias nocapture sret dereferenceable(32), %"std::ffi::os_str::OsString"* noalias nocapture dereferenceable(24)) unnamed_addr | |
; Function Attrs: cold | |
define i32 @main(i32, i8**) unnamed_addr #8 !prof !29 { | |
%3 = alloca i8*, align 8 | |
%4 = sext i32 %0 to i64 | |
%5 = bitcast i8** %3 to i8* | |
call void @llvm.lifetime.start.p0i8(i64 8, i8* nonnull %5) | |
%6 = bitcast i8** %3 to void ()** | |
store void ()* @_ZN4test4main17h6f2dd3dc2bc8dfe6E, void ()** %6, align 8 | |
%7 = bitcast i8** %3 to {}* | |
%8 = call i64 @_ZN3std2rt19lang_start_internal17he461b456319e29d6E({}* nonnull %7, {}* noalias nonnull readonly bitcast ({ void (i8**)*, i64, i64, i32 (i8**)*, i32 (i8**)*, i32 (i8*)* }* @vtable.4 to {}*), i64 %4, i8** %1) | |
call void @llvm.lifetime.end.p0i8(i64 8, i8* nonnull %5) | |
%9 = trunc i64 %8 to i32 | |
ret i32 %9 | |
} | |
; Function Attrs: argmemonly nounwind | |
declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) #6 | |
; Function Attrs: argmemonly nounwind | |
declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) #6 | |
; Function Attrs: argmemonly nounwind | |
declare void @llvm.memset.p0i8.i64(i8* nocapture writeonly, i8, i64, i32, i1) #6 | |
; Function Attrs: nounwind readnone speculatable | |
declare <2 x double> @llvm.sqrt.v2f64(<2 x double>) #7 | |
attributes #0 = { cold uwtable } | |
attributes #1 = { cold norecurse nounwind readnone uwtable } | |
attributes #2 = { cold nounwind uwtable } | |
attributes #3 = { uwtable } | |
attributes #4 = { nounwind } | |
attributes #5 = { cold noinline noreturn } | |
attributes #6 = { argmemonly nounwind } | |
attributes #7 = { nounwind readnone speculatable } | |
attributes #8 = { cold } | |
attributes #9 = { noinline } | |
!llvm.module.flags = !{!0, !1} | |
!0 = !{i32 7, !"PIE Level", i32 2} | |
!1 = !{i32 1, !"ProfileSummary", !2} | |
!2 = !{!3, !4, !5, !6, !7, !8, !9, !10} | |
!3 = !{!"ProfileFormat", !"InstrProf"} | |
!4 = !{!"TotalCount", i64 8200000070} | |
!5 = !{!"MaxCount", i64 1000000000} | |
!6 = !{!"MaxInternalCount", i64 1000000000} | |
!7 = !{!"MaxFunctionCount", i64 1000000000} | |
!8 = !{!"NumCounts", i64 83} | |
!9 = !{!"NumFunctions", i64 14} | |
!10 = !{!"DetailedSummary", !11} | |
!11 = !{!12, !13, !14, !15, !16, !17, !17, !18, !18, !19, !20, !21, !22, !23, !24, !25, !26, !27} | |
!12 = !{i32 10000, i64 1000000000, i32 4} | |
!13 = !{i32 100000, i64 1000000000, i32 4} | |
!14 = !{i32 200000, i64 1000000000, i32 4} | |
!15 = !{i32 300000, i64 1000000000, i32 4} | |
!16 = !{i32 400000, i64 1000000000, i32 4} | |
!17 = !{i32 500000, i64 500000000, i32 11} | |
!18 = !{i32 600000, i64 500000000, i32 11} | |
!19 = !{i32 700000, i64 500000000, i32 11} | |
!20 = !{i32 800000, i64 500000000, i32 11} | |
!21 = !{i32 900000, i64 500000000, i32 11} | |
!22 = !{i32 950000, i64 100000000, i32 18} | |
!23 = !{i32 990000, i64 100000000, i32 18} | |
!24 = !{i32 999000, i64 100000000, i32 18} | |
!25 = !{i32 999900, i64 100000000, i32 18} | |
!26 = !{i32 999990, i64 100000000, i32 18} | |
!27 = !{i32 999999, i64 100000000, i32 18} | |
!28 = !{!"function_entry_count", i64 0} | |
!29 = !{!"function_entry_count", i64 1} | |
!30 = !{!"test0-317d481089b8c8fe83113de504472633.rs:_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h64ffb38e2fed3ec4E"} | |
!31 = !{} | |
!32 = !{!"VP", i32 0, i64 1, i64 4926664627884762604, i64 1} | |
!33 = !{!"test0-317d481089b8c8fe83113de504472633.rs:_ZN4core3ops8function6FnOnce9call_once17he8c51a13e1ce2e56E"} | |
!34 = !{!35} | |
!35 = distinct !{!35, !36, !"_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h64ffb38e2fed3ec4E: argument 0"} | |
!36 = distinct !{!36, !"_ZN3std2rt10lang_start28_$u7b$$u7b$closure$u7d$$u7d$17h64ffb38e2fed3ec4E"} | |
!37 = !{!"test0-317d481089b8c8fe83113de504472633.rs:_ZN4core3ptr13drop_in_place17h3bd07621d6b15e9aE"} | |
!38 = !{!"test0-317d481089b8c8fe83113de504472633.rs:_ZN4core3ptr13drop_in_place17h5ad1bad050c6ee33E"} | |
!39 = !{!40, !42} | |
!40 = distinct !{!40, !41, !"_ZN80_$LT$alloc..vec..IntoIter$LT$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$4next17h04e50c9174a9b00dE: argument 0"} | |
!41 = distinct !{!41, !"_ZN80_$LT$alloc..vec..IntoIter$LT$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$4next17h04e50c9174a9b00dE"} | |
!42 = distinct !{!42, !43, !"_ZN75_$LT$$RF$$u27$a$u20$mut$u20$I$u20$as$u20$core..iter..iterator..Iterator$GT$4next17he05fd7ab4618c162E: argument 0"} | |
!43 = distinct !{!43, !"_ZN75_$LT$$RF$$u27$a$u20$mut$u20$I$u20$as$u20$core..iter..iterator..Iterator$GT$4next17he05fd7ab4618c162E"} | |
!44 = !{!"branch_weights", i32 1, i32 0} | |
!45 = !{!"branch_weights", i32 1073741824, i32 1073741824} | |
!46 = !{!"branch_weights", i32 0, i32 1} | |
!47 = !{!"test0-317d481089b8c8fe83113de504472633.rs:_ZN4core3ptr13drop_in_place17hce82c5074859547eE"} | |
!48 = !{!49} | |
!49 = distinct !{!49, !50, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$14current_layout17h81614572d552a54cE: argument 1"} | |
!50 = distinct !{!50, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$14current_layout17h81614572d552a54cE"} | |
!51 = !{!52} | |
!52 = distinct !{!52, !50, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$14current_layout17h81614572d552a54cE: argument 0"} | |
!53 = !{!54} | |
!54 = distinct !{!54, !55, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$3ptr17h5603ba6ea08c38eaE: argument 0"} | |
!55 = distinct !{!55, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$3ptr17h5603ba6ea08c38eaE"} | |
!56 = !{!"function_entry_count", i64 2} | |
!57 = !{!"test0-317d481089b8c8fe83113de504472633.rs:_ZN4test6energy17h6acdc4d37a6ab310E"} | |
!58 = !{!59} | |
!59 = distinct !{!59, !60, !"_ZN4test4Vec312squared_norm17h432dc8574a0bf316E: argument 0"} | |
!60 = distinct !{!60, !"_ZN4test4Vec312squared_norm17h432dc8574a0bf316E"} | |
!61 = !{!62, !64} | |
!62 = distinct !{!62, !63, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$4fold17hecd838a7900d1617E: argument 0"} | |
!63 = distinct !{!63, !"_ZN91_$LT$core..slice..Iter$LT$$u27$a$C$$u20$T$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$4fold17hecd838a7900d1617E"} | |
!64 = distinct !{!64, !65, !"_ZN84_$LT$core..iter..Map$LT$I$C$$u20$F$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$4fold17ha5d8ab8ae0e98620E: argument 0"} | |
!65 = distinct !{!65, !"_ZN84_$LT$core..iter..Map$LT$I$C$$u20$F$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$4fold17ha5d8ab8ae0e98620E"} | |
!66 = !{!"branch_weights", i32 10, i32 20} | |
!67 = !{!68, !70, !62, !64} | |
!68 = distinct !{!68, !69, !"_ZN4test6energy28_$u7b$$u7b$closure$u7d$$u7d$17ha38cbc1d8f4f6c5eE: argument 0"} | |
!69 = distinct !{!69, !"_ZN4test6energy28_$u7b$$u7b$closure$u7d$$u7d$17ha38cbc1d8f4f6c5eE"} | |
!70 = distinct !{!70, !71, !"_ZN84_$LT$core..iter..Map$LT$I$C$$u20$F$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$4fold28_$u7b$$u7b$closure$u7d$$u7d$17hdbb45dd658aa063fE: argument 0"} | |
!71 = distinct !{!71, !"_ZN84_$LT$core..iter..Map$LT$I$C$$u20$F$GT$$u20$as$u20$core..iter..iterator..Iterator$GT$4fold28_$u7b$$u7b$closure$u7d$$u7d$17hdbb45dd658aa063fE"} | |
!72 = !{!68, !70} | |
!73 = !{!"branch_weights", i32 1, i32 9} | |
!74 = !{!"branch_weights", i32 5, i32 4} | |
!75 = !{!"branch_weights", i32 4, i32 7} | |
!76 = distinct !{!76, !77} | |
!77 = !{!"llvm.loop.unroll.disable"} | |
!78 = !{!"branch_weights", i32 2, i32 10} | |
!79 = !{!"branch_weights", i32 0, i32 -2147483648} | |
!80 = !{!"test0-317d481089b8c8fe83113de504472633.rs:_ZN4test4main17h6f2dd3dc2bc8dfe6E"} | |
!81 = !{!82} | |
!82 = distinct !{!82, !83, !"_ZN4core4iter8iterator8Iterator3nth17h1563a4e0b7230cedE: argument 0"} | |
!83 = distinct !{!83, !"_ZN4core4iter8iterator8Iterator3nth17h1563a4e0b7230cedE"} | |
!84 = !{!"branch_weights", i32 0, i32 2} | |
!85 = !{!"branch_weights", i32 1, i32 1} | |
!86 = !{!87} | |
!87 = distinct !{!87, !88, !"_ZN38_$LT$core..option..Option$LT$T$GT$$GT$8and_then17hc6da7a8d14258841E: argument 0"} | |
!88 = distinct !{!88, !"_ZN38_$LT$core..option..Option$LT$T$GT$$GT$8and_then17hc6da7a8d14258841E"} | |
!89 = !{!90} | |
!90 = distinct !{!90, !88, !"_ZN38_$LT$core..option..Option$LT$T$GT$$GT$8and_then17hc6da7a8d14258841E: argument 1"} | |
!91 = !{!92, !94, !87, !90} | |
!92 = distinct !{!92, !93, !"_ZN4test4main28_$u7b$$u7b$closure$u7d$$u7d$17hbabc083ce480624cE: argument 0"} | |
!93 = distinct !{!93, !"_ZN4test4main28_$u7b$$u7b$closure$u7d$$u7d$17hbabc083ce480624cE"} | |
!94 = distinct !{!94, !93, !"_ZN4test4main28_$u7b$$u7b$closure$u7d$$u7d$17hbabc083ce480624cE: argument 1"} | |
!95 = !{i64 0, i64 2} | |
!96 = !{!97} | |
!97 = distinct !{!97, !98, !"_ZN47_$LT$core..result..Result$LT$T$C$$u20$E$GT$$GT$2ok17h8d88d07d961397f1E: argument 1"} | |
!98 = distinct !{!98, !"_ZN47_$LT$core..result..Result$LT$T$C$$u20$E$GT$$GT$2ok17h8d88d07d961397f1E"} | |
!99 = !{!100, !92, !94, !87, !90} | |
!100 = distinct !{!100, !98, !"_ZN47_$LT$core..result..Result$LT$T$C$$u20$E$GT$$GT$2ok17h8d88d07d961397f1E: argument 0"} | |
!101 = !{!102} | |
!102 = distinct !{!102, !103, !"_ZN38_$LT$core..option..Option$LT$T$GT$$GT$8and_then17hed108e8b4b447622E: argument 0"} | |
!103 = distinct !{!103, !"_ZN38_$LT$core..option..Option$LT$T$GT$$GT$8and_then17hed108e8b4b447622E"} | |
!104 = !{!100, !92, !87} | |
!105 = !{!97, !94, !90} | |
!106 = !{!107, !97} | |
!107 = distinct !{!107, !108, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$14current_layout17h81614572d552a54cE: argument 1"} | |
!108 = distinct !{!108, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$14current_layout17h81614572d552a54cE"} | |
!109 = !{!110, !100, !92, !94, !87, !90} | |
!110 = distinct !{!110, !108, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$14current_layout17h81614572d552a54cE: argument 0"} | |
!111 = !{!112, !97} | |
!112 = distinct !{!112, !113, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$3ptr17h5603ba6ea08c38eaE: argument 0"} | |
!113 = distinct !{!113, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$3ptr17h5603ba6ea08c38eaE"} | |
!114 = !{!100, !97, !92, !94, !87} | |
!115 = !{!116, !118, !120, !122} | |
!116 = distinct !{!116, !117, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$3ptr17h5603ba6ea08c38eaE: argument 0"} | |
!117 = distinct !{!117, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$3ptr17h5603ba6ea08c38eaE"} | |
!118 = distinct !{!118, !119, !"_ZN68_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$core..ops..deref..Deref$GT$5deref17h15454f68f103465cE: argument 0"} | |
!119 = distinct !{!119, !"_ZN68_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$core..ops..deref..Deref$GT$5deref17h15454f68f103465cE"} | |
!120 = distinct !{!120, !121, !"_ZN65_$LT$alloc..string..String$u20$as$u20$core..ops..deref..Deref$GT$5deref17h592502204d4931f8E: argument 0"} | |
!121 = distinct !{!121, !"_ZN65_$LT$alloc..string..String$u20$as$u20$core..ops..deref..Deref$GT$5deref17h592502204d4931f8E"} | |
!122 = distinct !{!122, !123, !"_ZN4test4main28_$u7b$$u7b$closure$u7d$$u7d$17hab760d6fcd6093b0E: argument 0"} | |
!123 = distinct !{!123, !"_ZN4test4main28_$u7b$$u7b$closure$u7d$$u7d$17hab760d6fcd6093b0E"} | |
!124 = !{!118, !120, !122} | |
!125 = !{!126, !122} | |
!126 = distinct !{!126, !127, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$14current_layout17h81614572d552a54cE: argument 1"} | |
!127 = distinct !{!127, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$14current_layout17h81614572d552a54cE"} | |
!128 = !{!129, !102} | |
!129 = distinct !{!129, !127, !"_ZN49_$LT$alloc..raw_vec..RawVec$LT$T$C$$u20$A$GT$$GT$14current_layout17h81614572d552a54cE: argument 0"} | |
!130 = !{!131} | |
!131 = distinct !{!131, !132, !"_ZN4core3fmt9Arguments16new_v1_formatted17hea2ae333548f7201E: argument 0"} | |
!132 = distinct !{!132, !"_ZN4core3fmt9Arguments16new_v1_formatted17hea2ae333548f7201E"} | |
!133 = !{!134, !135, !136} | |
!134 = distinct !{!134, !132, !"_ZN4core3fmt9Arguments16new_v1_formatted17hea2ae333548f7201E: argument 1"} | |
!135 = distinct !{!135, !132, !"_ZN4core3fmt9Arguments16new_v1_formatted17hea2ae333548f7201E: argument 2"} | |
!136 = distinct !{!136, !132, !"_ZN4core3fmt9Arguments16new_v1_formatted17hea2ae333548f7201E: argument 3"} | |
!137 = !{!138} | |
!138 = distinct !{!138, !139, !"_ZN4core3fmt9Arguments16new_v1_formatted17hea2ae333548f7201E: argument 0"} | |
!139 = distinct !{!139, !"_ZN4core3fmt9Arguments16new_v1_formatted17hea2ae333548f7201E"} | |
!140 = !{!141, !142, !143} | |
!141 = distinct !{!141, !139, !"_ZN4core3fmt9Arguments16new_v1_formatted17hea2ae333548f7201E: argument 1"} | |
!142 = distinct !{!142, !139, !"_ZN4core3fmt9Arguments16new_v1_formatted17hea2ae333548f7201E: argument 2"} | |
!143 = distinct !{!143, !139, !"_ZN4core3fmt9Arguments16new_v1_formatted17hea2ae333548f7201E: argument 3"} | |
!144 = !{!"branch_weights", i32 100000000, i32 1} | |
!145 = !{!146} | |
!146 = distinct !{!146, !147, !"_ZN4core3fmt9Arguments16new_v1_formatted17hea2ae333548f7201E: argument 0"} | |
!147 = distinct !{!147, !"_ZN4core3fmt9Arguments16new_v1_formatted17hea2ae333548f7201E"} | |
!148 = !{!149, !150, !151} | |
!149 = distinct !{!149, !147, !"_ZN4core3fmt9Arguments16new_v1_formatted17hea2ae333548f7201E: argument 1"} | |
!150 = distinct !{!150, !147, !"_ZN4core3fmt9Arguments16new_v1_formatted17hea2ae333548f7201E: argument 2"} | |
!151 = distinct !{!151, !147, !"_ZN4core3fmt9Arguments16new_v1_formatted17hea2ae333548f7201E: argument 3"} | |
!152 = !{!"branch_weights", i32 500000000, i32 1000000000} | |
!153 = !{!154} | |
!154 = distinct !{!154, !155, !"_ZN4test14pairwise_diffs17hb230db748b916eb8E: argument 0"} | |
!155 = distinct !{!155, !"_ZN4test14pairwise_diffs17hb230db748b916eb8E"} | |
!156 = !{!"branch_weights", i32 100000000, i32 500000000} | |
!157 = !{!"branch_weights", i32 0, i32 1000000000} | |
!158 = !{!159} | |
!159 = distinct !{!159, !160, !"_ZN4test4Vec312squared_norm17h432dc8574a0bf316E: argument 0"} | |
!160 = distinct !{!160, !"_ZN4test4Vec312squared_norm17h432dc8574a0bf316E"} | |
!161 = !{!162} | |
!162 = distinct !{!162, !163, !"_ZN4test10magnitudes17h62e2ac6bcb7d113bE: argument 0"} | |
!163 = distinct !{!163, !"_ZN4test10magnitudes17h62e2ac6bcb7d113bE"} | |
!164 = !{!"VP", i32 1, i64 500000000, i64 9, i64 500000000} | |
!165 = !{!"branch_weights", i32 0, i32 500000000} | |
!166 = !{!167, !169} | |
!167 = distinct !{!167, !168, !"_ZN53_$LT$$u5b$T$u5d$$u20$as$u20$core..slice..SliceExt$GT$12split_at_mut17he3b8c5c64a2604f5E: argument 0"} | |
!168 = distinct !{!168, !"_ZN53_$LT$$u5b$T$u5d$$u20$as$u20$core..slice..SliceExt$GT$12split_at_mut17he3b8c5c64a2604f5E"} | |
!169 = distinct !{!169, !170, !"_ZN5alloc5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$12split_at_mut17he29347520c8c9a7dE: argument 0"} | |
!170 = distinct !{!170, !"_ZN5alloc5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$12split_at_mut17he29347520c8c9a7dE"} | |
!171 = !{!172} | |
!172 = distinct !{!172, !173, !"_ZN4core3cmp5impls55_$LT$impl$u20$core..cmp..PartialOrd$u20$for$u20$i32$GT$2lt17h646f7dca28d0151aE: argument 0"} | |
!173 = distinct !{!173, !"_ZN4core3cmp5impls55_$LT$impl$u20$core..cmp..PartialOrd$u20$for$u20$i32$GT$2lt17h646f7dca28d0151aE"} | |
!174 = !{!175} | |
!175 = distinct !{!175, !173, !"_ZN4core3cmp5impls55_$LT$impl$u20$core..cmp..PartialOrd$u20$for$u20$i32$GT$2lt17h646f7dca28d0151aE: argument 1"}3223232323 |
This file contains 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
// The Computer Language Benchmarks Game | |
// http://benchmarksgame.alioth.debian.org/ | |
// | |
// contributed by Cristi Cobzarenco | |
use std::ops::{Add, Sub, Mul}; | |
const PI: f64 = 3.141592653589793; | |
const SOLAR_MASS: f64 = 4.0 * PI * PI; | |
const YEAR: f64 = 365.24; | |
const N_BODIES: usize = 5; | |
const N_PAIRS: usize = N_BODIES * (N_BODIES - 1) / 2; | |
static BODIES: [Planet; N_BODIES] = [ | |
// Sun | |
Planet { | |
pos: Vec3(0.0, 0.0, 0.0), | |
vel: Vec3(0.0, 0.0, 0.0), | |
mass: SOLAR_MASS, | |
}, | |
// Jupiter | |
Planet { | |
pos: Vec3(4.84143144246472090e+00, | |
-1.16032004402742839e+00, | |
-1.03622044471123109e-01), | |
vel: Vec3(1.66007664274403694e-03 * YEAR, | |
7.69901118419740425e-03 * YEAR, | |
-6.90460016972063023e-05 * YEAR), | |
mass: 9.54791938424326609e-04 * SOLAR_MASS, | |
}, | |
// Saturn | |
Planet { | |
pos: Vec3(8.34336671824457987e+00, | |
4.12479856412430479e+00, | |
-4.03523417114321381e-01), | |
vel: Vec3(-2.76742510726862411e-03 * YEAR, | |
4.99852801234917238e-03 * YEAR, | |
2.30417297573763929e-05 * YEAR), | |
mass: 2.85885980666130812e-04 * SOLAR_MASS, | |
}, | |
// Uranus | |
Planet { | |
pos: Vec3(1.28943695621391310e+01, | |
-1.51111514016986312e+01, | |
-2.23307578892655734e-01), | |
vel: Vec3(2.96460137564761618e-03 * YEAR, | |
2.37847173959480950e-03 * YEAR, | |
-2.96589568540237556e-05 * YEAR), | |
mass: 4.36624404335156298e-05 * SOLAR_MASS, | |
}, | |
// Neptune | |
Planet { | |
pos: Vec3(1.53796971148509165e+01, | |
-2.59193146099879641e+01, | |
1.79258772950371181e-01), | |
vel: Vec3(2.68067772490389322e-03 * YEAR, | |
1.62824170038242295e-03 * YEAR, | |
-9.51592254519715870e-05 * YEAR), | |
mass: 5.15138902046611451e-05 * SOLAR_MASS, | |
}, | |
]; | |
/// A 3d Vector type with oveloaded operators to improve readability. | |
#[derive(Clone, Copy)] | |
struct Vec3(pub f64, pub f64, pub f64); | |
impl Vec3 { | |
fn zero() -> Self { Vec3(0.0, 0.0, 0.0) } | |
fn norm(&self) -> f64 { self.squared_norm().sqrt() } | |
fn squared_norm(&self) -> f64 { | |
self.0 * self.0 + self.1 * self.1 + self.2 * self.2 | |
} | |
} | |
impl Add for Vec3 { | |
type Output = Self; | |
fn add(self, rhs: Self) -> Self { | |
Vec3(self.0 + rhs.0, self.1 + rhs.1, self.2 + rhs.2) | |
} | |
} | |
impl Sub for Vec3 { | |
type Output = Self; | |
fn sub(self, rhs: Self) -> Self { | |
Vec3(self.0 - rhs.0, self.1 - rhs.1, self.2 - rhs.2) | |
} | |
} | |
impl Mul<f64> for Vec3 { | |
type Output = Self; | |
fn mul(self, rhs: f64) -> Self { | |
Vec3(self.0 * rhs, self.1 * rhs, self.2 * rhs) | |
} | |
} | |
#[derive(Clone, Copy)] | |
struct Planet { | |
pos: Vec3, | |
vel: Vec3, | |
mass: f64, | |
} | |
/// Computes all pairwise position differences between the planets. | |
fn pairwise_diffs(bodies: &[Planet; N_BODIES], diff: &mut [Vec3; N_PAIRS]) { | |
let mut bodies = bodies.iter(); | |
let mut diff = diff.iter_mut(); | |
while let Some(bi) = bodies.next() { | |
for bj in bodies.clone() { | |
*diff.next().unwrap() = bi.pos - bj.pos; | |
} | |
} | |
} | |
/// Computes the magnitude of the force between each pair of planets. | |
fn magnitudes(diff: &[Vec3; N_PAIRS], dt: f64, mag: &mut [f64; N_PAIRS]) { | |
for (mag, diff) in mag.iter_mut().zip(diff.iter()) { | |
let d2 = diff.squared_norm(); | |
*mag = dt / (d2 * d2.sqrt()); | |
} | |
} | |
/// Updates the velocities of the planets by computing their gravitational | |
/// accelerations and performing one step of Euler integration. | |
fn update_velocities(bodies: &mut [Planet; N_BODIES], dt: f64, | |
diff: &mut [Vec3; N_PAIRS], mag: &mut [f64; N_PAIRS]) { | |
pairwise_diffs(bodies, diff); | |
magnitudes(&diff, dt, mag); | |
let mut bodies = &mut bodies[..]; | |
let mut mag = mag.iter(); | |
let mut diff = diff.iter(); | |
while let Some(bi) = shift_mut_ref(&mut bodies) { | |
for bj in bodies.iter_mut() { | |
let diff = *diff.next().unwrap(); | |
let mag = *mag.next().unwrap(); | |
bi.vel = bi.vel - diff * (bj.mass * mag); | |
bj.vel = bj.vel + diff * (bi.mass * mag); | |
} | |
} | |
} | |
/// Advances the solar system by one timestep by first updating the | |
/// velocities and then integrating the positions using the updated velocities. | |
/// | |
/// Note: the `diff` & `mag` arrays are effectively scratch space. They're | |
/// provided as arguments to avoid re-zeroing them every time `advance` is | |
/// called. | |
fn advance(mut bodies: &mut [Planet; N_BODIES], dt: f64, | |
diff: &mut [Vec3; N_PAIRS], mag: &mut [f64; N_PAIRS]) { | |
update_velocities(bodies, dt, diff, mag); | |
for body in bodies.iter_mut() { | |
body.pos = body.pos + body.vel * dt; | |
} | |
} | |
/// Computes the total energy of the solar system. | |
fn energy(bodies: &[Planet; N_BODIES]) -> f64 { | |
let mut e = 0.0; | |
let mut bodies = bodies.iter(); | |
while let Some(bi) = bodies.next() { | |
e += bi.vel.squared_norm() * bi.mass / 2.0 | |
- bi.mass * bodies.clone() | |
.map(|bj| bj.mass / (bi.pos - bj.pos).norm()) | |
.fold(0.0, |a, b| a + b); | |
} | |
e | |
} | |
/// Offsets the sun's velocity to make the overall momentum of the system zero. | |
fn offset_momentum(bodies: &mut [Planet; N_BODIES]) { | |
let p = bodies.iter().fold(Vec3::zero(), |v, b| v + b.vel * b.mass); | |
bodies[0].vel = p * (-1.0 / bodies[0].mass); | |
} | |
fn main() { | |
let n = std::env::args_os().nth(1) | |
.and_then(|s| s.into_string().ok()) | |
.and_then(|n| n.parse().ok()) | |
.unwrap_or(1000); | |
println!("{}", n); | |
let mut bodies = BODIES; | |
let mut diff = [Vec3::zero(); N_PAIRS]; | |
let mut mag = [0.0f64; N_PAIRS]; | |
offset_momentum(&mut bodies); | |
println!("{:.9}", energy(&bodies)); | |
for _ in (0..n) { | |
advance(&mut bodies, 0.01, &mut diff, &mut mag); | |
} | |
println!("{:.9}", energy(&bodies)); | |
} | |
/// Pop a mutable reference off the head of a slice, mutating the slice to no | |
/// longer contain the mutable reference. | |
fn shift_mut_ref<'a, T>(r: &mut &'a mut [T]) -> Option<&'a mut T> { | |
if r.len() == 0 { return None } | |
let tmp = std::mem::replace(r, &mut []); | |
let (h, t) = tmp.split_at_mut(1); | |
*r = t; | |
Some(&mut h[0]) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment