; LLVM IR from OAID/AutoKernel :: AutoSearch/src/adams2019 (LoopNest)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"struct.std::_Rb_tree_const_iterator" = type { ptr }
%"class.Halide::Internal::Voidifier" = type { i8 }
%"struct.Halide::Internal::ErrorReport" = type <{ %"class.std::__cxx11::basic_ostringstream", i32, [4 x i8] }>
%"class.std::__cxx11::basic_ostringstream" = type { %"class.std::basic_ostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.__gnu_cxx::__normal_iterator.54" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.78" = type { ptr }
%"struct.PerfectHashMap<Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage, Halide::Internal::ScheduleFeatures>::iterator" = type { ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.97" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.108" = type { ptr }
%"class.std::vector.114" = type { %"struct.std::_Vector_base.115" }
%"struct.std::_Vector_base.115" = type { %"struct.std::_Vector_base<const Halide::Internal::Autoscheduler::FunctionDAG::Edge *, std::allocator<const Halide::Internal::Autoscheduler::FunctionDAG::Edge *>>::_Vector_impl" }
%"struct.std::_Vector_base<const Halide::Internal::Autoscheduler::FunctionDAG::Edge *, std::allocator<const Halide::Internal::Autoscheduler::FunctionDAG::Edge *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const Halide::Internal::Autoscheduler::FunctionDAG::Edge *, std::allocator<const Halide::Internal::Autoscheduler::FunctionDAG::Edge *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const Halide::Internal::Autoscheduler::FunctionDAG::Edge *, std::allocator<const Halide::Internal::Autoscheduler::FunctionDAG::Edge *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::set" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<const Halide::Internal::Autoscheduler::FunctionDAG::Node *, const Halide::Internal::Autoscheduler::FunctionDAG::Node *, std::_Identity<const Halide::Internal::Autoscheduler::FunctionDAG::Node *>, std::less<const Halide::Internal::Autoscheduler::FunctionDAG::Node *>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<const Halide::Internal::Autoscheduler::FunctionDAG::Node *, const Halide::Internal::Autoscheduler::FunctionDAG::Node *, std::_Identity<const Halide::Internal::Autoscheduler::FunctionDAG::Node *>, std::less<const Halide::Internal::Autoscheduler::FunctionDAG::Node *>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"struct.std::pair" = type <{ %"struct.std::_Rb_tree_const_iterator", i8, [7 x i8] }>
%"class.__gnu_cxx::__normal_iterator.119" = type { ptr }
%"class.std::vector.120" = type { %"struct.std::_Vector_base.121" }
%"struct.std::_Vector_base.121" = type { %"struct.std::_Vector_base<const Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage *, std::allocator<const Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage *>>::_Vector_impl" }
%"struct.std::_Vector_base<const Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage *, std::allocator<const Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage *, std::allocator<const Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage *, std::allocator<const Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.125" = type { %"struct.std::_Vector_base.126" }
%"struct.std::_Vector_base.126" = type { %"struct.std::_Vector_base<std::pair<Halide::Internal::Autoscheduler::LoadJacobian, Halide::Internal::Autoscheduler::FunctionDAG::Node *>, std::allocator<std::pair<Halide::Internal::Autoscheduler::LoadJacobian, Halide::Internal::Autoscheduler::FunctionDAG::Node *>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<Halide::Internal::Autoscheduler::LoadJacobian, Halide::Internal::Autoscheduler::FunctionDAG::Node *>, std::allocator<std::pair<Halide::Internal::Autoscheduler::LoadJacobian, Halide::Internal::Autoscheduler::FunctionDAG::Node *>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<Halide::Internal::Autoscheduler::LoadJacobian, Halide::Internal::Autoscheduler::FunctionDAG::Node *>, std::allocator<std::pair<Halide::Internal::Autoscheduler::LoadJacobian, Halide::Internal::Autoscheduler::FunctionDAG::Node *>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<Halide::Internal::Autoscheduler::LoadJacobian, Halide::Internal::Autoscheduler::FunctionDAG::Node *>, std::allocator<std::pair<Halide::Internal::Autoscheduler::LoadJacobian, Halide::Internal::Autoscheduler::FunctionDAG::Node *>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.130" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.138" = type { ptr }
%"class.Halide::Internal::Autoscheduler::LoadJacobian" = type { %"class.std::vector.131", i64 }
%"class.std::vector.131" = type { %"struct.std::_Vector_base.132" }
%"struct.std::_Vector_base.132" = type { %"struct.std::_Vector_base<std::vector<Halide::Internal::Autoscheduler::OptionalRational>, std::allocator<std::vector<Halide::Internal::Autoscheduler::OptionalRational>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<Halide::Internal::Autoscheduler::OptionalRational>, std::allocator<std::vector<Halide::Internal::Autoscheduler::OptionalRational>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<Halide::Internal::Autoscheduler::OptionalRational>, std::allocator<std::vector<Halide::Internal::Autoscheduler::OptionalRational>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<Halide::Internal::Autoscheduler::OptionalRational>, std::allocator<std::vector<Halide::Internal::Autoscheduler::OptionalRational>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.Halide::Internal::Autoscheduler::OptionalRational" = type { i8, i64, i64 }
%"class.Halide::Internal::Autoscheduler::Span" = type <{ i64, i64, i8, [7 x i8] }>
%"struct.PerfectHashMap<Halide::Internal::Autoscheduler::FunctionDAG::Node, long>::const_iterator" = type { ptr, ptr }
%"struct.Halide::Internal::Autoscheduler::LoopNest" = type <{ %"class.Halide::Internal::RefCount", [4 x i8], %"class.std::vector.3", %"class.std::vector.8", %class.PerfectHashMap, %"class.std::set", %class.PerfectHashMap.21, ptr, ptr, i8, i8, i8, i8, i32, i32, [4 x i8] }>
%"class.Halide::Internal::RefCount" = type { %"struct.std::atomic" }
%"struct.std::atomic" = type { %"struct.std::__atomic_base" }
%"struct.std::__atomic_base" = type { i32 }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<long, std::allocator<long>>::_Vector_impl" }
%"struct.std::_Vector_base<long, std::allocator<long>>::_Vector_impl" = type { %"struct.std::_Vector_base<long, std::allocator<long>>::_Vector_impl_data" }
%"struct.std::_Vector_base<long, std::allocator<long>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<Halide::Internal::IntrusivePtr<const Halide::Internal::Autoscheduler::LoopNest>, std::allocator<Halide::Internal::IntrusivePtr<const Halide::Internal::Autoscheduler::LoopNest>>>::_Vector_impl" }
%"struct.std::_Vector_base<Halide::Internal::IntrusivePtr<const Halide::Internal::Autoscheduler::LoopNest>, std::allocator<Halide::Internal::IntrusivePtr<const Halide::Internal::Autoscheduler::LoopNest>>>::_Vector_impl" = type { %"struct.std::_Vector_base<Halide::Internal::IntrusivePtr<const Halide::Internal::Autoscheduler::LoopNest>, std::allocator<Halide::Internal::IntrusivePtr<const Halide::Internal::Autoscheduler::LoopNest>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Halide::Internal::IntrusivePtr<const Halide::Internal::Autoscheduler::LoopNest>, std::allocator<Halide::Internal::IntrusivePtr<const Halide::Internal::Autoscheduler::LoopNest>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.PerfectHashMap = type { %"class.std::vector.13", i32, i32 }
%"class.std::vector.13" = type { %"struct.std::_Vector_base.14" }
%"struct.std::_Vector_base.14" = type { %"struct.std::_Vector_base<std::pair<const Halide::Internal::Autoscheduler::FunctionDAG::Node *, long>, std::allocator<std::pair<const Halide::Internal::Autoscheduler::FunctionDAG::Node *, long>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<const Halide::Internal::Autoscheduler::FunctionDAG::Node *, long>, std::allocator<std::pair<const Halide::Internal::Autoscheduler::FunctionDAG::Node *, long>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<const Halide::Internal::Autoscheduler::FunctionDAG::Node *, long>, std::allocator<std::pair<const Halide::Internal::Autoscheduler::FunctionDAG::Node *, long>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<const Halide::Internal::Autoscheduler::FunctionDAG::Node *, long>, std::allocator<std::pair<const Halide::Internal::Autoscheduler::FunctionDAG::Node *, long>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.PerfectHashMap.21 = type { %"class.std::vector.22", i32, i32 }
%"class.std::vector.22" = type { %"struct.std::_Vector_base.23" }
%"struct.std::_Vector_base.23" = type { %"struct.std::_Vector_base<std::pair<const Halide::Internal::Autoscheduler::FunctionDAG::Node *, Halide::Internal::IntrusivePtr<const Halide::Internal::Autoscheduler::BoundContents>>, std::allocator<std::pair<const Halide::Internal::Autoscheduler::FunctionDAG::Node *, Halide::Internal::IntrusivePtr<const Halide::Internal::Autoscheduler::BoundContents>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<const Halide::Internal::Autoscheduler::FunctionDAG::Node *, Halide::Internal::IntrusivePtr<const Halide::Internal::Autoscheduler::BoundContents>>, std::allocator<std::pair<const Halide::Internal::Autoscheduler::FunctionDAG::Node *, Halide::Internal::IntrusivePtr<const Halide::Internal::Autoscheduler::BoundContents>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<const Halide::Internal::Autoscheduler::FunctionDAG::Node *, Halide::Internal::IntrusivePtr<const Halide::Internal::Autoscheduler::BoundContents>>, std::allocator<std::pair<const Halide::Internal::Autoscheduler::FunctionDAG::Node *, Halide::Internal::IntrusivePtr<const Halide::Internal::Autoscheduler::BoundContents>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<const Halide::Internal::Autoscheduler::FunctionDAG::Node *, Halide::Internal::IntrusivePtr<const Halide::Internal::Autoscheduler::BoundContents>>, std::allocator<std::pair<const Halide::Internal::Autoscheduler::FunctionDAG::Node *, Halide::Internal::IntrusivePtr<const Halide::Internal::Autoscheduler::BoundContents>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage" = type { ptr, i32, %"class.std::vector.56", i8, i32, %"struct.Halide::Internal::PipelineFeatures", %"class.Halide::Stage", %"class.std::__cxx11::basic_string", i32, i32, %"class.std::vector.47", %"class.std::vector.67" }
%"class.std::vector.56" = type { %"struct.std::_Vector_base.57" }
%"struct.std::_Vector_base.57" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop>>::_Vector_impl" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop>>::_Vector_impl" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.Halide::Internal::PipelineFeatures" = type { [7 x i32], [24 x [7 x i32]], [4 x [7 x i32]], [4 x [7 x i32]], [4 x [7 x i32]], [4 x [7 x i32]] }
%"class.Halide::Stage" = type { %"class.Halide::Internal::Function", %"class.Halide::Internal::Definition", i64, %"class.std::vector.62" }
%"class.Halide::Internal::Function" = type { %"struct.Halide::Internal::FunctionPtr" }
%"struct.Halide::Internal::FunctionPtr" = type <{ %"struct.Halide::Internal::IntrusivePtr", ptr, i32, [4 x i8] }>
%"struct.Halide::Internal::IntrusivePtr" = type { ptr }
%"class.Halide::Internal::Definition" = type { %"struct.Halide::Internal::IntrusivePtr.61" }
%"struct.Halide::Internal::IntrusivePtr.61" = type { ptr }
%"class.std::vector.62" = type { %"struct.std::_Vector_base.63" }
%"struct.std::_Vector_base.63" = type { %"struct.std::_Vector_base<Halide::Var, std::allocator<Halide::Var>>::_Vector_impl" }
%"struct.std::_Vector_base<Halide::Var, std::allocator<Halide::Var>>::_Vector_impl" = type { %"struct.std::_Vector_base<Halide::Var, std::allocator<Halide::Var>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Halide::Var, std::allocator<Halide::Var>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.47" = type { %"struct.std::_Vector_base.48" }
%"struct.std::_Vector_base.48" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Edge *, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Edge *>>::_Vector_impl" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Edge *, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Edge *>>::_Vector_impl" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Edge *, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Edge *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Edge *, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Edge *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.67" = type { %"struct.std::_Bvector_base" }
%"struct.std::_Bvector_base" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" = type { %"struct.std::_Bit_iterator", %"struct.std::_Bit_iterator", ptr }
%"struct.std::_Bit_iterator" = type { %"struct.std::_Bit_iterator_base.base", [4 x i8] }
%"struct.std::_Bit_iterator_base.base" = type <{ ptr, i32 }>
%"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop" = type { %"class.std::__cxx11::basic_string", i8, i8, %"struct.Halide::Expr", %"struct.Halide::Expr", i32, i8, i32, i8, i64, i64, %"class.std::__cxx11::basic_string" }
%"struct.Halide::Expr" = type { %"struct.Halide::Internal::IRHandle" }
%"struct.Halide::Internal::IRHandle" = type { %"struct.Halide::Internal::IntrusivePtr.79" }
%"struct.Halide::Internal::IntrusivePtr.79" = type { ptr }
%"struct.Halide::MachineParams" = type <{ i32, [4 x i8], i64, float, [4 x i8] }>
%"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node" = type { ptr, %"class.Halide::Internal::Function", double, %"class.std::vector.27", %"class.std::vector.32", %"class.std::vector.37", i8, %"class.std::vector.42", %"class.std::vector.47", i32, i32, i32, i32, i8, i8, i8, i8, i8, %"class.std::unique_ptr" }
%"class.std::vector.27" = type { %"struct.std::_Vector_base.28" }
%"struct.std::_Vector_base.28" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::SymbolicInterval, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::SymbolicInterval>>::_Vector_impl" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::SymbolicInterval, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::SymbolicInterval>>::_Vector_impl" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::SymbolicInterval, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::SymbolicInterval>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::SymbolicInterval, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::SymbolicInterval>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.32" = type { %"struct.std::_Vector_base.33" }
%"struct.std::_Vector_base.33" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::Span, std::allocator<Halide::Internal::Autoscheduler::Span>>::_Vector_impl" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::Span, std::allocator<Halide::Internal::Autoscheduler::Span>>::_Vector_impl" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::Span, std::allocator<Halide::Internal::Autoscheduler::Span>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::Span, std::allocator<Halide::Internal::Autoscheduler::Span>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.37" = type { %"struct.std::_Vector_base.38" }
%"struct.std::_Vector_base.38" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Node::RegionComputedInfo, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Node::RegionComputedInfo>>::_Vector_impl" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Node::RegionComputedInfo, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Node::RegionComputedInfo>>::_Vector_impl" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Node::RegionComputedInfo, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Node::RegionComputedInfo>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Node::RegionComputedInfo, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Node::RegionComputedInfo>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.42" = type { %"struct.std::_Vector_base.43" }
%"struct.std::_Vector_base.43" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage>>::_Vector_impl" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage>>::_Vector_impl" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage, std::allocator<Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.53" }
%"struct.std::_Head_base.53" = type { ptr }
%"struct.Halide::Internal::ScheduleFeatures" = type { double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double }
%"struct.Halide::Internal::Autoscheduler::LoopNest::Sites" = type <{ ptr, ptr, ptr, ptr, ptr, i8, [7 x i8] }>
%"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge" = type { %"class.std::vector.98", ptr, ptr, i32, i8, %"class.std::vector.103" }
%"class.std::vector.98" = type { %"struct.std::_Vector_base.99" }
%"struct.std::_Vector_base.99" = type { %"struct.std::_Vector_base<std::pair<Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo, Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo>, std::allocator<std::pair<Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo, Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo, Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo>, std::allocator<std::pair<Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo, Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo, Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo>, std::allocator<std::pair<Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo, Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo, Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo>, std::allocator<std::pair<Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo, Halide::Internal::Autoscheduler::FunctionDAG::Edge::BoundInfo>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.103" = type { %"struct.std::_Vector_base.104" }
%"struct.std::_Vector_base.104" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::LoadJacobian, std::allocator<Halide::Internal::Autoscheduler::LoadJacobian>>::_Vector_impl" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::LoadJacobian, std::allocator<Halide::Internal::Autoscheduler::LoadJacobian>>::_Vector_impl" = type { %"struct.std::_Vector_base<Halide::Internal::Autoscheduler::LoadJacobian, std::allocator<Halide::Internal::Autoscheduler::LoadJacobian>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Halide::Internal::Autoscheduler::LoadJacobian, std::allocator<Halide::Internal::Autoscheduler::LoadJacobian>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::pair.136" = type { %"class.Halide::Internal::Autoscheduler::LoadJacobian", ptr }

@.str.3 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #0

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIlSaIlEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEES9_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, ptr } @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterE5beginEv(ptr noundef nonnull align 8 dereferenceable(32)) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterE14const_iteratorneERKS7_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { ptr, ptr } @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterE3endEv(ptr noundef nonnull align 8 dereferenceable(32)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterE14const_iterator3keyEv(ptr noundef nonnull align 8 dereferenceable(16)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterE14const_iteratorppEi(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler8LoopNest7is_rootEv(ptr noundef nonnull align 8 dereferenceable(196)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(1368) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(1368) ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #2 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZNK6Halide8Internal13Autoscheduler8LoopNest16compute_featuresERKNS1_11FunctionDAGERKNS_13MachineParamsERK14PerfectHashMapINS3_4Node5StageENS2_5SitesELi4E22PerfectHashMapAsserterEllPKS2_SI_RSH_PlPS9_ISB_NS0_16ScheduleFeaturesELi4ESD_E(ptr noundef nonnull align 8 dereferenceable(196) %0, ptr noundef nonnull align 8 dereferenceable(48) %1, ptr noundef nonnull align 8 dereferenceable(20) %2, ptr noundef nonnull align 8 dereferenceable(32) %3, i64 noundef %4, i64 noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef nonnull align 8 dereferenceable(196) %8, ptr noundef %9, ptr noundef %10) #4 align 2 personality ptr @__gxx_personality_v0 {
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca i64, align 8
  %17 = alloca i64, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca i64, align 8
  %24 = alloca i64, align 8
  %25 = alloca i64, align 8
  %26 = alloca i8, align 1
  %27 = alloca i32, align 4
  %28 = alloca i64, align 8
  %29 = alloca i64, align 8
  %30 = alloca ptr, align 8
  %31 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %32 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %33 = alloca i32, align 4
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca i64, align 8
  %37 = alloca %"class.Halide::Internal::Voidifier", align 1
  %38 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %39 = alloca i1, align 1
  %40 = alloca i1, align 1
  %41 = alloca ptr, align 8
  %42 = alloca i32, align 4
  %43 = alloca ptr, align 8
  %44 = alloca i8, align 1
  %45 = alloca i32, align 4
  %46 = alloca ptr, align 8
  %47 = alloca i64, align 8
  %48 = alloca i32, align 4
  %49 = alloca ptr, align 8
  %50 = alloca i64, align 8
  %51 = alloca i32, align 4
  %52 = alloca ptr, align 8
  %53 = alloca %"class.__gnu_cxx::__normal_iterator.54", align 8
  %54 = alloca %"class.__gnu_cxx::__normal_iterator.54", align 8
  %55 = alloca ptr, align 8
  %56 = alloca ptr, align 8
  %57 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %58 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %59 = alloca ptr, align 8
  %60 = alloca ptr, align 8
  %61 = alloca ptr, align 8
  %62 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %63 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %64 = alloca ptr, align 8
  %65 = alloca ptr, align 8
  %66 = alloca %"class.__gnu_cxx::__normal_iterator.78", align 8
  %67 = alloca %"class.__gnu_cxx::__normal_iterator.78", align 8
  %68 = alloca ptr, align 8
  %69 = alloca ptr, align 8
  %70 = alloca ptr, align 8
  %71 = alloca %"class.__gnu_cxx::__normal_iterator.54", align 8
  %72 = alloca %"class.__gnu_cxx::__normal_iterator.54", align 8
  %73 = alloca ptr, align 8
  %74 = alloca ptr, align 8
  %75 = alloca %"struct.PerfectHashMap<Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage, Halide::Internal::ScheduleFeatures>::iterator", align 8
  %76 = alloca %"struct.PerfectHashMap<Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage, Halide::Internal::ScheduleFeatures>::iterator", align 8
  %77 = alloca ptr, align 8
  %78 = alloca ptr, align 8
  %79 = alloca ptr, align 8
  %80 = alloca ptr, align 8
  %81 = alloca i32, align 4
  %82 = alloca ptr, align 8
  %83 = alloca ptr, align 8
  %84 = alloca i64, align 8
  %85 = alloca i32, align 4
  %86 = alloca i32, align 4
  %87 = alloca ptr, align 8
  %88 = alloca i64, align 8
  %89 = alloca ptr, align 8
  %90 = alloca %"class.__gnu_cxx::__normal_iterator.97", align 8
  %91 = alloca %"class.__gnu_cxx::__normal_iterator.97", align 8
  %92 = alloca ptr, align 8
  %93 = alloca double, align 8
  %94 = alloca i64, align 8
  %95 = alloca %"class.Halide::Internal::Voidifier", align 1
  %96 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %97 = alloca i1, align 1
  %98 = alloca i1, align 1
  %99 = alloca ptr, align 8
  %100 = alloca i64, align 8
  %101 = alloca ptr, align 8
  %102 = alloca %"class.__gnu_cxx::__normal_iterator.108", align 8
  %103 = alloca %"class.__gnu_cxx::__normal_iterator.108", align 8
  %104 = alloca ptr, align 8
  %105 = alloca i8, align 1
  %106 = alloca i8, align 1
  %107 = alloca i8, align 1
  %108 = alloca ptr, align 8
  %109 = alloca i64, align 8
  %110 = alloca i32, align 4
  %111 = alloca i64, align 8
  %112 = alloca i64, align 8
  %113 = alloca ptr, align 8
  %114 = alloca i64, align 8
  %115 = alloca %"class.std::vector.114", align 8
  %116 = alloca %"class.std::set", align 8
  %117 = alloca ptr, align 8
  %118 = alloca %"class.__gnu_cxx::__normal_iterator.97", align 8
  %119 = alloca %"class.__gnu_cxx::__normal_iterator.97", align 8
  %120 = alloca ptr, align 8
  %121 = alloca ptr, align 8
  %122 = alloca %"struct.std::pair", align 8
  %123 = alloca ptr, align 8
  %124 = alloca ptr, align 8
  %125 = alloca i64, align 8
  %126 = alloca i64, align 8
  %127 = alloca i64, align 8
  %128 = alloca i32, align 4
  %129 = alloca i32, align 4
  %130 = alloca i64, align 8
  %131 = alloca ptr, align 8
  %132 = alloca %"class.__gnu_cxx::__normal_iterator.119", align 8
  %133 = alloca %"class.__gnu_cxx::__normal_iterator.119", align 8
  %134 = alloca ptr, align 8
  %135 = alloca ptr, align 8
  %136 = alloca %"class.__gnu_cxx::__normal_iterator.97", align 8
  %137 = alloca %"class.__gnu_cxx::__normal_iterator.97", align 8
  %138 = alloca ptr, align 8
  %139 = alloca ptr, align 8
  %140 = alloca i32, align 4
  %141 = alloca ptr, align 8
  %142 = alloca i64, align 8
  %143 = alloca ptr, align 8
  %144 = alloca %"class.__gnu_cxx::__normal_iterator.54", align 8
  %145 = alloca %"class.__gnu_cxx::__normal_iterator.54", align 8
  %146 = alloca ptr, align 8
  %147 = alloca ptr, align 8
  %148 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %149 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %150 = alloca ptr, align 8
  %151 = alloca ptr, align 8
  %152 = alloca ptr, align 8
  %153 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %154 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %155 = alloca ptr, align 8
  %156 = alloca ptr, align 8
  %157 = alloca %"class.__gnu_cxx::__normal_iterator.78", align 8
  %158 = alloca %"class.__gnu_cxx::__normal_iterator.78", align 8
  %159 = alloca ptr, align 8
  %160 = alloca ptr, align 8
  %161 = alloca ptr, align 8
  %162 = alloca %"class.__gnu_cxx::__normal_iterator.54", align 8
  %163 = alloca %"class.__gnu_cxx::__normal_iterator.54", align 8
  %164 = alloca ptr, align 8
  %165 = alloca ptr, align 8
  %166 = alloca i8, align 1
  %167 = alloca ptr, align 8
  %168 = alloca i64, align 8
  %169 = alloca ptr, align 8
  %170 = alloca i64, align 8
  %171 = alloca i64, align 8
  %172 = alloca i64, align 8
  %173 = alloca double, align 8
  %174 = alloca double, align 8
  %175 = alloca double, align 8
  %176 = alloca double, align 8
  %177 = alloca double, align 8
  %178 = alloca double, align 8
  %179 = alloca double, align 8
  %180 = alloca ptr, align 8
  %181 = alloca ptr, align 8
  %182 = alloca ptr, align 8
  %183 = alloca i64, align 8
  %184 = alloca %"class.Halide::Internal::Voidifier", align 1
  %185 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %186 = alloca i1, align 1
  %187 = alloca i1, align 1
  %188 = alloca %"class.std::vector.120", align 8
  %189 = alloca %"class.std::vector.125", align 8
  %190 = alloca %"class.std::set", align 8
  %191 = alloca ptr, align 8
  %192 = alloca ptr, align 8
  %193 = alloca ptr, align 8
  %194 = alloca %"class.__gnu_cxx::__normal_iterator.97", align 8
  %195 = alloca %"class.__gnu_cxx::__normal_iterator.97", align 8
  %196 = alloca ptr, align 8
  %197 = alloca %"class.Halide::Internal::Voidifier", align 1
  %198 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %199 = alloca i1, align 1
  %200 = alloca i1, align 1
  %201 = alloca ptr, align 8
  %202 = alloca i8, align 1
  %203 = alloca ptr, align 8
  %204 = alloca %"class.__gnu_cxx::__normal_iterator.130", align 8
  %205 = alloca %"class.__gnu_cxx::__normal_iterator.130", align 8
  %206 = alloca ptr, align 8
  %207 = alloca %"class.std::vector.125", align 8
  %208 = alloca ptr, align 8
  %209 = alloca %"class.__gnu_cxx::__normal_iterator.138", align 8
  %210 = alloca %"class.__gnu_cxx::__normal_iterator.138", align 8
  %211 = alloca ptr, align 8
  %212 = alloca ptr, align 8
  %213 = alloca %"class.__gnu_cxx::__normal_iterator.130", align 8
  %214 = alloca %"class.__gnu_cxx::__normal_iterator.130", align 8
  %215 = alloca ptr, align 8
  %216 = alloca %"class.Halide::Internal::Autoscheduler::LoadJacobian", align 8
  %217 = alloca ptr, align 8
  %218 = alloca ptr, align 8
  %219 = alloca ptr, align 8
  %220 = alloca ptr, align 8
  %221 = alloca ptr, align 8
  %222 = alloca ptr, align 8
  %223 = alloca ptr, align 8
  %224 = alloca i64, align 8
  %225 = alloca i64, align 8
  %226 = alloca i64, align 8
  %227 = alloca i64, align 8
  %228 = alloca i64, align 8
  %229 = alloca i64, align 8
  %230 = alloca i64, align 8
  %231 = alloca i64, align 8
  %232 = alloca %"class.Halide::Internal::Voidifier", align 1
  %233 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %234 = alloca i1, align 1
  %235 = alloca i1, align 1
  %236 = alloca %"class.Halide::Internal::Voidifier", align 1
  %237 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %238 = alloca i1, align 1
  %239 = alloca i1, align 1
  %240 = alloca ptr, align 8
  %241 = alloca %"class.__gnu_cxx::__normal_iterator.138", align 8
  %242 = alloca %"class.__gnu_cxx::__normal_iterator.138", align 8
  %243 = alloca ptr, align 8
  %244 = alloca double, align 8
  %245 = alloca i8, align 1
  %246 = alloca i8, align 1
  %247 = alloca i8, align 1
  %248 = alloca i8, align 1
  %249 = alloca i8, align 1
  %250 = alloca i32, align 4
  %251 = alloca [5 x i32], align 16
  %252 = alloca i32, align 4
  %253 = alloca %"struct.Halide::Internal::Autoscheduler::OptionalRational", align 8
  %254 = alloca i32, align 4
  %255 = alloca %"struct.Halide::Internal::Autoscheduler::OptionalRational", align 8
  %256 = alloca i64, align 8
  %257 = alloca i64, align 8
  %258 = alloca i8, align 1
  %259 = alloca i32, align 4
  %260 = alloca %"struct.Halide::Internal::Autoscheduler::OptionalRational", align 8
  %261 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %262 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %263 = alloca %"struct.std::pair", align 8
  %264 = alloca i64, align 8
  %265 = alloca i64, align 8
  %266 = alloca i64, align 8
  %267 = alloca i64, align 8
  %268 = alloca i32, align 4
  %269 = alloca %"class.Halide::Internal::Autoscheduler::Span", align 8
  %270 = alloca %"class.Halide::Internal::Autoscheduler::Span", align 8
  %271 = alloca %"class.Halide::Internal::Autoscheduler::Span", align 8
  %272 = alloca %"class.Halide::Internal::Autoscheduler::Span", align 8
  %273 = alloca %"class.Halide::Internal::Voidifier", align 1
  %274 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %275 = alloca i1, align 1
  %276 = alloca i1, align 1
  %277 = alloca i64, align 8
  %278 = alloca i64, align 8
  %279 = alloca %"class.Halide::Internal::Voidifier", align 1
  %280 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %281 = alloca i1, align 1
  %282 = alloca i1, align 1
  %283 = alloca i64, align 8
  %284 = alloca i64, align 8
  %285 = alloca %"class.Halide::Internal::Voidifier", align 1
  %286 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %287 = alloca i1, align 1
  %288 = alloca i1, align 1
  %289 = alloca i64, align 8
  %290 = alloca i64, align 8
  %291 = alloca i64, align 8
  %292 = alloca i64, align 8
  %293 = alloca i64, align 8
  %294 = alloca i64, align 8
  %295 = alloca i8, align 1
  %296 = alloca i64, align 8
  %297 = alloca ptr, align 8
  %298 = alloca i64, align 8
  %299 = alloca %"class.Halide::Internal::Voidifier", align 1
  %300 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %301 = alloca i1, align 1
  %302 = alloca i1, align 1
  %303 = alloca %"class.Halide::Internal::Voidifier", align 1
  %304 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %305 = alloca i1, align 1
  %306 = alloca i1, align 1
  %307 = alloca %"struct.PerfectHashMap<Halide::Internal::Autoscheduler::FunctionDAG::Node, long>::const_iterator", align 8
  %308 = alloca %"struct.PerfectHashMap<Halide::Internal::Autoscheduler::FunctionDAG::Node, long>::const_iterator", align 8
  %309 = alloca ptr, align 8
  %310 = alloca %"class.Halide::Internal::Voidifier", align 1
  %311 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %312 = alloca i1, align 1
  %313 = alloca i1, align 1
  %314 = alloca ptr, align 8
  %315 = alloca double, align 8
  store ptr %0, ptr %12, align 8, !tbaa !5
  store ptr %1, ptr %13, align 8, !tbaa !5
  store ptr %2, ptr %14, align 8, !tbaa !5
  store ptr %3, ptr %15, align 8, !tbaa !5
  store i64 %4, ptr %16, align 8, !tbaa !9
  store i64 %5, ptr %17, align 8, !tbaa !9
  store ptr %6, ptr %18, align 8, !tbaa !5
  store ptr %7, ptr %19, align 8, !tbaa !5
  store ptr %8, ptr %20, align 8, !tbaa !5
  store ptr %9, ptr %21, align 8, !tbaa !5
  store ptr %10, ptr %22, align 8, !tbaa !5
  %316 = load ptr, ptr %12, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #10
  store i64 0, ptr %23, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #10
  store i64 1, ptr %24, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #10
  store i64 1, ptr %25, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #10
  store i8 0, ptr %26, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #10
  %317 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 2
  %318 = call noundef i64 @_ZNKSt6vectorIlSaIlEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %317) #10
  %319 = trunc i64 %318 to i32
  %320 = sub nsw i32 %319, 1
  store i32 %320, ptr %27, align 4, !tbaa !13
  br label %321

321:                                              ; preds = %394, %11
  %322 = load i32, ptr %27, align 4, !tbaa !13
  %323 = icmp sge i32 %322, 0
  br i1 %323, label %325, label %324

324:                                              ; preds = %321
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #10
  br label %397

325:                                              ; preds = %321
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #10
  %326 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 2
  %327 = load i32, ptr %27, align 4, !tbaa !13
  %328 = sext i32 %327 to i64
  %329 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %326, i64 noundef %328) #10
  %330 = load i64, ptr %329, align 8, !tbaa !9
  store i64 %330, ptr %28, align 8, !tbaa !9
  %331 = load i64, ptr %28, align 8, !tbaa !9
  %332 = load i64, ptr %24, align 8, !tbaa !9
  %333 = mul i64 %332, %331
  store i64 %333, ptr %24, align 8, !tbaa !9
  %334 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 8
  %335 = load ptr, ptr %334, align 8, !tbaa !15
  %336 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %335, i32 0, i32 2
  %337 = load i32, ptr %27, align 4, !tbaa !13
  %338 = sext i32 %337 to i64
  %339 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %336, i64 noundef %338) #10
  %340 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop", ptr %339, i32 0, i32 1
  %341 = load i8, ptr %340, align 8, !tbaa !48, !range !55, !noundef !56
  %342 = trunc i8 %341 to i1
  br i1 %342, label %343, label %388

343:                                              ; preds = %325
  %344 = load i8, ptr %26, align 1, !tbaa !11, !range !55, !noundef !56
  %345 = trunc i8 %344 to i1
  br i1 %345, label %388, label %346

346:                                              ; preds = %343
  %347 = load ptr, ptr %14, align 8, !tbaa !5
  %348 = getelementptr inbounds %"struct.Halide::MachineParams", ptr %347, i32 0, i32 0
  %349 = load i32, ptr %348, align 8, !tbaa !57
  %350 = icmp sgt i32 %349, 1
  br i1 %350, label %351, label %387

351:                                              ; preds = %346
  %352 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 11
  %353 = load i8, ptr %352, align 2, !tbaa !60, !range !55, !noundef !56
  %354 = trunc i8 %353 to i1
  br i1 %354, label %365, label %355

355:                                              ; preds = %351
  %356 = load ptr, ptr %18, align 8, !tbaa !5
  %357 = call noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler8LoopNest7is_rootEv(ptr noundef nonnull align 8 dereferenceable(196) %356)
  br i1 %357, label %358, label %387

358:                                              ; preds = %355
  %359 = load i64, ptr %25, align 8, !tbaa !9
  %360 = load ptr, ptr %14, align 8, !tbaa !5
  %361 = getelementptr inbounds %"struct.Halide::MachineParams", ptr %360, i32 0, i32 0
  %362 = load i32, ptr %361, align 8, !tbaa !57
  %363 = sext i32 %362 to i64
  %364 = icmp slt i64 %359, %363
  br i1 %364, label %365, label %387

365:                                              ; preds = %358, %351
  %366 = load i64, ptr %28, align 8, !tbaa !9
  %367 = load i64, ptr %25, align 8, !tbaa !9
  %368 = mul i64 %367, %366
  store i64 %368, ptr %25, align 8, !tbaa !9
  %369 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 11
  %370 = load i8, ptr %369, align 2, !tbaa !60, !range !55, !noundef !56
  %371 = trunc i8 %370 to i1
  br i1 %371, label %386, label %372

372:                                              ; preds = %365
  %373 = load i64, ptr %25, align 8, !tbaa !9
  %374 = load ptr, ptr %14, align 8, !tbaa !5
  %375 = getelementptr inbounds %"struct.Halide::MachineParams", ptr %374, i32 0, i32 0
  %376 = load i32, ptr %375, align 8, !tbaa !57
  %377 = mul nsw i32 %376, 8
  %378 = sext i32 %377 to i64
  %379 = icmp sgt i64 %373, %378
  br i1 %379, label %380, label %386

380:                                              ; preds = %372
  %381 = load ptr, ptr %14, align 8, !tbaa !5
  %382 = getelementptr inbounds %"struct.Halide::MachineParams", ptr %381, i32 0, i32 0
  %383 = load i32, ptr %382, align 8, !tbaa !57
  %384 = mul nsw i32 %383, 8
  %385 = sext i32 %384 to i64
  store i64 %385, ptr %25, align 8, !tbaa !9
  br label %386

386:                                              ; preds = %380, %372, %365
  br label %387

387:                                              ; preds = %386, %358, %355, %346
  br label %393

388:                                              ; preds = %343, %325
  %389 = load i64, ptr %28, align 8, !tbaa !9
  %390 = icmp ne i64 %389, 1
  br i1 %390, label %391, label %392

391:                                              ; preds = %388
  store i8 1, ptr %26, align 1, !tbaa !11
  br label %392

392:                                              ; preds = %391, %388
  br label %393

393:                                              ; preds = %392, %387
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #10
  br label %394

394:                                              ; preds = %393
  %395 = load i32, ptr %27, align 4, !tbaa !13
  %396 = add nsw i32 %395, -1
  store i32 %396, ptr %27, align 4, !tbaa !13
  br label %321, !llvm.loop !61

397:                                              ; preds = %324
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #10
  %398 = load i64, ptr %16, align 8, !tbaa !9
  %399 = load i64, ptr %24, align 8, !tbaa !9
  %400 = mul nsw i64 %398, %399
  store i64 %400, ptr %29, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #10
  %401 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 5
  store ptr %401, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #10
  %402 = load ptr, ptr %30, align 8, !tbaa !5
  %403 = call ptr @_ZNKSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %402) #10
  %404 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %31, i32 0, i32 0
  store ptr %403, ptr %404, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #10
  %405 = load ptr, ptr %30, align 8, !tbaa !5
  %406 = call ptr @_ZNKSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %405) #10
  %407 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %32, i32 0, i32 0
  store ptr %406, ptr %407, align 8
  br label %408

408:                                              ; preds = %646, %397
  %409 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEES9_(ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef nonnull align 8 dereferenceable(8) %32) #10
  br i1 %409, label %411, label %410

410:                                              ; preds = %408
  store i32 5, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #10
  br label %648

411:                                              ; preds = %408
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #10
  %412 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %31) #10
  %413 = load ptr, ptr %412, align 8, !tbaa !5
  store ptr %413, ptr %34, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #10
  %414 = load ptr, ptr %34, align 8, !tbaa !5
  %415 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Halide8Internal13Autoscheduler8LoopNest10get_boundsEPKNS1_11FunctionDAG4NodeE(ptr noundef nonnull align 8 dereferenceable(196) %316, ptr noundef %414)
  store ptr %415, ptr %35, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #10
  store i64 0, ptr %36, align 8, !tbaa !9
  br label %416

416:                                              ; preds = %642, %411
  %417 = load i64, ptr %36, align 8, !tbaa !9
  %418 = load ptr, ptr %34, align 8, !tbaa !5
  %419 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %418, i32 0, i32 7
  %420 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %419) #10
  %421 = icmp ult i64 %417, %420
  br i1 %421, label %423, label %422

422:                                              ; preds = %416
  store i32 7, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #10
  br label %645

423:                                              ; preds = %416
  %424 = load ptr, ptr %34, align 8, !tbaa !5
  %425 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %424, i32 0, i32 14
  %426 = load i8, ptr %425, align 1, !tbaa !63, !range !55, !noundef !56
  %427 = trunc i8 %426 to i1
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #10
  store i1 false, ptr %39, align 1
  store i1 false, ptr %40, align 1
  br i1 %427, label %429, label %428

428:                                              ; preds = %423
  br label %433

429:                                              ; preds = %423
  call void @llvm.lifetime.start.p0(i64 384, ptr %38) #10
  store i1 true, ptr %39, align 1
  call void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %38, ptr noundef @.str.3, i32 noundef 258, ptr noundef @.str.4, i32 noundef 0)
  store i1 true, ptr %40, align 1
  %430 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %38)
          to label %431 unwind label %469

431:                                              ; preds = %429
  invoke void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %37, ptr noundef nonnull align 8 dereferenceable(380) %430)
          to label %432 unwind label %469

432:                                              ; preds = %431
  br label %433

433:                                              ; preds = %432, %428
  %434 = load i1, ptr %40, align 1
  br i1 %434, label %435, label %436

435:                                              ; preds = %433
  call void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %38)
  br label %436

436:                                              ; preds = %435, %433
  %437 = load i1, ptr %39, align 1
  br i1 %437, label %438, label %439

438:                                              ; preds = %436
  call void @llvm.lifetime.end.p0(i64 384, ptr %38) #10
  br label %439

439:                                              ; preds = %438, %436
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #10
  %440 = load ptr, ptr %22, align 8, !tbaa !5
  %441 = load ptr, ptr %34, align 8, !tbaa !5
  %442 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %441, i32 0, i32 7
  %443 = load i64, ptr %36, align 8, !tbaa !9
  %444 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %442, i64 noundef %443) #10
  %445 = call noundef nonnull align 8 dereferenceable(312) ptr @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE13get_or_createEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %440, ptr noundef %444)
  store ptr %445, ptr %43, align 8, !tbaa !5
  %446 = load i64, ptr %29, align 8, !tbaa !9
  %447 = sitofp i64 %446 to double
  %448 = load ptr, ptr %43, align 8, !tbaa !5
  %449 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %448, i32 0, i32 0
  store double %447, ptr %449, align 8, !tbaa !95
  %450 = load ptr, ptr %43, align 8, !tbaa !5
  %451 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %450, i32 0, i32 2
  store double 1.000000e+00, ptr %451, align 8, !tbaa !97
  %452 = load i64, ptr %29, align 8, !tbaa !9
  %453 = sitofp i64 %452 to double
  %454 = load ptr, ptr %43, align 8, !tbaa !5
  %455 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %454, i32 0, i32 24
  store double %453, ptr %455, align 8, !tbaa !98
  %456 = load ptr, ptr %43, align 8, !tbaa !5
  %457 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %456, i32 0, i32 25
  store double %453, ptr %457, align 8, !tbaa !99
  call void @llvm.lifetime.start.p0(i64 1, ptr %44) #10
  store i8 0, ptr %44, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #10
  store i32 0, ptr %45, align 4, !tbaa !13
  br label %458

458:                                              ; preds = %550, %439
  %459 = load i32, ptr %45, align 4, !tbaa !13
  %460 = load ptr, ptr %34, align 8, !tbaa !5
  %461 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %460, i32 0, i32 7
  %462 = load i64, ptr %36, align 8, !tbaa !9
  %463 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %461, i64 noundef %462) #10
  %464 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %463, i32 0, i32 2
  %465 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %464) #10
  %466 = trunc i64 %465 to i32
  %467 = icmp slt i32 %459, %466
  br i1 %467, label %480, label %468

468:                                              ; preds = %458
  store i32 10, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #10
  br label %553

469:                                              ; preds = %431, %429
  %470 = landingpad { ptr, i32 }
          cleanup
  %471 = extractvalue { ptr, i32 } %470, 0
  store ptr %471, ptr %41, align 8
  %472 = extractvalue { ptr, i32 } %470, 1
  store i32 %472, ptr %42, align 4
  %473 = load i1, ptr %40, align 1
  br i1 %473, label %474, label %476

474:                                              ; preds = %469
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %38)
          to label %475 unwind label %3387

475:                                              ; preds = %474
  br label %476

476:                                              ; preds = %475, %469
  %477 = load i1, ptr %39, align 1
  br i1 %477, label %478, label %479

478:                                              ; preds = %476
  call void @llvm.lifetime.end.p0(i64 384, ptr %38) #10
  br label %479

479:                                              ; preds = %478, %476
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #10
  br label %3381

480:                                              ; preds = %458
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #10
  %481 = load ptr, ptr %35, align 8, !tbaa !5
  %482 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %481)
  %483 = load i64, ptr %36, align 8, !tbaa !9
  %484 = trunc i64 %483 to i32
  %485 = load i32, ptr %45, align 4, !tbaa !13
  %486 = call noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents5loopsEii(ptr noundef nonnull align 8 dereferenceable(16) %482, i32 noundef %484, i32 noundef %485)
  store ptr %486, ptr %46, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #10
  %487 = load ptr, ptr %46, align 8, !tbaa !5
  %488 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17) %487)
  store i64 %488, ptr %47, align 8, !tbaa !9
  %489 = load i64, ptr %47, align 8, !tbaa !9
  %490 = sitofp i64 %489 to double
  %491 = load ptr, ptr %43, align 8, !tbaa !5
  %492 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %491, i32 0, i32 2
  %493 = load double, ptr %492, align 8, !tbaa !97
  %494 = fmul double %493, %490
  store double %494, ptr %492, align 8, !tbaa !97
  %495 = load i32, ptr %45, align 4, !tbaa !13
  %496 = load ptr, ptr %15, align 8, !tbaa !5
  %497 = load ptr, ptr %34, align 8, !tbaa !5
  %498 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %497, i32 0, i32 7
  %499 = load i64, ptr %36, align 8, !tbaa !9
  %500 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %498, i64 noundef %499) #10
  %501 = call noundef nonnull align 8 dereferenceable(41) ptr @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS2_8LoopNest5SitesELi4E22PerfectHashMapAsserterE3getEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %496, ptr noundef %500)
  %502 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::Sites", ptr %501, i32 0, i32 2
  %503 = load ptr, ptr %502, align 8, !tbaa !100
  %504 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %503, i32 0, i32 14
  %505 = load i32, ptr %504, align 8, !tbaa !102
  %506 = icmp eq i32 %495, %505
  br i1 %506, label %507, label %536

507:                                              ; preds = %480
  %508 = load i64, ptr %47, align 8, !tbaa !9
  %509 = load ptr, ptr %34, align 8, !tbaa !5
  %510 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %509, i32 0, i32 7
  %511 = load i64, ptr %36, align 8, !tbaa !9
  %512 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %510, i64 noundef %511) #10
  %513 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %512, i32 0, i32 4
  %514 = load i32, ptr %513, align 4, !tbaa !103
  %515 = sext i32 %514 to i64
  %516 = sdiv i64 %508, %515
  %517 = sitofp i64 %516 to double
  %518 = load ptr, ptr %43, align 8, !tbaa !5
  %519 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %518, i32 0, i32 24
  %520 = load double, ptr %519, align 8, !tbaa !98
  %521 = fmul double %520, %517
  store double %521, ptr %519, align 8, !tbaa !98
  %522 = load i64, ptr %47, align 8, !tbaa !9
  %523 = load ptr, ptr %34, align 8, !tbaa !5
  %524 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %523, i32 0, i32 7
  %525 = load i64, ptr %36, align 8, !tbaa !9
  %526 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %524, i64 noundef %525) #10
  %527 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %526, i32 0, i32 4
  %528 = load i32, ptr %527, align 4, !tbaa !103
  %529 = sext i32 %528 to i64
  %530 = srem i64 %522, %529
  %531 = sitofp i64 %530 to double
  %532 = load ptr, ptr %43, align 8, !tbaa !5
  %533 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %532, i32 0, i32 25
  %534 = load double, ptr %533, align 8, !tbaa !99
  %535 = fmul double %534, %531
  store double %535, ptr %533, align 8, !tbaa !99
  store i8 1, ptr %44, align 1, !tbaa !11
  br label %549

536:                                              ; preds = %480
  %537 = load i64, ptr %47, align 8, !tbaa !9
  %538 = sitofp i64 %537 to double
  %539 = load ptr, ptr %43, align 8, !tbaa !5
  %540 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %539, i32 0, i32 24
  %541 = load double, ptr %540, align 8, !tbaa !98
  %542 = fmul double %541, %538
  store double %542, ptr %540, align 8, !tbaa !98
  %543 = load i64, ptr %47, align 8, !tbaa !9
  %544 = sitofp i64 %543 to double
  %545 = load ptr, ptr %43, align 8, !tbaa !5
  %546 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %545, i32 0, i32 25
  %547 = load double, ptr %546, align 8, !tbaa !99
  %548 = fmul double %547, %544
  store double %548, ptr %546, align 8, !tbaa !99
  br label %549

549:                                              ; preds = %536, %507
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #10
  br label %550

550:                                              ; preds = %549
  %551 = load i32, ptr %45, align 4, !tbaa !13
  %552 = add nsw i32 %551, 1
  store i32 %552, ptr %45, align 4, !tbaa !13
  br label %458, !llvm.loop !123

553:                                              ; preds = %468
  %554 = load i8, ptr %44, align 1, !tbaa !11, !range !55, !noundef !56
  %555 = trunc i8 %554 to i1
  br i1 %555, label %559, label %556

556:                                              ; preds = %553
  %557 = load ptr, ptr %43, align 8, !tbaa !5
  %558 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %557, i32 0, i32 24
  store double 0.000000e+00, ptr %558, align 8, !tbaa !98
  br label %559

559:                                              ; preds = %556, %553
  %560 = load ptr, ptr %43, align 8, !tbaa !5
  %561 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %560, i32 0, i32 2
  %562 = load double, ptr %561, align 8, !tbaa !97
  %563 = load ptr, ptr %43, align 8, !tbaa !5
  %564 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %563, i32 0, i32 0
  %565 = load double, ptr %564, align 8, !tbaa !95
  %566 = fmul double %562, %565
  %567 = load ptr, ptr %43, align 8, !tbaa !5
  %568 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %567, i32 0, i32 4
  store double %566, ptr %568, align 8, !tbaa !124
  %569 = load ptr, ptr %34, align 8, !tbaa !5
  %570 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %569, i32 0, i32 2
  %571 = load double, ptr %570, align 8, !tbaa !125
  %572 = load ptr, ptr %43, align 8, !tbaa !5
  %573 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %572, i32 0, i32 11
  store double %571, ptr %573, align 8, !tbaa !126
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #10
  store i32 0, ptr %48, align 4, !tbaa !13
  br label %574

574:                                              ; preds = %593, %559
  %575 = load i32, ptr %48, align 4, !tbaa !13
  %576 = load ptr, ptr %34, align 8, !tbaa !5
  %577 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %576, i32 0, i32 12
  %578 = load i32, ptr %577, align 4, !tbaa !127
  %579 = icmp slt i32 %575, %578
  br i1 %579, label %581, label %580

580:                                              ; preds = %574
  store i32 13, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #10
  br label %596

581:                                              ; preds = %574
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #10
  %582 = load ptr, ptr %35, align 8, !tbaa !5
  %583 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %582)
  %584 = load i32, ptr %48, align 4, !tbaa !13
  %585 = call noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents15region_computedEi(ptr noundef nonnull align 8 dereferenceable(16) %583, i32 noundef %584)
  store ptr %585, ptr %49, align 8, !tbaa !5
  %586 = load ptr, ptr %49, align 8, !tbaa !5
  %587 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17) %586)
  %588 = sitofp i64 %587 to double
  %589 = load ptr, ptr %43, align 8, !tbaa !5
  %590 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %589, i32 0, i32 11
  %591 = load double, ptr %590, align 8, !tbaa !126
  %592 = fmul double %591, %588
  store double %592, ptr %590, align 8, !tbaa !126
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #10
  br label %593

593:                                              ; preds = %581
  %594 = load i32, ptr %48, align 4, !tbaa !13
  %595 = add nsw i32 %594, 1
  store i32 %595, ptr %48, align 4, !tbaa !13
  br label %574, !llvm.loop !128

596:                                              ; preds = %580
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #10
  store i64 1, ptr %50, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #10
  %597 = load ptr, ptr %15, align 8, !tbaa !5
  %598 = load ptr, ptr %34, align 8, !tbaa !5
  %599 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %598, i32 0, i32 7
  %600 = load i64, ptr %36, align 8, !tbaa !9
  %601 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %599, i64 noundef %600) #10
  %602 = call noundef nonnull align 8 dereferenceable(41) ptr @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS2_8LoopNest5SitesELi4E22PerfectHashMapAsserterE3getEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %597, ptr noundef %601)
  %603 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::Sites", ptr %602, i32 0, i32 2
  %604 = load ptr, ptr %603, align 8, !tbaa !100
  %605 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %604, i32 0, i32 13
  %606 = load i32, ptr %605, align 4, !tbaa !129
  store i32 %606, ptr %51, align 4, !tbaa !13
  %607 = load i32, ptr %51, align 4, !tbaa !13
  %608 = icmp sge i32 %607, 0
  br i1 %608, label %609, label %620

609:                                              ; preds = %596
  %610 = load ptr, ptr %34, align 8, !tbaa !5
  %611 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %610, i32 0, i32 12
  %612 = load i32, ptr %611, align 4, !tbaa !127
  %613 = icmp sgt i32 %612, 0
  br i1 %613, label %614, label %620

614:                                              ; preds = %609
  %615 = load ptr, ptr %35, align 8, !tbaa !5
  %616 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %615)
  %617 = load i32, ptr %51, align 4, !tbaa !13
  %618 = call noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents15region_computedEi(ptr noundef nonnull align 8 dereferenceable(16) %616, i32 noundef %617)
  %619 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17) %618)
  store i64 %619, ptr %50, align 8, !tbaa !9
  br label %620

620:                                              ; preds = %614, %609, %596
  %621 = load ptr, ptr %34, align 8, !tbaa !5
  %622 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %621, i32 0, i32 2
  %623 = load double, ptr %622, align 8, !tbaa !125
  %624 = load i64, ptr %50, align 8, !tbaa !9
  %625 = sitofp i64 %624 to double
  %626 = fmul double %623, %625
  %627 = load ptr, ptr %43, align 8, !tbaa !5
  %628 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %627, i32 0, i32 14
  store double %626, ptr %628, align 8, !tbaa !130
  %629 = call noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler8LoopNest7is_rootEv(ptr noundef nonnull align 8 dereferenceable(196) %316)
  br i1 %629, label %641, label %630

630:                                              ; preds = %620
  %631 = load ptr, ptr %43, align 8, !tbaa !5
  %632 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %631, i32 0, i32 11
  %633 = load double, ptr %632, align 8, !tbaa !126
  %634 = load ptr, ptr %43, align 8, !tbaa !5
  %635 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %634, i32 0, i32 29
  store double %633, ptr %635, align 8, !tbaa !131
  %636 = load ptr, ptr %43, align 8, !tbaa !5
  %637 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %636, i32 0, i32 14
  %638 = load double, ptr %637, align 8, !tbaa !130
  %639 = load ptr, ptr %43, align 8, !tbaa !5
  %640 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %639, i32 0, i32 30
  store double %638, ptr %640, align 8, !tbaa !132
  br label %641

641:                                              ; preds = %630, %620
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %44) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #10
  br label %642

642:                                              ; preds = %641
  %643 = load i64, ptr %36, align 8, !tbaa !9
  %644 = add i64 %643, 1
  store i64 %644, ptr %36, align 8, !tbaa !9
  br label %416, !llvm.loop !133

645:                                              ; preds = %422
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #10
  br label %646

646:                                              ; preds = %645
  %647 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %31) #10
  br label %408

648:                                              ; preds = %410
  %649 = call noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler8LoopNest7is_rootEv(ptr noundef nonnull align 8 dereferenceable(196) %316)
  br i1 %649, label %650, label %953

650:                                              ; preds = %648
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #10
  %651 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 3
  store ptr %651, ptr %52, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #10
  %652 = load ptr, ptr %52, align 8, !tbaa !5
  %653 = call ptr @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %652) #10
  %654 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.54", ptr %53, i32 0, i32 0
  store ptr %653, ptr %654, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #10
  %655 = load ptr, ptr %52, align 8, !tbaa !5
  %656 = call ptr @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %655) #10
  %657 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.54", ptr %54, i32 0, i32 0
  store ptr %656, ptr %657, align 8
  br label %658

658:                                              ; preds = %673, %650
  %659 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %53, ptr noundef nonnull align 8 dereferenceable(8) %54) #10
  br i1 %659, label %661, label %660

660:                                              ; preds = %658
  store i32 16, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #10
  br label %675

661:                                              ; preds = %658
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #10
  %662 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %53) #10
  store ptr %662, ptr %55, align 8, !tbaa !5
  %663 = load ptr, ptr %55, align 8, !tbaa !5
  %664 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %663)
  %665 = load ptr, ptr %13, align 8, !tbaa !5
  %666 = load ptr, ptr %14, align 8, !tbaa !5
  %667 = load ptr, ptr %15, align 8, !tbaa !5
  %668 = load i64, ptr %29, align 8, !tbaa !9
  %669 = load i64, ptr %17, align 8, !tbaa !9
  %670 = load ptr, ptr %18, align 8, !tbaa !5
  %671 = load ptr, ptr %20, align 8, !tbaa !5
  %672 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZNK6Halide8Internal13Autoscheduler8LoopNest16compute_featuresERKNS1_11FunctionDAGERKNS_13MachineParamsERK14PerfectHashMapINS3_4Node5StageENS2_5SitesELi4E22PerfectHashMapAsserterEllPKS2_SI_RSH_PlPS9_ISB_NS0_16ScheduleFeaturesELi4ESD_E(ptr noundef nonnull align 8 dereferenceable(196) %664, ptr noundef nonnull align 8 dereferenceable(48) %665, ptr noundef nonnull align 8 dereferenceable(20) %666, ptr noundef nonnull align 8 dereferenceable(32) %667, i64 noundef %668, i64 noundef %669, ptr noundef %316, ptr noundef %670, ptr noundef nonnull align 8 dereferenceable(196) %671, ptr noundef %23, ptr noundef %672)
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #10
  br label %673

673:                                              ; preds = %661
  %674 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %53) #10
  br label %658

675:                                              ; preds = %660
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #10
  %676 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 5
  store ptr %676, ptr %56, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #10
  %677 = load ptr, ptr %56, align 8, !tbaa !5
  %678 = call ptr @_ZNKSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %677) #10
  %679 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %57, i32 0, i32 0
  store ptr %678, ptr %679, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #10
  %680 = load ptr, ptr %56, align 8, !tbaa !5
  %681 = call ptr @_ZNKSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %680) #10
  %682 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %58, i32 0, i32 0
  store ptr %681, ptr %682, align 8
  br label %683

683:                                              ; preds = %701, %675
  %684 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEES9_(ptr noundef nonnull align 8 dereferenceable(8) %57, ptr noundef nonnull align 8 dereferenceable(8) %58) #10
  br i1 %684, label %686, label %685

685:                                              ; preds = %683
  store i32 18, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #10
  br label %703

686:                                              ; preds = %683
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #10
  %687 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %57) #10
  %688 = load ptr, ptr %687, align 8, !tbaa !5
  store ptr %688, ptr %59, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #10
  %689 = load ptr, ptr %22, align 8, !tbaa !5
  %690 = load ptr, ptr %59, align 8, !tbaa !5
  %691 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %690, i32 0, i32 7
  %692 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %691, i64 noundef 0) #10
  %693 = call noundef nonnull align 8 dereferenceable(312) ptr @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE3getEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %689, ptr noundef %692)
  store ptr %693, ptr %60, align 8, !tbaa !5
  %694 = load ptr, ptr %60, align 8, !tbaa !5
  %695 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %694, i32 0, i32 12
  %696 = load double, ptr %695, align 8, !tbaa !134
  %697 = load i64, ptr %23, align 8, !tbaa !9
  %698 = sitofp i64 %697 to double
  %699 = fadd double %698, %696
  %700 = fptosi double %699 to i64
  store i64 %700, ptr %23, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #10
  br label %701

701:                                              ; preds = %686
  %702 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %57) #10
  br label %683

703:                                              ; preds = %685
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #10
  %704 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 5
  store ptr %704, ptr %61, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #10
  %705 = load ptr, ptr %61, align 8, !tbaa !5
  %706 = call ptr @_ZNKSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %705) #10
  %707 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %62, i32 0, i32 0
  store ptr %706, ptr %707, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #10
  %708 = load ptr, ptr %61, align 8, !tbaa !5
  %709 = call ptr @_ZNKSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %708) #10
  %710 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %63, i32 0, i32 0
  store ptr %709, ptr %710, align 8
  br label %711

711:                                              ; preds = %740, %703
  %712 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEES9_(ptr noundef nonnull align 8 dereferenceable(8) %62, ptr noundef nonnull align 8 dereferenceable(8) %63) #10
  br i1 %712, label %714, label %713

713:                                              ; preds = %711
  store i32 20, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #10
  br label %742

714:                                              ; preds = %711
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #10
  %715 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %62) #10
  %716 = load ptr, ptr %715, align 8, !tbaa !5
  store ptr %716, ptr %64, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #10
  %717 = load ptr, ptr %64, align 8, !tbaa !5
  %718 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %717, i32 0, i32 7
  store ptr %718, ptr %65, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #10
  %719 = load ptr, ptr %65, align 8, !tbaa !5
  %720 = call ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %719) #10
  %721 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.78", ptr %66, i32 0, i32 0
  store ptr %720, ptr %721, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #10
  %722 = load ptr, ptr %65, align 8, !tbaa !5
  %723 = call ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %722) #10
  %724 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.78", ptr %67, i32 0, i32 0
  store ptr %723, ptr %724, align 8
  br label %725

725:                                              ; preds = %737, %714
  %726 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %66, ptr noundef nonnull align 8 dereferenceable(8) %67) #10
  br i1 %726, label %728, label %727

727:                                              ; preds = %725
  store i32 22, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #10
  br label %739

728:                                              ; preds = %725
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #10
  %729 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %66) #10
  store ptr %729, ptr %68, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #10
  %730 = load ptr, ptr %22, align 8, !tbaa !5
  %731 = load ptr, ptr %68, align 8, !tbaa !5
  %732 = call noundef nonnull align 8 dereferenceable(312) ptr @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE3getEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %730, ptr noundef %731)
  store ptr %732, ptr %69, align 8, !tbaa !5
  %733 = load i64, ptr %23, align 8, !tbaa !9
  %734 = sitofp i64 %733 to double
  %735 = load ptr, ptr %69, align 8, !tbaa !5
  %736 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %735, i32 0, i32 37
  store double %734, ptr %736, align 8, !tbaa !135
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #10
  br label %737

737:                                              ; preds = %728
  %738 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %66) #10
  br label %725

739:                                              ; preds = %727
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #10
  br label %740

740:                                              ; preds = %739
  %741 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %62) #10
  br label %711

742:                                              ; preds = %713
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #10
  %743 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 3
  store ptr %743, ptr %70, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #10
  %744 = load ptr, ptr %70, align 8, !tbaa !5
  %745 = call ptr @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %744) #10
  %746 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.54", ptr %71, i32 0, i32 0
  store ptr %745, ptr %746, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #10
  %747 = load ptr, ptr %70, align 8, !tbaa !5
  %748 = call ptr @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %747) #10
  %749 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.54", ptr %72, i32 0, i32 0
  store ptr %748, ptr %749, align 8
  br label %750

750:                                              ; preds = %774, %742
  %751 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %71, ptr noundef nonnull align 8 dereferenceable(8) %72) #10
  br i1 %751, label %753, label %752

752:                                              ; preds = %750
  store i32 24, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #10
  br label %776

753:                                              ; preds = %750
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #10
  %754 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %71) #10
  store ptr %754, ptr %73, align 8, !tbaa !5
  %755 = load ptr, ptr %73, align 8, !tbaa !5
  %756 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %755)
  %757 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %756, i32 0, i32 7
  %758 = load ptr, ptr %757, align 8, !tbaa !136
  %759 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 7
  %760 = load ptr, ptr %759, align 8, !tbaa !136
  %761 = icmp ne ptr %758, %760
  br i1 %761, label %762, label %773

762:                                              ; preds = %753
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #10
  %763 = load ptr, ptr %22, align 8, !tbaa !5
  %764 = load ptr, ptr %73, align 8, !tbaa !5
  %765 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %764)
  %766 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %765, i32 0, i32 8
  %767 = load ptr, ptr %766, align 8, !tbaa !15
  %768 = call noundef nonnull align 8 dereferenceable(312) ptr @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE3getEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %763, ptr noundef %767)
  store ptr %768, ptr %74, align 8, !tbaa !5
  %769 = load i64, ptr %23, align 8, !tbaa !9
  %770 = sitofp i64 %769 to double
  %771 = load ptr, ptr %74, align 8, !tbaa !5
  %772 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %771, i32 0, i32 36
  store double %770, ptr %772, align 8, !tbaa !137
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #10
  br label %773

773:                                              ; preds = %762, %753
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #10
  br label %774

774:                                              ; preds = %773
  %775 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %71) #10
  br label %750

776:                                              ; preds = %752
  call void @llvm.lifetime.start.p0(i64 16, ptr %75) #10
  %777 = load ptr, ptr %22, align 8, !tbaa !5
  %778 = call { ptr, ptr } @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE5beginEv(ptr noundef nonnull align 8 dereferenceable(32) %777)
  %779 = getelementptr inbounds { ptr, ptr }, ptr %75, i32 0, i32 0
  %780 = extractvalue { ptr, ptr } %778, 0
  store ptr %780, ptr %779, align 8
  %781 = getelementptr inbounds { ptr, ptr }, ptr %75, i32 0, i32 1
  %782 = extractvalue { ptr, ptr } %778, 1
  store ptr %782, ptr %781, align 8
  br label %783

783:                                              ; preds = %951, %776
  call void @llvm.lifetime.start.p0(i64 16, ptr %76) #10
  %784 = load ptr, ptr %22, align 8, !tbaa !5
  %785 = call { ptr, ptr } @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE3endEv(ptr noundef nonnull align 8 dereferenceable(32) %784)
  %786 = getelementptr inbounds { ptr, ptr }, ptr %76, i32 0, i32 0
  %787 = extractvalue { ptr, ptr } %785, 0
  store ptr %787, ptr %786, align 8
  %788 = getelementptr inbounds { ptr, ptr }, ptr %76, i32 0, i32 1
  %789 = extractvalue { ptr, ptr } %785, 1
  store ptr %789, ptr %788, align 8
  %790 = call noundef zeroext i1 @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE8iteratorneERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %75, ptr noundef nonnull align 8 dereferenceable(16) %76)
  call void @llvm.lifetime.end.p0(i64 16, ptr %76) #10
  br i1 %790, label %792, label %791

791:                                              ; preds = %783
  store i32 26, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %75) #10
  br label %952

792:                                              ; preds = %783
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #10
  %793 = call noundef ptr @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE8iterator3keyEv(ptr noundef nonnull align 8 dereferenceable(16) %75)
  store ptr %793, ptr %77, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #10
  %794 = load ptr, ptr %77, align 8, !tbaa !5
  %795 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %794, i32 0, i32 0
  %796 = load ptr, ptr %795, align 8, !tbaa !138
  store ptr %796, ptr %78, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #10
  %797 = call noundef nonnull align 8 dereferenceable(312) ptr @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE8iterator5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %75)
  store ptr %797, ptr %79, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #10
  %798 = load ptr, ptr %20, align 8, !tbaa !5
  %799 = load ptr, ptr %78, align 8, !tbaa !5
  %800 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Halide8Internal13Autoscheduler8LoopNest10get_boundsEPKNS1_11FunctionDAG4NodeE(ptr noundef nonnull align 8 dereferenceable(196) %798, ptr noundef %799)
  store ptr %800, ptr %80, align 8, !tbaa !5
  %801 = load ptr, ptr %78, align 8, !tbaa !5
  %802 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %801, i32 0, i32 2
  %803 = load double, ptr %802, align 8, !tbaa !125
  %804 = load ptr, ptr %79, align 8, !tbaa !5
  %805 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %804, i32 0, i32 13
  store double %803, ptr %805, align 8, !tbaa !139
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #10
  store i32 0, ptr %81, align 4, !tbaa !13
  br label %806

806:                                              ; preds = %825, %792
  %807 = load i32, ptr %81, align 4, !tbaa !13
  %808 = load ptr, ptr %78, align 8, !tbaa !5
  %809 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %808, i32 0, i32 12
  %810 = load i32, ptr %809, align 4, !tbaa !127
  %811 = icmp slt i32 %807, %810
  br i1 %811, label %813, label %812

812:                                              ; preds = %806
  store i32 29, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #10
  br label %828

813:                                              ; preds = %806
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #10
  %814 = load ptr, ptr %80, align 8, !tbaa !5
  %815 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %814)
  %816 = load i32, ptr %81, align 4, !tbaa !13
  %817 = call noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents15region_computedEi(ptr noundef nonnull align 8 dereferenceable(16) %815, i32 noundef %816)
  store ptr %817, ptr %82, align 8, !tbaa !5
  %818 = load ptr, ptr %82, align 8, !tbaa !5
  %819 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17) %818)
  %820 = sitofp i64 %819 to double
  %821 = load ptr, ptr %79, align 8, !tbaa !5
  %822 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %821, i32 0, i32 13
  %823 = load double, ptr %822, align 8, !tbaa !139
  %824 = fmul double %823, %820
  store double %824, ptr %822, align 8, !tbaa !139
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #10
  br label %825

825:                                              ; preds = %813
  %826 = load i32, ptr %81, align 4, !tbaa !13
  %827 = add nsw i32 %826, 1
  store i32 %827, ptr %81, align 4, !tbaa !13
  br label %806, !llvm.loop !140

828:                                              ; preds = %812
  %829 = load i64, ptr %23, align 8, !tbaa !9
  %830 = sitofp i64 %829 to double
  %831 = load ptr, ptr %79, align 8, !tbaa !5
  %832 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %831, i32 0, i32 38
  store double %830, ptr %832, align 8, !tbaa !141
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #10
  %833 = load ptr, ptr %15, align 8, !tbaa !5
  %834 = load ptr, ptr %77, align 8, !tbaa !5
  %835 = call noundef nonnull align 8 dereferenceable(41) ptr @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS2_8LoopNest5SitesELi4E22PerfectHashMapAsserterE3getEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %833, ptr noundef %834)
  %836 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::Sites", ptr %835, i32 0, i32 2
  %837 = load ptr, ptr %836, align 8, !tbaa !100
  store ptr %837, ptr %83, align 8, !tbaa !5
  %838 = load ptr, ptr %83, align 8, !tbaa !5
  %839 = icmp ne ptr %838, null
  br i1 %839, label %840, label %867

840:                                              ; preds = %828
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #10
  store i64 1, ptr %84, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #10
  %841 = load ptr, ptr %83, align 8, !tbaa !5
  %842 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %841, i32 0, i32 13
  %843 = load i32, ptr %842, align 4, !tbaa !129
  store i32 %843, ptr %85, align 4, !tbaa !13
  %844 = load i32, ptr %85, align 4, !tbaa !13
  %845 = icmp sge i32 %844, 0
  br i1 %845, label %846, label %858

846:                                              ; preds = %840
  %847 = load i32, ptr %85, align 4, !tbaa !13
  %848 = load ptr, ptr %78, align 8, !tbaa !5
  %849 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %848, i32 0, i32 12
  %850 = load i32, ptr %849, align 4, !tbaa !127
  %851 = icmp slt i32 %847, %850
  br i1 %851, label %852, label %858

852:                                              ; preds = %846
  %853 = load ptr, ptr %80, align 8, !tbaa !5
  %854 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %853)
  %855 = load i32, ptr %85, align 4, !tbaa !13
  %856 = call noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents15region_computedEi(ptr noundef nonnull align 8 dereferenceable(16) %854, i32 noundef %855)
  %857 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17) %856)
  store i64 %857, ptr %84, align 8, !tbaa !9
  br label %858

858:                                              ; preds = %852, %846, %840
  %859 = load ptr, ptr %78, align 8, !tbaa !5
  %860 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %859, i32 0, i32 2
  %861 = load double, ptr %860, align 8, !tbaa !125
  %862 = load i64, ptr %84, align 8, !tbaa !9
  %863 = sitofp i64 %862 to double
  %864 = fmul double %861, %863
  %865 = load ptr, ptr %79, align 8, !tbaa !5
  %866 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %865, i32 0, i32 16
  store double %864, ptr %866, align 8, !tbaa !142
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #10
  br label %870

867:                                              ; preds = %828
  %868 = load ptr, ptr %79, align 8, !tbaa !5
  %869 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %868, i32 0, i32 16
  store double 0.000000e+00, ptr %869, align 8, !tbaa !142
  br label %870

870:                                              ; preds = %867, %858
  %871 = load ptr, ptr %79, align 8, !tbaa !5
  %872 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %871, i32 0, i32 5
  store double 1.000000e+00, ptr %872, align 8, !tbaa !143
  call void @llvm.lifetime.start.p0(i64 4, ptr %86) #10
  store i32 0, ptr %86, align 4, !tbaa !13
  br label %873

873:                                              ; preds = %896, %870
  %874 = load i32, ptr %86, align 4, !tbaa !13
  %875 = load ptr, ptr %77, align 8, !tbaa !5
  %876 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %875, i32 0, i32 2
  %877 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %876) #10
  %878 = trunc i64 %877 to i32
  %879 = icmp slt i32 %874, %878
  br i1 %879, label %881, label %880

880:                                              ; preds = %873
  store i32 32, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #10
  br label %899

881:                                              ; preds = %873
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #10
  %882 = load ptr, ptr %80, align 8, !tbaa !5
  %883 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %882)
  %884 = load ptr, ptr %77, align 8, !tbaa !5
  %885 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %884, i32 0, i32 1
  %886 = load i32, ptr %885, align 8, !tbaa !144
  %887 = load i32, ptr %86, align 4, !tbaa !13
  %888 = call noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents5loopsEii(ptr noundef nonnull align 8 dereferenceable(16) %883, i32 noundef %886, i32 noundef %887)
  store ptr %888, ptr %87, align 8, !tbaa !5
  %889 = load ptr, ptr %87, align 8, !tbaa !5
  %890 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17) %889)
  %891 = sitofp i64 %890 to double
  %892 = load ptr, ptr %79, align 8, !tbaa !5
  %893 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %892, i32 0, i32 5
  %894 = load double, ptr %893, align 8, !tbaa !143
  %895 = fmul double %894, %891
  store double %895, ptr %893, align 8, !tbaa !143
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #10
  br label %896

896:                                              ; preds = %881
  %897 = load i32, ptr %86, align 4, !tbaa !13
  %898 = add nsw i32 %897, 1
  store i32 %898, ptr %86, align 4, !tbaa !13
  br label %873, !llvm.loop !145

899:                                              ; preds = %880
  %900 = load ptr, ptr %78, align 8, !tbaa !5
  %901 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %900, i32 0, i32 7
  %902 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %901) #10
  %903 = icmp eq i64 %902, 1
  br i1 %903, label %904, label %950

904:                                              ; preds = %899
  %905 = load ptr, ptr %78, align 8, !tbaa !5
  %906 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %905, i32 0, i32 15
  %907 = load i8, ptr %906, align 2, !tbaa !146, !range !55, !noundef !56
  %908 = trunc i8 %907 to i1
  br i1 %908, label %950, label %909

909:                                              ; preds = %904
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #10
  store i64 0, ptr %88, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #10
  %910 = load ptr, ptr %78, align 8, !tbaa !5
  %911 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %910, i32 0, i32 8
  store ptr %911, ptr %89, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #10
  %912 = load ptr, ptr %89, align 8, !tbaa !5
  %913 = call ptr @_ZNKSt6vectorIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %912) #10
  %914 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.97", ptr %90, i32 0, i32 0
  store ptr %913, ptr %914, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #10
  %915 = load ptr, ptr %89, align 8, !tbaa !5
  %916 = call ptr @_ZNKSt6vectorIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %915) #10
  %917 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.97", ptr %91, i32 0, i32 0
  store ptr %916, ptr %917, align 8
  br label %918

918:                                              ; preds = %939, %909
  %919 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %90, ptr noundef nonnull align 8 dereferenceable(8) %91) #10
  br i1 %919, label %921, label %920

920:                                              ; preds = %918
  store i32 35, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #10
  br label %941

921:                                              ; preds = %918
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #10
  %922 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %90) #10
  %923 = load ptr, ptr %922, align 8, !tbaa !5
  store ptr %923, ptr %92, align 8, !tbaa !5
  %924 = load ptr, ptr %22, align 8, !tbaa !5
  %925 = load ptr, ptr %92, align 8, !tbaa !5
  %926 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %925, i32 0, i32 2
  %927 = load ptr, ptr %926, align 8, !tbaa !147
  %928 = call noundef nonnull align 8 dereferenceable(312) ptr @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE3getEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %924, ptr noundef %927)
  %929 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %928, i32 0, i32 5
  %930 = load double, ptr %929, align 8, !tbaa !143
  %931 = load ptr, ptr %92, align 8, !tbaa !5
  %932 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %931, i32 0, i32 3
  %933 = load i32, ptr %932, align 8, !tbaa !157
  %934 = sitofp i32 %933 to double
  %935 = load i64, ptr %88, align 8, !tbaa !9
  %936 = sitofp i64 %935 to double
  %937 = call double @llvm.fmuladd.f64(double %930, double %934, double %936)
  %938 = fptosi double %937 to i64
  store i64 %938, ptr %88, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #10
  br label %939

939:                                              ; preds = %921
  %940 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %90) #10
  br label %918

941:                                              ; preds = %920
  %942 = load ptr, ptr %79, align 8, !tbaa !5
  %943 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %942, i32 0, i32 5
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #10
  %944 = load i64, ptr %88, align 8, !tbaa !9
  %945 = sitofp i64 %944 to double
  store double %945, ptr %93, align 8, !tbaa !158
  %946 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %943, ptr noundef nonnull align 8 dereferenceable(8) %93)
  %947 = load double, ptr %946, align 8, !tbaa !158
  %948 = load ptr, ptr %79, align 8, !tbaa !5
  %949 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %948, i32 0, i32 5
  store double %947, ptr %949, align 8, !tbaa !143
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #10
  br label %950

950:                                              ; preds = %941, %904, %899
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #10
  br label %951

951:                                              ; preds = %950
  call void @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE8iteratorppEi(ptr noundef nonnull align 8 dereferenceable(16) %75, i32 noundef 0)
  br label %783, !llvm.loop !159

952:                                              ; preds = %791
  store i32 1, ptr %33, align 4
  br label %3375

953:                                              ; preds = %648
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #10
  %954 = load i64, ptr %25, align 8, !tbaa !9
  %955 = load i64, ptr %17, align 8, !tbaa !9
  %956 = mul nsw i64 %954, %955
  store i64 %956, ptr %94, align 8, !tbaa !9
  %957 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 8
  %958 = load ptr, ptr %957, align 8, !tbaa !15
  %959 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %958, i32 0, i32 0
  %960 = load ptr, ptr %959, align 8, !tbaa !138
  %961 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %960, i32 0, i32 14
  %962 = load i8, ptr %961, align 1, !tbaa !63, !range !55, !noundef !56
  %963 = trunc i8 %962 to i1
  call void @llvm.lifetime.start.p0(i64 1, ptr %95) #10
  store i1 false, ptr %97, align 1
  store i1 false, ptr %98, align 1
  br i1 %963, label %965, label %964

964:                                              ; preds = %953
  br label %969

965:                                              ; preds = %953
  call void @llvm.lifetime.start.p0(i64 384, ptr %96) #10
  store i1 true, ptr %97, align 1
  call void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %96, ptr noundef @.str.3, i32 noundef 379, ptr noundef @.str.5, i32 noundef 0)
  store i1 true, ptr %98, align 1
  %966 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %96)
          to label %967 unwind label %1004

967:                                              ; preds = %965
  invoke void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %95, ptr noundef nonnull align 8 dereferenceable(380) %966)
          to label %968 unwind label %1004

968:                                              ; preds = %967
  br label %969

969:                                              ; preds = %968, %964
  %970 = load i1, ptr %98, align 1
  br i1 %970, label %971, label %972

971:                                              ; preds = %969
  call void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %96)
  br label %972

972:                                              ; preds = %971, %969
  %973 = load i1, ptr %97, align 1
  br i1 %973, label %974, label %975

974:                                              ; preds = %972
  call void @llvm.lifetime.end.p0(i64 384, ptr %96) #10
  br label %975

975:                                              ; preds = %974, %972
  call void @llvm.lifetime.end.p0(i64 1, ptr %95) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #10
  %976 = load ptr, ptr %22, align 8, !tbaa !5
  %977 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 8
  %978 = load ptr, ptr %977, align 8, !tbaa !15
  %979 = call noundef nonnull align 8 dereferenceable(312) ptr @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE13get_or_createEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %976, ptr noundef %978)
  store ptr %979, ptr %99, align 8, !tbaa !5
  %980 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 9
  %981 = load i8, ptr %980, align 8, !tbaa !160, !range !55, !noundef !56
  %982 = trunc i8 %981 to i1
  br i1 %982, label %983, label %1034

983:                                              ; preds = %975
  %984 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 14
  %985 = load i32, ptr %984, align 8, !tbaa !102
  %986 = icmp sge i32 %985, 0
  br i1 %986, label %987, label %1015

987:                                              ; preds = %983
  %988 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 14
  %989 = load i32, ptr %988, align 8, !tbaa !102
  %990 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 2
  %991 = call noundef i64 @_ZNKSt6vectorIlSaIlEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %990) #10
  %992 = trunc i64 %991 to i32
  %993 = icmp slt i32 %989, %992
  br i1 %993, label %994, label %1015

994:                                              ; preds = %987
  %995 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 2
  %996 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 14
  %997 = load i32, ptr %996, align 8, !tbaa !102
  %998 = sext i32 %997 to i64
  %999 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %995, i64 noundef %998) #10
  %1000 = load i64, ptr %999, align 8, !tbaa !9
  %1001 = sitofp i64 %1000 to double
  %1002 = load ptr, ptr %99, align 8, !tbaa !5
  %1003 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %1002, i32 0, i32 22
  store double %1001, ptr %1003, align 8, !tbaa !161
  br label %1018

1004:                                             ; preds = %967, %965
  %1005 = landingpad { ptr, i32 }
          cleanup
  %1006 = extractvalue { ptr, i32 } %1005, 0
  store ptr %1006, ptr %41, align 8
  %1007 = extractvalue { ptr, i32 } %1005, 1
  store i32 %1007, ptr %42, align 4
  %1008 = load i1, ptr %98, align 1
  br i1 %1008, label %1009, label %1011

1009:                                             ; preds = %1004
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %96)
          to label %1010 unwind label %3387

1010:                                             ; preds = %1009
  br label %1011

1011:                                             ; preds = %1010, %1004
  %1012 = load i1, ptr %97, align 1
  br i1 %1012, label %1013, label %1014

1013:                                             ; preds = %1011
  call void @llvm.lifetime.end.p0(i64 384, ptr %96) #10
  br label %1014

1014:                                             ; preds = %1013, %1011
  call void @llvm.lifetime.end.p0(i64 1, ptr %95) #10
  br label %3380

1015:                                             ; preds = %987, %983
  %1016 = load ptr, ptr %99, align 8, !tbaa !5
  %1017 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %1016, i32 0, i32 22
  store double 1.000000e+00, ptr %1017, align 8, !tbaa !161
  br label %1018

1018:                                             ; preds = %1015, %994
  %1019 = load ptr, ptr %99, align 8, !tbaa !5
  %1020 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %1019, i32 0, i32 22
  %1021 = load double, ptr %1020, align 8, !tbaa !161
  %1022 = fcmp oeq double %1021, 1.000000e+00
  br i1 %1022, label %1023, label %1033

1023:                                             ; preds = %1018
  %1024 = load ptr, ptr %99, align 8, !tbaa !5
  %1025 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %1024, i32 0, i32 24
  %1026 = load double, ptr %1025, align 8, !tbaa !98
  %1027 = load ptr, ptr %99, align 8, !tbaa !5
  %1028 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %1027, i32 0, i32 25
  %1029 = load double, ptr %1028, align 8, !tbaa !99
  %1030 = fadd double %1029, %1026
  store double %1030, ptr %1028, align 8, !tbaa !99
  %1031 = load ptr, ptr %99, align 8, !tbaa !5
  %1032 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %1031, i32 0, i32 24
  store double 0.000000e+00, ptr %1032, align 8, !tbaa !98
  br label %1033

1033:                                             ; preds = %1023, %1018
  br label %1082

1034:                                             ; preds = %975
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #10
  store i64 0, ptr %100, align 8, !tbaa !9
  %1035 = load ptr, ptr %99, align 8, !tbaa !5
  %1036 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %1035, i32 0, i32 6
  store double 1.000000e+00, ptr %1036, align 8, !tbaa !162
  %1037 = load ptr, ptr %99, align 8, !tbaa !5
  %1038 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %1037, i32 0, i32 7
  store double 1.000000e+00, ptr %1038, align 8, !tbaa !163
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #10
  %1039 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 8
  %1040 = load ptr, ptr %1039, align 8, !tbaa !15
  %1041 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %1040, i32 0, i32 2
  store ptr %1041, ptr %101, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #10
  %1042 = load ptr, ptr %101, align 8, !tbaa !5
  %1043 = call ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1042) #10
  %1044 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.108", ptr %102, i32 0, i32 0
  store ptr %1043, ptr %1044, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #10
  %1045 = load ptr, ptr %101, align 8, !tbaa !5
  %1046 = call ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1045) #10
  %1047 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.108", ptr %103, i32 0, i32 0
  store ptr %1046, ptr %1047, align 8
  br label %1048

1048:                                             ; preds = %1079, %1034
  %1049 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %102, ptr noundef nonnull align 8 dereferenceable(8) %103) #10
  br i1 %1049, label %1051, label %1050

1050:                                             ; preds = %1048
  store i32 37, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #10
  br label %1081

1051:                                             ; preds = %1048
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #10
  %1052 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %102) #10
  store ptr %1052, ptr %104, align 8, !tbaa !5
  %1053 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 2
  %1054 = load i64, ptr %100, align 8, !tbaa !9
  %1055 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1053, i64 noundef %1054) #10
  %1056 = load i64, ptr %1055, align 8, !tbaa !9
  %1057 = sitofp i64 %1056 to double
  %1058 = load ptr, ptr %99, align 8, !tbaa !5
  %1059 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %1058, i32 0, i32 6
  %1060 = load double, ptr %1059, align 8, !tbaa !162
  %1061 = fmul double %1060, %1057
  store double %1061, ptr %1059, align 8, !tbaa !162
  %1062 = load ptr, ptr %104, align 8, !tbaa !5
  %1063 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop", ptr %1062, i32 0, i32 2
  %1064 = load i8, ptr %1063, align 1, !tbaa !164, !range !55, !noundef !56
  %1065 = trunc i8 %1064 to i1
  br i1 %1065, label %1076, label %1066

1066:                                             ; preds = %1051
  %1067 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 2
  %1068 = load i64, ptr %100, align 8, !tbaa !9
  %1069 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1067, i64 noundef %1068) #10
  %1070 = load i64, ptr %1069, align 8, !tbaa !9
  %1071 = sitofp i64 %1070 to double
  %1072 = load ptr, ptr %99, align 8, !tbaa !5
  %1073 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %1072, i32 0, i32 7
  %1074 = load double, ptr %1073, align 8, !tbaa !163
  %1075 = fmul double %1074, %1071
  store double %1075, ptr %1073, align 8, !tbaa !163
  br label %1076

1076:                                             ; preds = %1066, %1051
  %1077 = load i64, ptr %100, align 8, !tbaa !9
  %1078 = add i64 %1077, 1
  store i64 %1078, ptr %100, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #10
  br label %1079

1079:                                             ; preds = %1076
  %1080 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %102) #10
  br label %1048

1081:                                             ; preds = %1050
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #10
  br label %1082

1082:                                             ; preds = %1081, %1033
  call void @llvm.lifetime.start.p0(i64 1, ptr %105) #10
  %1083 = load ptr, ptr %18, align 8, !tbaa !5
  %1084 = call noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler8LoopNest7is_rootEv(ptr noundef nonnull align 8 dereferenceable(196) %1083)
  %1085 = zext i1 %1084 to i8
  store i8 %1085, ptr %105, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %106) #10
  %1086 = load ptr, ptr %18, align 8, !tbaa !5
  %1087 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %1086, i32 0, i32 7
  %1088 = load ptr, ptr %1087, align 8, !tbaa !136
  %1089 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 7
  %1090 = load ptr, ptr %1089, align 8, !tbaa !136
  %1091 = icmp ne ptr %1088, %1090
  %1092 = zext i1 %1091 to i8
  store i8 %1092, ptr %106, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %107) #10
  %1093 = load i8, ptr %106, align 1, !tbaa !11, !range !55, !noundef !56
  %1094 = trunc i8 %1093 to i1
  br i1 %1094, label %1095, label %1101

1095:                                             ; preds = %1082
  %1096 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 8
  %1097 = load ptr, ptr %1096, align 8, !tbaa !15
  %1098 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %1097, i32 0, i32 1
  %1099 = load i32, ptr %1098, align 8, !tbaa !144
  %1100 = icmp eq i32 %1099, 0
  br label %1101

1101:                                             ; preds = %1095, %1082
  %1102 = phi i1 [ false, %1082 ], [ %1100, %1095 ]
  %1103 = zext i1 %1102 to i8
  store i8 %1103, ptr %107, align 1, !tbaa !11
  %1104 = load i8, ptr %105, align 1, !tbaa !11, !range !55, !noundef !56
  %1105 = trunc i8 %1104 to i1
  br i1 %1105, label %1106, label %1456

1106:                                             ; preds = %1101
  %1107 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 11
  %1108 = load i8, ptr %1107, align 2, !tbaa !60, !range !55, !noundef !56
  %1109 = trunc i8 %1108 to i1
  br i1 %1109, label %1110, label %1198

1110:                                             ; preds = %1106
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #10
  %1111 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 7
  %1112 = load ptr, ptr %1111, align 8, !tbaa !136
  %1113 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Halide8Internal13Autoscheduler8LoopNest10get_boundsEPKNS1_11FunctionDAG4NodeE(ptr noundef nonnull align 8 dereferenceable(196) %316, ptr noundef %1112)
  store ptr %1113, ptr %108, align 8, !tbaa !5
  %1114 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 7
  %1115 = load ptr, ptr %1114, align 8, !tbaa !136
  %1116 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %1115, i32 0, i32 2
  %1117 = load double, ptr %1116, align 8, !tbaa !125
  %1118 = load ptr, ptr %99, align 8, !tbaa !5
  %1119 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %1118, i32 0, i32 29
  store double %1117, ptr %1119, align 8, !tbaa !131
  call void @llvm.lifetime.start.p0(i64 8, ptr %109) #10
  store i64 1, ptr %109, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %110) #10
  store i32 0, ptr %110, align 4, !tbaa !13
  br label %1120

1120:                                             ; preds = %1185, %1110
  %1121 = load i32, ptr %110, align 4, !tbaa !13
  %1122 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 7
  %1123 = load ptr, ptr %1122, align 8, !tbaa !136
  %1124 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %1123, i32 0, i32 12
  %1125 = load i32, ptr %1124, align 4, !tbaa !127
  %1126 = icmp slt i32 %1121, %1125
  br i1 %1126, label %1128, label %1127

1127:                                             ; preds = %1120
  store i32 39, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #10
  br label %1188

1128:                                             ; preds = %1120
  call void @llvm.lifetime.start.p0(i64 8, ptr %111) #10
  store i64 1, ptr %111, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %112) #10
  store i64 0, ptr %112, align 8, !tbaa !9
  br label %1129

1129:                                             ; preds = %1158, %1128
  %1130 = load i64, ptr %112, align 8, !tbaa !9
  %1131 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 8
  %1132 = load ptr, ptr %1131, align 8, !tbaa !15
  %1133 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %1132, i32 0, i32 2
  %1134 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1133) #10
  %1135 = icmp ult i64 %1130, %1134
  br i1 %1135, label %1137, label %1136

1136:                                             ; preds = %1129
  store i32 42, ptr %33, align 4
  br label %1161

1137:                                             ; preds = %1129
  %1138 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 8
  %1139 = load ptr, ptr %1138, align 8, !tbaa !15
  %1140 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %1139, i32 0, i32 2
  %1141 = load i64, ptr %112, align 8, !tbaa !9
  %1142 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1140, i64 noundef %1141) #10
  %1143 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop", ptr %1142, i32 0, i32 0
  %1144 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 7
  %1145 = load ptr, ptr %1144, align 8, !tbaa !136
  %1146 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %1145, i32 0, i32 1
  %1147 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal8Function4argsB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %1146)
  %1148 = load i32, ptr %110, align 4, !tbaa !13
  %1149 = sext i32 %1148 to i64
  %1150 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1147, i64 noundef %1149) #10
  %1151 = call noundef zeroext i1 @_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_(ptr noundef nonnull align 8 dereferenceable(32) %1143, ptr noundef nonnull align 8 dereferenceable(32) %1150) #10
  br i1 %1151, label %1152, label %1157

1152:                                             ; preds = %1137
  %1153 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 2
  %1154 = load i64, ptr %112, align 8, !tbaa !9
  %1155 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1153, i64 noundef %1154) #10
  %1156 = load i64, ptr %1155, align 8, !tbaa !9
  store i64 %1156, ptr %111, align 8, !tbaa !9
  store i32 42, ptr %33, align 4
  br label %1161

1157:                                             ; preds = %1137
  br label %1158

1158:                                             ; preds = %1157
  %1159 = load i64, ptr %112, align 8, !tbaa !9
  %1160 = add i64 %1159, 1
  store i64 %1160, ptr %112, align 8, !tbaa !9
  br label %1129, !llvm.loop !165

1161:                                             ; preds = %1152, %1136
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #10
  br label %1162

1162:                                             ; preds = %1161
  call void @llvm.lifetime.start.p0(i64 8, ptr %113) #10
  %1163 = load ptr, ptr %108, align 8, !tbaa !5
  %1164 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1163)
  %1165 = load i32, ptr %110, align 4, !tbaa !13
  %1166 = call noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents15region_computedEi(ptr noundef nonnull align 8 dereferenceable(16) %1164, i32 noundef %1165)
  store ptr %1166, ptr %113, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #10
  %1167 = load ptr, ptr %113, align 8, !tbaa !5
  %1168 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17) %1167)
  store i64 %1168, ptr %114, align 8, !tbaa !9
  %1169 = load i64, ptr %111, align 8, !tbaa !9
  %1170 = load i64, ptr %114, align 8, !tbaa !9
  %1171 = sdiv i64 %1170, %1169
  store i64 %1171, ptr %114, align 8, !tbaa !9
  %1172 = load i64, ptr %114, align 8, !tbaa !9
  %1173 = sitofp i64 %1172 to double
  %1174 = load ptr, ptr %99, align 8, !tbaa !5
  %1175 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %1174, i32 0, i32 29
  %1176 = load double, ptr %1175, align 8, !tbaa !131
  %1177 = fmul double %1176, %1173
  store double %1177, ptr %1175, align 8, !tbaa !131
  %1178 = load i32, ptr %110, align 4, !tbaa !13
  %1179 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 13
  %1180 = load i32, ptr %1179, align 4, !tbaa !129
  %1181 = icmp eq i32 %1178, %1180
  br i1 %1181, label %1182, label %1184

1182:                                             ; preds = %1162
  %1183 = load i64, ptr %114, align 8, !tbaa !9
  store i64 %1183, ptr %109, align 8, !tbaa !9
  br label %1184

1184:                                             ; preds = %1182, %1162
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #10
  br label %1185

1185:                                             ; preds = %1184
  %1186 = load i32, ptr %110, align 4, !tbaa !13
  %1187 = add nsw i32 %1186, 1
  store i32 %1187, ptr %110, align 4, !tbaa !13
  br label %1120, !llvm.loop !166

1188:                                             ; preds = %1127
  %1189 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 7
  %1190 = load ptr, ptr %1189, align 8, !tbaa !136
  %1191 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %1190, i32 0, i32 2
  %1192 = load double, ptr %1191, align 8, !tbaa !125
  %1193 = load i64, ptr %109, align 8, !tbaa !9
  %1194 = sitofp i64 %1193 to double
  %1195 = fmul double %1192, %1194
  %1196 = load ptr, ptr %99, align 8, !tbaa !5
  %1197 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %1196, i32 0, i32 30
  store double %1195, ptr %1197, align 8, !tbaa !132
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #10
  br label %1223

1198:                                             ; preds = %1106
  %1199 = load ptr, ptr %99, align 8, !tbaa !5
  %1200 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %1199, i32 0, i32 11
  %1201 = load double, ptr %1200, align 8, !tbaa !126
  %1202 = load ptr, ptr %14, align 8, !tbaa !5
  %1203 = getelementptr inbounds %"struct.Halide::MachineParams", ptr %1202, i32 0, i32 0
  %1204 = load i32, ptr %1203, align 8, !tbaa !57
  %1205 = sitofp i32 %1204 to double
  %1206 = fadd double %1201, %1205
  %1207 = fsub double %1206, 1.000000e+00
  %1208 = load ptr, ptr %14, align 8, !tbaa !5
  %1209 = getelementptr inbounds %"struct.Halide::MachineParams", ptr %1208, i32 0, i32 0
  %1210 = load i32, ptr %1209, align 8, !tbaa !57
  %1211 = sitofp i32 %1210 to double
  %1212 = fdiv double %1207, %1211
  %1213 = load ptr, ptr %99, align 8, !tbaa !5
  %1214 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %1213, i32 0, i32 29
  store double %1212, ptr %1214, align 8, !tbaa !131
  %1215 = load ptr, ptr %99, align 8, !tbaa !5
  %1216 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %1215, i32 0, i32 29
  %1217 = load ptr, ptr %99, align 8, !tbaa !5
  %1218 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %1217, i32 0, i32 14
  %1219 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %1216, ptr noundef nonnull align 8 dereferenceable(8) %1218)
  %1220 = load double, ptr %1219, align 8, !tbaa !158
  %1221 = load ptr, ptr %99, align 8, !tbaa !5
  %1222 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %1221, i32 0, i32 30
  store double %1220, ptr %1222, align 8, !tbaa !132
  br label %1223

1223:                                             ; preds = %1198, %1188
  %1224 = load ptr, ptr %99, align 8, !tbaa !5
  %1225 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %1224, i32 0, i32 33
  store double 0.000000e+00, ptr %1225, align 8, !tbaa !167
  %1226 = load ptr, ptr %99, align 8, !tbaa !5
  %1227 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %1226, i32 0, i32 34
  store double 0.000000e+00, ptr %1227, align 8, !tbaa !168
  call void @llvm.lifetime.start.p0(i64 24, ptr %115) #10
  call void @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS6_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %115) #10
  call void @llvm.lifetime.start.p0(i64 48, ptr %116) #10
  call void @_ZNSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %116) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %117) #10
  %1228 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 8
  %1229 = load ptr, ptr %1228, align 8, !tbaa !15
  %1230 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %1229, i32 0, i32 10
  store ptr %1230, ptr %117, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %118) #10
  %1231 = load ptr, ptr %117, align 8, !tbaa !5
  %1232 = call ptr @_ZNKSt6vectorIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1231) #10
  %1233 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.97", ptr %118, i32 0, i32 0
  store ptr %1232, ptr %1233, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #10
  %1234 = load ptr, ptr %117, align 8, !tbaa !5
  %1235 = call ptr @_ZNKSt6vectorIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1234) #10
  %1236 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.97", ptr %119, i32 0, i32 0
  store ptr %1235, ptr %1236, align 8
  br label %1237

1237:                                             ; preds = %1244, %1223
  %1238 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %118, ptr noundef nonnull align 8 dereferenceable(8) %119) #10
  br i1 %1238, label %1240, label %1239

1239:                                             ; preds = %1237
  store i32 45, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #10
  br label %1250

1240:                                             ; preds = %1237
  call void @llvm.lifetime.start.p0(i64 8, ptr %120) #10
  %1241 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %118) #10
  %1242 = load ptr, ptr %1241, align 8, !tbaa !5
  store ptr %1242, ptr %120, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS6_EE9push_backERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %115, ptr noundef nonnull align 8 dereferenceable(8) %120)
          to label %1243 unwind label %1246

1243:                                             ; preds = %1240
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #10
  br label %1244

1244:                                             ; preds = %1243
  %1245 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %118) #10
  br label %1237

1246:                                             ; preds = %1240
  %1247 = landingpad { ptr, i32 }
          cleanup
  %1248 = extractvalue { ptr, i32 } %1247, 0
  store ptr %1248, ptr %41, align 8
  %1249 = extractvalue { ptr, i32 } %1247, 1
  store i32 %1249, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #10
  br label %1455

1250:                                             ; preds = %1239
  br label %1251

1251:                                             ; preds = %1451, %1449, %1250
  %1252 = call noundef zeroext i1 @_ZNKSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS6_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %115) #10
  %1253 = xor i1 %1252, true
  br i1 %1253, label %1254, label %1454

1254:                                             ; preds = %1251
  call void @llvm.lifetime.start.p0(i64 8, ptr %121) #10
  %1255 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS6_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %115) #10
  %1256 = load ptr, ptr %1255, align 8, !tbaa !5
  store ptr %1256, ptr %121, align 8, !tbaa !5
  call void @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS6_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %115) #10
  %1257 = load ptr, ptr %121, align 8, !tbaa !5
  %1258 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %1257, i32 0, i32 1
  %1259 = invoke noundef i64 @_ZNKSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE5countERKS6_(ptr noundef nonnull align 8 dereferenceable(48) %116, ptr noundef nonnull align 8 dereferenceable(8) %1258)
          to label %1260 unwind label %1263

1260:                                             ; preds = %1254
  %1261 = icmp ne i64 %1259, 0
  br i1 %1261, label %1262, label %1267

1262:                                             ; preds = %1260
  store i32 47, ptr %33, align 4
  br label %1449, !llvm.loop !169

1263:                                             ; preds = %1267, %1254
  %1264 = landingpad { ptr, i32 }
          cleanup
  %1265 = extractvalue { ptr, i32 } %1264, 0
  store ptr %1265, ptr %41, align 8
  %1266 = extractvalue { ptr, i32 } %1264, 1
  store i32 %1266, ptr %42, align 4
  br label %1453

1267:                                             ; preds = %1260
  %1268 = load ptr, ptr %121, align 8, !tbaa !5
  %1269 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %1268, i32 0, i32 1
  %1270 = invoke { ptr, i8 } @_ZNSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE6insertERKS6_(ptr noundef nonnull align 8 dereferenceable(48) %116, ptr noundef nonnull align 8 dereferenceable(8) %1269)
          to label %1271 unwind label %1263

1271:                                             ; preds = %1267
  %1272 = getelementptr inbounds { ptr, i8 }, ptr %122, i32 0, i32 0
  %1273 = extractvalue { ptr, i8 } %1270, 0
  store ptr %1273, ptr %1272, align 8
  %1274 = getelementptr inbounds { ptr, i8 }, ptr %122, i32 0, i32 1
  %1275 = extractvalue { ptr, i8 } %1270, 1
  store i8 %1275, ptr %1274, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %123) #10
  %1276 = load ptr, ptr %15, align 8, !tbaa !5
  %1277 = load ptr, ptr %121, align 8, !tbaa !5
  %1278 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %1277, i32 0, i32 1
  %1279 = load ptr, ptr %1278, align 8, !tbaa !170
  %1280 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %1279, i32 0, i32 7
  %1281 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1280, i64 noundef 0) #10
  %1282 = invoke noundef nonnull align 8 dereferenceable(41) ptr @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS2_8LoopNest5SitesELi4E22PerfectHashMapAsserterE3getEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %1276, ptr noundef %1281)
          to label %1283 unwind label %1333

1283:                                             ; preds = %1271
  store ptr %1282, ptr %123, align 8, !tbaa !5
  %1284 = load ptr, ptr %123, align 8, !tbaa !5
  %1285 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::Sites", ptr %1284, i32 0, i32 1
  %1286 = load ptr, ptr %1285, align 8, !tbaa !171
  %1287 = invoke noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler8LoopNest7is_rootEv(ptr noundef nonnull align 8 dereferenceable(196) %1286)
          to label %1288 unwind label %1333

1288:                                             ; preds = %1283
  br i1 %1287, label %1289, label %1401

1289:                                             ; preds = %1288
  call void @llvm.lifetime.start.p0(i64 8, ptr %124) #10
  %1290 = load ptr, ptr %121, align 8, !tbaa !5
  %1291 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %1290, i32 0, i32 1
  %1292 = load ptr, ptr %1291, align 8, !tbaa !170
  %1293 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Halide8Internal13Autoscheduler8LoopNest10get_boundsEPKNS1_11FunctionDAG4NodeE(ptr noundef nonnull align 8 dereferenceable(196) %316, ptr noundef %1292)
          to label %1294 unwind label %1337

1294:                                             ; preds = %1289
  store ptr %1293, ptr %124, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %125) #10
  %1295 = load ptr, ptr %121, align 8, !tbaa !5
  %1296 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %1295, i32 0, i32 1
  %1297 = load ptr, ptr %1296, align 8, !tbaa !170
  %1298 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %1297, i32 0, i32 2
  %1299 = load double, ptr %1298, align 8, !tbaa !125
  %1300 = fptosi double %1299 to i64
  store i64 %1300, ptr %125, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %126) #10
  store i64 1, ptr %126, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %127) #10
  store i64 1, ptr %127, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %128) #10
  %1301 = load ptr, ptr %121, align 8, !tbaa !5
  %1302 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %1301, i32 0, i32 1
  %1303 = load ptr, ptr %1302, align 8, !tbaa !170
  %1304 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %1303, i32 0, i32 14
  %1305 = load i8, ptr %1304, align 1, !tbaa !63, !range !55, !noundef !56
  %1306 = trunc i8 %1305 to i1
  br i1 %1306, label %1307, label %1308

1307:                                             ; preds = %1294
  br label %1322

1308:                                             ; preds = %1294
  %1309 = load ptr, ptr %123, align 8, !tbaa !5
  %1310 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::Sites", ptr %1309, i32 0, i32 2
  %1311 = load ptr, ptr %1310, align 8, !tbaa !100
  %1312 = icmp ne ptr %1311, null
  br i1 %1312, label %1313, label %1319

1313:                                             ; preds = %1308
  %1314 = load ptr, ptr %123, align 8, !tbaa !5
  %1315 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::Sites", ptr %1314, i32 0, i32 2
  %1316 = load ptr, ptr %1315, align 8, !tbaa !100
  %1317 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %1316, i32 0, i32 13
  %1318 = load i32, ptr %1317, align 4, !tbaa !129
  br label %1320

1319:                                             ; preds = %1308
  br label %1320

1320:                                             ; preds = %1319, %1313
  %1321 = phi i32 [ %1318, %1313 ], [ -1, %1319 ]
  br label %1322

1322:                                             ; preds = %1320, %1307
  %1323 = phi i32 [ 0, %1307 ], [ %1321, %1320 ]
  store i32 %1323, ptr %128, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %129) #10
  store i32 0, ptr %129, align 4, !tbaa !13
  br label %1324

1324:                                             ; preds = %1368, %1322
  %1325 = load i32, ptr %129, align 4, !tbaa !13
  %1326 = load ptr, ptr %121, align 8, !tbaa !5
  %1327 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %1326, i32 0, i32 1
  %1328 = load ptr, ptr %1327, align 8, !tbaa !170
  %1329 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %1328, i32 0, i32 12
  %1330 = load i32, ptr %1329, align 4, !tbaa !127
  %1331 = icmp slt i32 %1325, %1330
  br i1 %1331, label %1341, label %1332

1332:                                             ; preds = %1324
  store i32 49, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %129) #10
  br label %1371

1333:                                             ; preds = %1283, %1271
  %1334 = landingpad { ptr, i32 }
          cleanup
  %1335 = extractvalue { ptr, i32 } %1334, 0
  store ptr %1335, ptr %41, align 8
  %1336 = extractvalue { ptr, i32 } %1334, 1
  store i32 %1336, ptr %42, align 4
  br label %1452

1337:                                             ; preds = %1289
  %1338 = landingpad { ptr, i32 }
          cleanup
  %1339 = extractvalue { ptr, i32 } %1338, 0
  store ptr %1339, ptr %41, align 8
  %1340 = extractvalue { ptr, i32 } %1338, 1
  store i32 %1340, ptr %42, align 4
  br label %1400

1341:                                             ; preds = %1324
  call void @llvm.lifetime.start.p0(i64 8, ptr %130) #10
  %1342 = load ptr, ptr %124, align 8, !tbaa !5
  %1343 = invoke noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1342)
          to label %1344 unwind label %1363

1344:                                             ; preds = %1341
  %1345 = load i32, ptr %129, align 4, !tbaa !13
  %1346 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents15region_requiredEi(ptr noundef nonnull align 8 dereferenceable(16) %1343, i32 noundef %1345)
          to label %1347 unwind label %1363

1347:                                             ; preds = %1344
  %1348 = invoke noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17) %1346)
          to label %1349 unwind label %1363

1349:                                             ; preds = %1347
  store i64 %1348, ptr %130, align 8, !tbaa !9
  %1350 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIlERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %130, ptr noundef nonnull align 8 dereferenceable(8) %127)
          to label %1351 unwind label %1363

1351:                                             ; preds = %1349
  %1352 = load i64, ptr %1350, align 8, !tbaa !9
  store i64 %1352, ptr %127, align 8, !tbaa !9
  %1353 = load i64, ptr %130, align 8, !tbaa !9
  %1354 = load i64, ptr %125, align 8, !tbaa !9
  %1355 = mul nsw i64 %1354, %1353
  store i64 %1355, ptr %125, align 8, !tbaa !9
  %1356 = load i32, ptr %129, align 4, !tbaa !13
  %1357 = load i32, ptr %128, align 4, !tbaa !13
  %1358 = icmp ne i32 %1356, %1357
  br i1 %1358, label %1359, label %1367

1359:                                             ; preds = %1351
  %1360 = load i64, ptr %130, align 8, !tbaa !9
  %1361 = load i64, ptr %126, align 8, !tbaa !9
  %1362 = mul nsw i64 %1361, %1360
  store i64 %1362, ptr %126, align 8, !tbaa !9
  br label %1367

1363:                                             ; preds = %1349, %1347, %1344, %1341
  %1364 = landingpad { ptr, i32 }
          cleanup
  %1365 = extractvalue { ptr, i32 } %1364, 0
  store ptr %1365, ptr %41, align 8
  %1366 = extractvalue { ptr, i32 } %1364, 1
  store i32 %1366, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %130) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %129) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %128) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #10
  br label %1400

1367:                                             ; preds = %1359, %1351
  call void @llvm.lifetime.end.p0(i64 8, ptr %130) #10
  br label %1368

1368:                                             ; preds = %1367
  %1369 = load i32, ptr %129, align 4, !tbaa !13
  %1370 = add nsw i32 %1369, 1
  store i32 %1370, ptr %129, align 4, !tbaa !13
  br label %1324, !llvm.loop !172

1371:                                             ; preds = %1332
  %1372 = load ptr, ptr %121, align 8, !tbaa !5
  %1373 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %1372, i32 0, i32 1
  %1374 = load ptr, ptr %1373, align 8, !tbaa !170
  %1375 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %1374, i32 0, i32 14
  %1376 = load i8, ptr %1375, align 1, !tbaa !63, !range !55, !noundef !56
  %1377 = trunc i8 %1376 to i1
  br i1 %1377, label %1387, label %1378

1378:                                             ; preds = %1371
  %1379 = load ptr, ptr %123, align 8, !tbaa !5
  %1380 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::Sites", ptr %1379, i32 0, i32 2
  %1381 = load ptr, ptr %1380, align 8, !tbaa !100
  %1382 = icmp eq ptr %1381, null
  br i1 %1382, label %1383, label %1387

1383:                                             ; preds = %1378
  %1384 = load i64, ptr %127, align 8, !tbaa !9
  %1385 = load i64, ptr %126, align 8, !tbaa !9
  %1386 = sdiv i64 %1385, %1384
  store i64 %1386, ptr %126, align 8, !tbaa !9
  br label %1387

1387:                                             ; preds = %1383, %1378, %1371
  %1388 = load i64, ptr %125, align 8, !tbaa !9
  %1389 = sitofp i64 %1388 to double
  %1390 = load ptr, ptr %99, align 8, !tbaa !5
  %1391 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %1390, i32 0, i32 33
  %1392 = load double, ptr %1391, align 8, !tbaa !167
  %1393 = fadd double %1392, %1389
  store double %1393, ptr %1391, align 8, !tbaa !167
  %1394 = load i64, ptr %126, align 8, !tbaa !9
  %1395 = sitofp i64 %1394 to double
  %1396 = load ptr, ptr %99, align 8, !tbaa !5
  %1397 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %1396, i32 0, i32 34
  %1398 = load double, ptr %1397, align 8, !tbaa !168
  %1399 = fadd double %1398, %1395
  store double %1399, ptr %1397, align 8, !tbaa !168
  call void @llvm.lifetime.end.p0(i64 4, ptr %128) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #10
  br label %1448

1400:                                             ; preds = %1363, %1337
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #10
  br label %1452

1401:                                             ; preds = %1288
  %1402 = load ptr, ptr %123, align 8, !tbaa !5
  %1403 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::Sites", ptr %1402, i32 0, i32 2
  %1404 = load ptr, ptr %1403, align 8, !tbaa !100
  %1405 = icmp ne ptr %1404, null
  br i1 %1405, label %1406, label %1447

1406:                                             ; preds = %1401
  call void @llvm.lifetime.start.p0(i64 8, ptr %131) #10
  %1407 = load ptr, ptr %121, align 8, !tbaa !5
  %1408 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %1407, i32 0, i32 1
  %1409 = load ptr, ptr %1408, align 8, !tbaa !170
  %1410 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %1409, i32 0, i32 7
  store ptr %1410, ptr %131, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %132) #10
  %1411 = load ptr, ptr %131, align 8, !tbaa !5
  %1412 = call ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1411) #10
  %1413 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.119", ptr %132, i32 0, i32 0
  store ptr %1412, ptr %1413, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %133) #10
  %1414 = load ptr, ptr %131, align 8, !tbaa !5
  %1415 = call ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1414) #10
  %1416 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.119", ptr %133, i32 0, i32 0
  store ptr %1415, ptr %1416, align 8
  br label %1417

1417:                                             ; preds = %1444, %1406
  %1418 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %132, ptr noundef nonnull align 8 dereferenceable(8) %133) #10
  br i1 %1418, label %1420, label %1419

1419:                                             ; preds = %1417
  store i32 52, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #10
  br label %1446

1420:                                             ; preds = %1417
  call void @llvm.lifetime.start.p0(i64 8, ptr %134) #10
  %1421 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %132) #10
  store ptr %1421, ptr %134, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %135) #10
  %1422 = load ptr, ptr %134, align 8, !tbaa !5
  %1423 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %1422, i32 0, i32 10
  store ptr %1423, ptr %135, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %136) #10
  %1424 = load ptr, ptr %135, align 8, !tbaa !5
  %1425 = call ptr @_ZNKSt6vectorIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1424) #10
  %1426 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.97", ptr %136, i32 0, i32 0
  store ptr %1425, ptr %1426, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %137) #10
  %1427 = load ptr, ptr %135, align 8, !tbaa !5
  %1428 = call ptr @_ZNKSt6vectorIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1427) #10
  %1429 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.97", ptr %137, i32 0, i32 0
  store ptr %1428, ptr %1429, align 8
  br label %1430

1430:                                             ; preds = %1437, %1420
  %1431 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %136, ptr noundef nonnull align 8 dereferenceable(8) %137) #10
  br i1 %1431, label %1433, label %1432

1432:                                             ; preds = %1430
  store i32 54, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #10
  br label %1443

1433:                                             ; preds = %1430
  call void @llvm.lifetime.start.p0(i64 8, ptr %138) #10
  %1434 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %136) #10
  %1435 = load ptr, ptr %1434, align 8, !tbaa !5
  store ptr %1435, ptr %138, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS6_EE9push_backERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %115, ptr noundef nonnull align 8 dereferenceable(8) %138)
          to label %1436 unwind label %1439

1436:                                             ; preds = %1433
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #10
  br label %1437

1437:                                             ; preds = %1436
  %1438 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %136) #10
  br label %1430

1439:                                             ; preds = %1433
  %1440 = landingpad { ptr, i32 }
          cleanup
  %1441 = extractvalue { ptr, i32 } %1440, 0
  store ptr %1441, ptr %41, align 8
  %1442 = extractvalue { ptr, i32 } %1440, 1
  store i32 %1442, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #10
  br label %1452

1443:                                             ; preds = %1432
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #10
  br label %1444

1444:                                             ; preds = %1443
  %1445 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %132) #10
  br label %1417

1446:                                             ; preds = %1419
  br label %1447

1447:                                             ; preds = %1446, %1401
  br label %1448

1448:                                             ; preds = %1447, %1387
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #10
  store i32 0, ptr %33, align 4
  br label %1449

1449:                                             ; preds = %1448, %1262
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #10
  %1450 = load i32, ptr %33, align 4
  switch i32 %1450, label %3390 [
    i32 0, label %1451
    i32 47, label %1251
  ]

1451:                                             ; preds = %1449
  br label %1251, !llvm.loop !169

1452:                                             ; preds = %1439, %1400, %1333
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #10
  br label %1453

1453:                                             ; preds = %1452, %1263
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #10
  br label %1455

1454:                                             ; preds = %1251
  call void @_ZNSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %116) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr %116) #10
  call void @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %115) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %115) #10
  br label %1456

1455:                                             ; preds = %1453, %1246
  call void @_ZNSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %116) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr %116) #10
  call void @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %115) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %115) #10
  br label %3379

1456:                                             ; preds = %1454, %1101
  %1457 = load i8, ptr %106, align 1, !tbaa !11, !range !55, !noundef !56
  %1458 = trunc i8 %1457 to i1
  br i1 %1458, label %1459, label %1539

1459:                                             ; preds = %1456
  %1460 = load i64, ptr %16, align 8, !tbaa !9
  %1461 = sitofp i64 %1460 to double
  %1462 = load ptr, ptr %99, align 8, !tbaa !5
  %1463 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %1462, i32 0, i32 1
  store double %1461, ptr %1463, align 8, !tbaa !173
  %1464 = load i64, ptr %25, align 8, !tbaa !9
  %1465 = sitofp i64 %1464 to double
  %1466 = load ptr, ptr %99, align 8, !tbaa !5
  %1467 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %1466, i32 0, i32 9
  store double %1465, ptr %1467, align 8, !tbaa !174
  %1468 = load i64, ptr %17, align 8, !tbaa !9
  %1469 = sitofp i64 %1468 to double
  %1470 = load ptr, ptr %99, align 8, !tbaa !5
  %1471 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %1470, i32 0, i32 10
  store double %1469, ptr %1471, align 8, !tbaa !175
  %1472 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 8
  %1473 = load ptr, ptr %1472, align 8, !tbaa !15
  %1474 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %1473, i32 0, i32 4
  %1475 = load i32, ptr %1474, align 4, !tbaa !103
  %1476 = sitofp i32 %1475 to double
  %1477 = load ptr, ptr %99, align 8, !tbaa !5
  %1478 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %1477, i32 0, i32 23
  store double %1476, ptr %1478, align 8, !tbaa !176
  call void @llvm.lifetime.start.p0(i64 8, ptr %139) #10
  %1479 = load ptr, ptr %18, align 8, !tbaa !5
  %1480 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 7
  %1481 = load ptr, ptr %1480, align 8, !tbaa !136
  %1482 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Halide8Internal13Autoscheduler8LoopNest10get_boundsEPKNS1_11FunctionDAG4NodeE(ptr noundef nonnull align 8 dereferenceable(196) %1479, ptr noundef %1481)
  store ptr %1482, ptr %139, align 8, !tbaa !5
  %1483 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 7
  %1484 = load ptr, ptr %1483, align 8, !tbaa !136
  %1485 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %1484, i32 0, i32 2
  %1486 = load double, ptr %1485, align 8, !tbaa !125
  %1487 = load ptr, ptr %99, align 8, !tbaa !5
  %1488 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %1487, i32 0, i32 12
  store double %1486, ptr %1488, align 8, !tbaa !134
  call void @llvm.lifetime.start.p0(i64 4, ptr %140) #10
  store i32 0, ptr %140, align 4, !tbaa !13
  br label %1489

1489:                                             ; preds = %1509, %1459
  %1490 = load i32, ptr %140, align 4, !tbaa !13
  %1491 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 7
  %1492 = load ptr, ptr %1491, align 8, !tbaa !136
  %1493 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %1492, i32 0, i32 12
  %1494 = load i32, ptr %1493, align 4, !tbaa !127
  %1495 = icmp slt i32 %1490, %1494
  br i1 %1495, label %1497, label %1496

1496:                                             ; preds = %1489
  store i32 56, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %140) #10
  br label %1512

1497:                                             ; preds = %1489
  call void @llvm.lifetime.start.p0(i64 8, ptr %141) #10
  %1498 = load ptr, ptr %139, align 8, !tbaa !5
  %1499 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1498)
  %1500 = load i32, ptr %140, align 4, !tbaa !13
  %1501 = call noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents15region_computedEi(ptr noundef nonnull align 8 dereferenceable(16) %1499, i32 noundef %1500)
  store ptr %1501, ptr %141, align 8, !tbaa !5
  %1502 = load ptr, ptr %141, align 8, !tbaa !5
  %1503 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17) %1502)
  %1504 = sitofp i64 %1503 to double
  %1505 = load ptr, ptr %99, align 8, !tbaa !5
  %1506 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %1505, i32 0, i32 12
  %1507 = load double, ptr %1506, align 8, !tbaa !134
  %1508 = fmul double %1507, %1504
  store double %1508, ptr %1506, align 8, !tbaa !134
  call void @llvm.lifetime.end.p0(i64 8, ptr %141) #10
  br label %1509

1509:                                             ; preds = %1497
  %1510 = load i32, ptr %140, align 4, !tbaa !13
  %1511 = add nsw i32 %1510, 1
  store i32 %1511, ptr %140, align 4, !tbaa !13
  br label %1489, !llvm.loop !177

1512:                                             ; preds = %1496
  call void @llvm.lifetime.start.p0(i64 8, ptr %142) #10
  store i64 1, ptr %142, align 8, !tbaa !9
  %1513 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 13
  %1514 = load i32, ptr %1513, align 4, !tbaa !129
  %1515 = icmp sge i32 %1514, 0
  br i1 %1515, label %1516, label %1529

1516:                                             ; preds = %1512
  %1517 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 7
  %1518 = load ptr, ptr %1517, align 8, !tbaa !136
  %1519 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %1518, i32 0, i32 12
  %1520 = load i32, ptr %1519, align 4, !tbaa !127
  %1521 = icmp sgt i32 %1520, 0
  br i1 %1521, label %1522, label %1529

1522:                                             ; preds = %1516
  %1523 = load ptr, ptr %139, align 8, !tbaa !5
  %1524 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1523)
  %1525 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 13
  %1526 = load i32, ptr %1525, align 4, !tbaa !129
  %1527 = call noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents15region_computedEi(ptr noundef nonnull align 8 dereferenceable(16) %1524, i32 noundef %1526)
  %1528 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17) %1527)
  store i64 %1528, ptr %142, align 8, !tbaa !9
  br label %1529

1529:                                             ; preds = %1522, %1516, %1512
  %1530 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 7
  %1531 = load ptr, ptr %1530, align 8, !tbaa !136
  %1532 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %1531, i32 0, i32 2
  %1533 = load double, ptr %1532, align 8, !tbaa !125
  %1534 = load i64, ptr %142, align 8, !tbaa !9
  %1535 = sitofp i64 %1534 to double
  %1536 = fmul double %1533, %1535
  %1537 = load ptr, ptr %99, align 8, !tbaa !5
  %1538 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %1537, i32 0, i32 15
  store double %1536, ptr %1538, align 8, !tbaa !178
  call void @llvm.lifetime.end.p0(i64 8, ptr %142) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #10
  br label %1539

1539:                                             ; preds = %1529, %1456
  call void @llvm.lifetime.start.p0(i64 8, ptr %143) #10
  %1540 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 3
  store ptr %1540, ptr %143, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %144) #10
  %1541 = load ptr, ptr %143, align 8, !tbaa !5
  %1542 = call ptr @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1541) #10
  %1543 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.54", ptr %144, i32 0, i32 0
  store ptr %1542, ptr %1543, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %145) #10
  %1544 = load ptr, ptr %143, align 8, !tbaa !5
  %1545 = call ptr @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1544) #10
  %1546 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.54", ptr %145, i32 0, i32 0
  store ptr %1545, ptr %1546, align 8
  br label %1547

1547:                                             ; preds = %1562, %1539
  %1548 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %144, ptr noundef nonnull align 8 dereferenceable(8) %145) #10
  br i1 %1548, label %1550, label %1549

1549:                                             ; preds = %1547
  store i32 59, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %144) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %143) #10
  br label %1564

1550:                                             ; preds = %1547
  call void @llvm.lifetime.start.p0(i64 8, ptr %146) #10
  %1551 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %144) #10
  store ptr %1551, ptr %146, align 8, !tbaa !5
  %1552 = load ptr, ptr %146, align 8, !tbaa !5
  %1553 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1552)
  %1554 = load ptr, ptr %13, align 8, !tbaa !5
  %1555 = load ptr, ptr %14, align 8, !tbaa !5
  %1556 = load ptr, ptr %15, align 8, !tbaa !5
  %1557 = load i64, ptr %29, align 8, !tbaa !9
  %1558 = load i64, ptr %94, align 8, !tbaa !9
  %1559 = load ptr, ptr %18, align 8, !tbaa !5
  %1560 = load ptr, ptr %20, align 8, !tbaa !5
  %1561 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZNK6Halide8Internal13Autoscheduler8LoopNest16compute_featuresERKNS1_11FunctionDAGERKNS_13MachineParamsERK14PerfectHashMapINS3_4Node5StageENS2_5SitesELi4E22PerfectHashMapAsserterEllPKS2_SI_RSH_PlPS9_ISB_NS0_16ScheduleFeaturesELi4ESD_E(ptr noundef nonnull align 8 dereferenceable(196) %1553, ptr noundef nonnull align 8 dereferenceable(48) %1554, ptr noundef nonnull align 8 dereferenceable(20) %1555, ptr noundef nonnull align 8 dereferenceable(32) %1556, i64 noundef %1557, i64 noundef %1558, ptr noundef %316, ptr noundef %1559, ptr noundef nonnull align 8 dereferenceable(196) %1560, ptr noundef %23, ptr noundef %1561)
  call void @llvm.lifetime.end.p0(i64 8, ptr %146) #10
  br label %1562

1562:                                             ; preds = %1550
  %1563 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %144) #10
  br label %1547

1564:                                             ; preds = %1549
  call void @llvm.lifetime.start.p0(i64 8, ptr %147) #10
  %1565 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 5
  store ptr %1565, ptr %147, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %148) #10
  %1566 = load ptr, ptr %147, align 8, !tbaa !5
  %1567 = call ptr @_ZNKSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %1566) #10
  %1568 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %148, i32 0, i32 0
  store ptr %1567, ptr %1568, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %149) #10
  %1569 = load ptr, ptr %147, align 8, !tbaa !5
  %1570 = call ptr @_ZNKSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %1569) #10
  %1571 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %149, i32 0, i32 0
  store ptr %1570, ptr %1571, align 8
  br label %1572

1572:                                             ; preds = %1590, %1564
  %1573 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEES9_(ptr noundef nonnull align 8 dereferenceable(8) %148, ptr noundef nonnull align 8 dereferenceable(8) %149) #10
  br i1 %1573, label %1575, label %1574

1574:                                             ; preds = %1572
  store i32 61, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %149) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %148) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %147) #10
  br label %1592

1575:                                             ; preds = %1572
  call void @llvm.lifetime.start.p0(i64 8, ptr %150) #10
  %1576 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #10
  %1577 = load ptr, ptr %1576, align 8, !tbaa !5
  store ptr %1577, ptr %150, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %151) #10
  %1578 = load ptr, ptr %22, align 8, !tbaa !5
  %1579 = load ptr, ptr %150, align 8, !tbaa !5
  %1580 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %1579, i32 0, i32 7
  %1581 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1580, i64 noundef 0) #10
  %1582 = call noundef nonnull align 8 dereferenceable(312) ptr @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE3getEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %1578, ptr noundef %1581)
  store ptr %1582, ptr %151, align 8, !tbaa !5
  %1583 = load ptr, ptr %151, align 8, !tbaa !5
  %1584 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %1583, i32 0, i32 12
  %1585 = load double, ptr %1584, align 8, !tbaa !134
  %1586 = load i64, ptr %23, align 8, !tbaa !9
  %1587 = sitofp i64 %1586 to double
  %1588 = fadd double %1587, %1585
  %1589 = fptosi double %1588 to i64
  store i64 %1589, ptr %23, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %151) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %150) #10
  br label %1590

1590:                                             ; preds = %1575
  %1591 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #10
  br label %1572

1592:                                             ; preds = %1574
  call void @llvm.lifetime.start.p0(i64 8, ptr %152) #10
  %1593 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 5
  store ptr %1593, ptr %152, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %153) #10
  %1594 = load ptr, ptr %152, align 8, !tbaa !5
  %1595 = call ptr @_ZNKSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %1594) #10
  %1596 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %153, i32 0, i32 0
  store ptr %1595, ptr %1596, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %154) #10
  %1597 = load ptr, ptr %152, align 8, !tbaa !5
  %1598 = call ptr @_ZNKSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %1597) #10
  %1599 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %154, i32 0, i32 0
  store ptr %1598, ptr %1599, align 8
  br label %1600

1600:                                             ; preds = %1629, %1592
  %1601 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEES9_(ptr noundef nonnull align 8 dereferenceable(8) %153, ptr noundef nonnull align 8 dereferenceable(8) %154) #10
  br i1 %1601, label %1603, label %1602

1602:                                             ; preds = %1600
  store i32 63, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %154) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %153) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %152) #10
  br label %1631

1603:                                             ; preds = %1600
  call void @llvm.lifetime.start.p0(i64 8, ptr %155) #10
  %1604 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %153) #10
  %1605 = load ptr, ptr %1604, align 8, !tbaa !5
  store ptr %1605, ptr %155, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %156) #10
  %1606 = load ptr, ptr %155, align 8, !tbaa !5
  %1607 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %1606, i32 0, i32 7
  store ptr %1607, ptr %156, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %157) #10
  %1608 = load ptr, ptr %156, align 8, !tbaa !5
  %1609 = call ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1608) #10
  %1610 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.78", ptr %157, i32 0, i32 0
  store ptr %1609, ptr %1610, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %158) #10
  %1611 = load ptr, ptr %156, align 8, !tbaa !5
  %1612 = call ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1611) #10
  %1613 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.78", ptr %158, i32 0, i32 0
  store ptr %1612, ptr %1613, align 8
  br label %1614

1614:                                             ; preds = %1626, %1603
  %1615 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %157, ptr noundef nonnull align 8 dereferenceable(8) %158) #10
  br i1 %1615, label %1617, label %1616

1616:                                             ; preds = %1614
  store i32 65, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %158) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %157) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %156) #10
  br label %1628

1617:                                             ; preds = %1614
  call void @llvm.lifetime.start.p0(i64 8, ptr %159) #10
  %1618 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %157) #10
  store ptr %1618, ptr %159, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %160) #10
  %1619 = load ptr, ptr %22, align 8, !tbaa !5
  %1620 = load ptr, ptr %159, align 8, !tbaa !5
  %1621 = call noundef nonnull align 8 dereferenceable(312) ptr @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE3getEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %1619, ptr noundef %1620)
  store ptr %1621, ptr %160, align 8, !tbaa !5
  %1622 = load i64, ptr %23, align 8, !tbaa !9
  %1623 = sitofp i64 %1622 to double
  %1624 = load ptr, ptr %160, align 8, !tbaa !5
  %1625 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %1624, i32 0, i32 37
  store double %1623, ptr %1625, align 8, !tbaa !135
  call void @llvm.lifetime.end.p0(i64 8, ptr %160) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %159) #10
  br label %1626

1626:                                             ; preds = %1617
  %1627 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %157) #10
  br label %1614

1628:                                             ; preds = %1616
  call void @llvm.lifetime.end.p0(i64 8, ptr %155) #10
  br label %1629

1629:                                             ; preds = %1628
  %1630 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %153) #10
  br label %1600

1631:                                             ; preds = %1602
  call void @llvm.lifetime.start.p0(i64 8, ptr %161) #10
  %1632 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 3
  store ptr %1632, ptr %161, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %162) #10
  %1633 = load ptr, ptr %161, align 8, !tbaa !5
  %1634 = call ptr @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1633) #10
  %1635 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.54", ptr %162, i32 0, i32 0
  store ptr %1634, ptr %1635, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %163) #10
  %1636 = load ptr, ptr %161, align 8, !tbaa !5
  %1637 = call ptr @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1636) #10
  %1638 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.54", ptr %163, i32 0, i32 0
  store ptr %1637, ptr %1638, align 8
  br label %1639

1639:                                             ; preds = %1663, %1631
  %1640 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %162, ptr noundef nonnull align 8 dereferenceable(8) %163) #10
  br i1 %1640, label %1642, label %1641

1641:                                             ; preds = %1639
  store i32 67, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %163) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %162) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %161) #10
  br label %1665

1642:                                             ; preds = %1639
  call void @llvm.lifetime.start.p0(i64 8, ptr %164) #10
  %1643 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %162) #10
  store ptr %1643, ptr %164, align 8, !tbaa !5
  %1644 = load ptr, ptr %164, align 8, !tbaa !5
  %1645 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1644)
  %1646 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %1645, i32 0, i32 7
  %1647 = load ptr, ptr %1646, align 8, !tbaa !136
  %1648 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 7
  %1649 = load ptr, ptr %1648, align 8, !tbaa !136
  %1650 = icmp ne ptr %1647, %1649
  br i1 %1650, label %1651, label %1662

1651:                                             ; preds = %1642
  call void @llvm.lifetime.start.p0(i64 8, ptr %165) #10
  %1652 = load ptr, ptr %22, align 8, !tbaa !5
  %1653 = load ptr, ptr %164, align 8, !tbaa !5
  %1654 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1653)
  %1655 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %1654, i32 0, i32 8
  %1656 = load ptr, ptr %1655, align 8, !tbaa !15
  %1657 = call noundef nonnull align 8 dereferenceable(312) ptr @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE3getEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %1652, ptr noundef %1656)
  store ptr %1657, ptr %165, align 8, !tbaa !5
  %1658 = load i64, ptr %23, align 8, !tbaa !9
  %1659 = sitofp i64 %1658 to double
  %1660 = load ptr, ptr %165, align 8, !tbaa !5
  %1661 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %1660, i32 0, i32 36
  store double %1659, ptr %1661, align 8, !tbaa !137
  call void @llvm.lifetime.end.p0(i64 8, ptr %165) #10
  br label %1662

1662:                                             ; preds = %1651, %1642
  call void @llvm.lifetime.end.p0(i64 8, ptr %164) #10
  br label %1663

1663:                                             ; preds = %1662
  %1664 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %162) #10
  br label %1639

1665:                                             ; preds = %1641
  %1666 = load i8, ptr %105, align 1, !tbaa !11, !range !55, !noundef !56
  %1667 = trunc i8 %1666 to i1
  br i1 %1667, label %1668, label %1671

1668:                                             ; preds = %1665
  %1669 = load i64, ptr %23, align 8, !tbaa !9
  %1670 = load ptr, ptr %22, align 8, !tbaa !5
  call void @_ZNK6Halide8Internal13Autoscheduler8LoopNest31set_working_set_at_task_featureElP14PerfectHashMapINS1_11FunctionDAG4Node5StageENS0_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE(ptr noundef nonnull align 8 dereferenceable(196) %316, i64 noundef %1669, ptr noundef %1670)
  br label %1671

1671:                                             ; preds = %1668, %1665
  %1672 = load i8, ptr %106, align 1, !tbaa !11, !range !55, !noundef !56
  %1673 = trunc i8 %1672 to i1
  br i1 %1673, label %1674, label %1679

1674:                                             ; preds = %1671
  %1675 = load i64, ptr %23, align 8, !tbaa !9
  %1676 = sitofp i64 %1675 to double
  %1677 = load ptr, ptr %99, align 8, !tbaa !5
  %1678 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %1677, i32 0, i32 21
  store double %1676, ptr %1678, align 8, !tbaa !179
  br label %1679

1679:                                             ; preds = %1674, %1671
  %1680 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 9
  %1681 = load i8, ptr %1680, align 8, !tbaa !160, !range !55, !noundef !56
  %1682 = trunc i8 %1681 to i1
  br i1 %1682, label %1683, label %1759

1683:                                             ; preds = %1679
  call void @llvm.lifetime.start.p0(i64 1, ptr %166) #10
  %1684 = load ptr, ptr %99, align 8, !tbaa !5
  %1685 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %1684, i32 0, i32 7
  %1686 = load double, ptr %1685, align 8, !tbaa !163
  %1687 = fcmp ole double %1686, 1.200000e+01
  br i1 %1687, label %1688, label %1695

1688:                                             ; preds = %1683
  %1689 = load ptr, ptr %18, align 8, !tbaa !5
  %1690 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %1689, i32 0, i32 7
  %1691 = load ptr, ptr %1690, align 8, !tbaa !136
  %1692 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 7
  %1693 = load ptr, ptr %1692, align 8, !tbaa !136
  %1694 = icmp eq ptr %1691, %1693
  br label %1695

1695:                                             ; preds = %1688, %1683
  %1696 = phi i1 [ false, %1683 ], [ %1694, %1688 ]
  %1697 = zext i1 %1696 to i8
  store i8 %1697, ptr %166, align 1, !tbaa !11
  %1698 = load i8, ptr %166, align 1, !tbaa !11, !range !55, !noundef !56
  %1699 = trunc i8 %1698 to i1
  br i1 %1699, label %1700, label %1746

1700:                                             ; preds = %1695
  call void @llvm.lifetime.start.p0(i64 8, ptr %167) #10
  %1701 = load ptr, ptr %19, align 8, !tbaa !5
  %1702 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 7
  %1703 = load ptr, ptr %1702, align 8, !tbaa !136
  %1704 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Halide8Internal13Autoscheduler8LoopNest10get_boundsEPKNS1_11FunctionDAG4NodeE(ptr noundef nonnull align 8 dereferenceable(196) %1701, ptr noundef %1703)
  store ptr %1704, ptr %167, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %168) #10
  store i64 0, ptr %168, align 8, !tbaa !9
  br label %1705

1705:                                             ; preds = %1742, %1700
  %1706 = load i64, ptr %168, align 8, !tbaa !9
  %1707 = load ptr, ptr %18, align 8, !tbaa !5
  %1708 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %1707, i32 0, i32 2
  %1709 = call noundef i64 @_ZNKSt6vectorIlSaIlEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1708) #10
  %1710 = icmp ult i64 %1706, %1709
  br i1 %1710, label %1712, label %1711

1711:                                             ; preds = %1705
  store i32 69, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %168) #10
  br label %1745

1712:                                             ; preds = %1705
  %1713 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 8
  %1714 = load ptr, ptr %1713, align 8, !tbaa !15
  %1715 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %1714, i32 0, i32 2
  %1716 = load i64, ptr %168, align 8, !tbaa !9
  %1717 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1715, i64 noundef %1716) #10
  %1718 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop", ptr %1717, i32 0, i32 2
  %1719 = load i8, ptr %1718, align 1, !tbaa !164, !range !55, !noundef !56
  %1720 = trunc i8 %1719 to i1
  br i1 %1720, label %1741, label %1721

1721:                                             ; preds = %1712
  call void @llvm.lifetime.start.p0(i64 8, ptr %169) #10
  %1722 = load ptr, ptr %167, align 8, !tbaa !5
  %1723 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1722)
  %1724 = load ptr, ptr %18, align 8, !tbaa !5
  %1725 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %1724, i32 0, i32 8
  %1726 = load ptr, ptr %1725, align 8, !tbaa !15
  %1727 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %1726, i32 0, i32 1
  %1728 = load i32, ptr %1727, align 8, !tbaa !144
  %1729 = load i64, ptr %168, align 8, !tbaa !9
  %1730 = trunc i64 %1729 to i32
  %1731 = call noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents5loopsEii(ptr noundef nonnull align 8 dereferenceable(16) %1723, i32 noundef %1728, i32 noundef %1730)
  store ptr %1731, ptr %169, align 8, !tbaa !5
  %1732 = load ptr, ptr %169, align 8, !tbaa !5
  %1733 = call noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler4Span15constant_extentEv(ptr noundef nonnull align 8 dereferenceable(17) %1732)
  %1734 = zext i1 %1733 to i32
  %1735 = load i8, ptr %166, align 1, !tbaa !11, !range !55, !noundef !56
  %1736 = trunc i8 %1735 to i1
  %1737 = zext i1 %1736 to i32
  %1738 = and i32 %1737, %1734
  %1739 = icmp ne i32 %1738, 0
  %1740 = zext i1 %1739 to i8
  store i8 %1740, ptr %166, align 1, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 8, ptr %169) #10
  br label %1741

1741:                                             ; preds = %1721, %1712
  br label %1742

1742:                                             ; preds = %1741
  %1743 = load i64, ptr %168, align 8, !tbaa !9
  %1744 = add i64 %1743, 1
  store i64 %1744, ptr %168, align 8, !tbaa !9
  br label %1705, !llvm.loop !180

1745:                                             ; preds = %1711
  call void @llvm.lifetime.end.p0(i64 8, ptr %167) #10
  br label %1746

1746:                                             ; preds = %1745, %1695
  %1747 = load i8, ptr %166, align 1, !tbaa !11, !range !55, !noundef !56
  %1748 = trunc i8 %1747 to i1
  br i1 %1748, label %1749, label %1755

1749:                                             ; preds = %1746
  %1750 = load ptr, ptr %99, align 8, !tbaa !5
  %1751 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %1750, i32 0, i32 7
  %1752 = load double, ptr %1751, align 8, !tbaa !163
  %1753 = load ptr, ptr %99, align 8, !tbaa !5
  %1754 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %1753, i32 0, i32 8
  store double %1752, ptr %1754, align 8, !tbaa !181
  br label %1758

1755:                                             ; preds = %1746
  %1756 = load ptr, ptr %99, align 8, !tbaa !5
  %1757 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %1756, i32 0, i32 8
  store double 1.000000e+00, ptr %1757, align 8, !tbaa !181
  br label %1758

1758:                                             ; preds = %1755, %1749
  call void @llvm.lifetime.end.p0(i64 1, ptr %166) #10
  br label %1759

1759:                                             ; preds = %1758, %1679
  %1760 = load i64, ptr %23, align 8, !tbaa !9
  %1761 = load ptr, ptr %21, align 8, !tbaa !5
  %1762 = load i64, ptr %1761, align 8, !tbaa !9
  %1763 = add nsw i64 %1762, %1760
  store i64 %1763, ptr %1761, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %170) #10
  store i64 0, ptr %170, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %171) #10
  store i64 0, ptr %171, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %172) #10
  store i64 0, ptr %172, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %173) #10
  store double 0.000000e+00, ptr %173, align 8, !tbaa !158
  call void @llvm.lifetime.start.p0(i64 8, ptr %174) #10
  store double 0.000000e+00, ptr %174, align 8, !tbaa !158
  call void @llvm.lifetime.start.p0(i64 8, ptr %175) #10
  store double 0.000000e+00, ptr %175, align 8, !tbaa !158
  call void @llvm.lifetime.start.p0(i64 8, ptr %176) #10
  store double 0.000000e+00, ptr %176, align 8, !tbaa !158
  call void @llvm.lifetime.start.p0(i64 8, ptr %177) #10
  store double 0.000000e+00, ptr %177, align 8, !tbaa !158
  call void @llvm.lifetime.start.p0(i64 8, ptr %178) #10
  store double 0.000000e+00, ptr %178, align 8, !tbaa !158
  call void @llvm.lifetime.start.p0(i64 8, ptr %179) #10
  store double 0.000000e+00, ptr %179, align 8, !tbaa !158
  %1764 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 9
  %1765 = load i8, ptr %1764, align 8, !tbaa !160, !range !55, !noundef !56
  %1766 = trunc i8 %1765 to i1
  br i1 %1766, label %1770, label %1767

1767:                                             ; preds = %1759
  %1768 = load i8, ptr %106, align 1, !tbaa !11, !range !55, !noundef !56
  %1769 = trunc i8 %1768 to i1
  br i1 %1769, label %1770, label %3075

1770:                                             ; preds = %1767, %1759
  call void @llvm.lifetime.start.p0(i64 8, ptr %180) #10
  %1771 = load ptr, ptr %15, align 8, !tbaa !5
  %1772 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 8
  %1773 = load ptr, ptr %1772, align 8, !tbaa !15
  %1774 = call noundef nonnull align 8 dereferenceable(41) ptr @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS2_8LoopNest5SitesELi4E22PerfectHashMapAsserterE3getEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %1771, ptr noundef %1773)
  store ptr %1774, ptr %180, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %181) #10
  %1775 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 9
  %1776 = load i8, ptr %1775, align 8, !tbaa !160, !range !55, !noundef !56
  %1777 = trunc i8 %1776 to i1
  br i1 %1777, label %1778, label %1780

1778:                                             ; preds = %1770
  %1779 = load ptr, ptr %18, align 8, !tbaa !5
  br label %1784

1780:                                             ; preds = %1770
  %1781 = load ptr, ptr %180, align 8, !tbaa !5
  %1782 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::Sites", ptr %1781, i32 0, i32 1
  %1783 = load ptr, ptr %1782, align 8, !tbaa !171
  br label %1784

1784:                                             ; preds = %1780, %1778
  %1785 = phi ptr [ %1779, %1778 ], [ %1783, %1780 ]
  store ptr %1785, ptr %181, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %182) #10
  %1786 = load ptr, ptr %180, align 8, !tbaa !5
  %1787 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::Sites", ptr %1786, i32 0, i32 4
  %1788 = load ptr, ptr %1787, align 8, !tbaa !182
  store ptr %1788, ptr %182, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %183) #10
  %1789 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 9
  %1790 = load i8, ptr %1789, align 8, !tbaa !160, !range !55, !noundef !56
  %1791 = trunc i8 %1790 to i1
  br i1 %1791, label %1792, label %1795

1792:                                             ; preds = %1784
  %1793 = load i64, ptr %16, align 8, !tbaa !9
  %1794 = sitofp i64 %1793 to double
  br label %1799

1795:                                             ; preds = %1784
  %1796 = load ptr, ptr %99, align 8, !tbaa !5
  %1797 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %1796, i32 0, i32 0
  %1798 = load double, ptr %1797, align 8, !tbaa !95
  br label %1799

1799:                                             ; preds = %1795, %1792
  %1800 = phi double [ %1794, %1792 ], [ %1798, %1795 ]
  %1801 = fptosi double %1800 to i64
  store i64 %1801, ptr %183, align 8, !tbaa !9
  %1802 = load i64, ptr %183, align 8, !tbaa !9
  %1803 = icmp ne i64 %1802, 0
  call void @llvm.lifetime.start.p0(i64 1, ptr %184) #10
  store i1 false, ptr %186, align 1
  store i1 false, ptr %187, align 1
  br i1 %1803, label %1804, label %1805

1804:                                             ; preds = %1799
  br label %1809

1805:                                             ; preds = %1799
  call void @llvm.lifetime.start.p0(i64 384, ptr %185) #10
  store i1 true, ptr %186, align 1
  call void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %185, ptr noundef @.str.3, i32 noundef 590, ptr noundef @.str.6, i32 noundef 0)
  store i1 true, ptr %187, align 1
  %1806 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %185)
          to label %1807 unwind label %1837

1807:                                             ; preds = %1805
  invoke void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %184, ptr noundef nonnull align 8 dereferenceable(380) %1806)
          to label %1808 unwind label %1837

1808:                                             ; preds = %1807
  br label %1809

1809:                                             ; preds = %1808, %1804
  %1810 = load i1, ptr %187, align 1
  br i1 %1810, label %1811, label %1812

1811:                                             ; preds = %1809
  call void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %185)
  br label %1812

1812:                                             ; preds = %1811, %1809
  %1813 = load i1, ptr %186, align 1
  br i1 %1813, label %1814, label %1815

1814:                                             ; preds = %1812
  call void @llvm.lifetime.end.p0(i64 384, ptr %185) #10
  br label %1815

1815:                                             ; preds = %1814, %1812
  call void @llvm.lifetime.end.p0(i64 1, ptr %184) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %188) #10
  call void @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS7_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %188) #10
  %1816 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 8
  %1817 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS7_EE12emplace_backIJRKS7_EEERS7_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %188, ptr noundef nonnull align 8 dereferenceable(8) %1816)
          to label %1818 unwind label %1848

1818:                                             ; preds = %1815
  call void @llvm.lifetime.start.p0(i64 24, ptr %189) #10
  call void @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %189) #10
  call void @llvm.lifetime.start.p0(i64 48, ptr %190) #10
  call void @_ZNSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %190) #10
  br label %1819

1819:                                             ; preds = %3071, %1818
  %1820 = call noundef zeroext i1 @_ZNKSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS7_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %188) #10
  %1821 = xor i1 %1820, true
  br i1 %1821, label %1822, label %3072

1822:                                             ; preds = %1819
  call void @llvm.lifetime.start.p0(i64 8, ptr %191) #10
  %1823 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS7_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %188) #10
  %1824 = load ptr, ptr %1823, align 8, !tbaa !5
  store ptr %1824, ptr %191, align 8, !tbaa !5
  call void @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS7_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %188) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %192) #10
  %1825 = load ptr, ptr %191, align 8, !tbaa !5
  %1826 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %1825, i32 0, i32 10
  store ptr %1826, ptr %192, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %193) #10
  %1827 = load ptr, ptr %192, align 8, !tbaa !5
  store ptr %1827, ptr %193, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %194) #10
  %1828 = load ptr, ptr %193, align 8, !tbaa !5
  %1829 = call ptr @_ZNKSt6vectorIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1828) #10
  %1830 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.97", ptr %194, i32 0, i32 0
  store ptr %1829, ptr %1830, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %195) #10
  %1831 = load ptr, ptr %193, align 8, !tbaa !5
  %1832 = call ptr @_ZNKSt6vectorIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1831) #10
  %1833 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.97", ptr %195, i32 0, i32 0
  store ptr %1832, ptr %1833, align 8
  br label %1834

1834:                                             ; preds = %3060, %1822
  %1835 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %194, ptr noundef nonnull align 8 dereferenceable(8) %195) #10
  br i1 %1835, label %1852, label %1836

1836:                                             ; preds = %1834
  store i32 74, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %195) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %194) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %193) #10
  br label %3071

1837:                                             ; preds = %1807, %1805
  %1838 = landingpad { ptr, i32 }
          cleanup
  %1839 = extractvalue { ptr, i32 } %1838, 0
  store ptr %1839, ptr %41, align 8
  %1840 = extractvalue { ptr, i32 } %1838, 1
  store i32 %1840, ptr %42, align 4
  %1841 = load i1, ptr %187, align 1
  br i1 %1841, label %1842, label %1844

1842:                                             ; preds = %1837
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %185)
          to label %1843 unwind label %3387

1843:                                             ; preds = %1842
  br label %1844

1844:                                             ; preds = %1843, %1837
  %1845 = load i1, ptr %186, align 1
  br i1 %1845, label %1846, label %1847

1846:                                             ; preds = %1844
  call void @llvm.lifetime.end.p0(i64 384, ptr %185) #10
  br label %1847

1847:                                             ; preds = %1846, %1844
  call void @llvm.lifetime.end.p0(i64 1, ptr %184) #10
  br label %3074

1848:                                             ; preds = %1815
  %1849 = landingpad { ptr, i32 }
          cleanup
  %1850 = extractvalue { ptr, i32 } %1849, 0
  store ptr %1850, ptr %41, align 8
  %1851 = extractvalue { ptr, i32 } %1849, 1
  store i32 %1851, ptr %42, align 4
  br label %3073

1852:                                             ; preds = %1834
  call void @llvm.lifetime.start.p0(i64 8, ptr %196) #10
  %1853 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %194) #10
  %1854 = load ptr, ptr %1853, align 8, !tbaa !5
  store ptr %1854, ptr %196, align 8, !tbaa !5
  %1855 = load ptr, ptr %15, align 8, !tbaa !5
  %1856 = load ptr, ptr %196, align 8, !tbaa !5
  %1857 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %1856, i32 0, i32 1
  %1858 = load ptr, ptr %1857, align 8, !tbaa !170
  %1859 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %1858, i32 0, i32 7
  %1860 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1859, i64 noundef 0) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %197) #10
  store i1 false, ptr %199, align 1
  store i1 false, ptr %200, align 1
  %1861 = invoke noundef zeroext i1 @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS2_8LoopNest5SitesELi4E22PerfectHashMapAsserterE8containsEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %1855, ptr noundef %1860)
          to label %1862 unwind label %1933

1862:                                             ; preds = %1852
  br i1 %1861, label %1863, label %1864

1863:                                             ; preds = %1862
  br label %1881

1864:                                             ; preds = %1862
  call void @llvm.lifetime.start.p0(i64 384, ptr %198) #10
  store i1 true, ptr %199, align 1
  invoke void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %198, ptr noundef @.str.3, i32 noundef 601, ptr noundef @.str.7, i32 noundef 0)
          to label %1865 unwind label %1937

1865:                                             ; preds = %1864
  store i1 true, ptr %200, align 1
  %1866 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %198)
          to label %1867 unwind label %1941

1867:                                             ; preds = %1865
  %1868 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA19_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %1866, ptr noundef nonnull align 1 dereferenceable(19) @.str.8)
          to label %1869 unwind label %1941

1869:                                             ; preds = %1867
  %1870 = load ptr, ptr %196, align 8, !tbaa !5
  %1871 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %1870, i32 0, i32 1
  %1872 = load ptr, ptr %1871, align 8, !tbaa !170
  %1873 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %1872, i32 0, i32 1
  %1874 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide8Internal8Function4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %1873)
          to label %1875 unwind label %1941

1875:                                             ; preds = %1869
  %1876 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %1868, ptr noundef nonnull align 8 dereferenceable(32) %1874)
          to label %1877 unwind label %1941

1877:                                             ; preds = %1875
  %1878 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA2_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %1876, ptr noundef nonnull align 1 dereferenceable(2) @.str.9)
          to label %1879 unwind label %1941

1879:                                             ; preds = %1877
  invoke void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %197, ptr noundef nonnull align 8 dereferenceable(380) %1878)
          to label %1880 unwind label %1941

1880:                                             ; preds = %1879
  br label %1881

1881:                                             ; preds = %1880, %1863
  %1882 = load i1, ptr %200, align 1
  br i1 %1882, label %1883, label %1885

1883:                                             ; preds = %1881
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %198)
          to label %1884 unwind label %1937

1884:                                             ; preds = %1883
  br label %1885

1885:                                             ; preds = %1884, %1881
  %1886 = load i1, ptr %199, align 1
  br i1 %1886, label %1887, label %1888

1887:                                             ; preds = %1885
  call void @llvm.lifetime.end.p0(i64 384, ptr %198) #10
  br label %1888

1888:                                             ; preds = %1887, %1885
  call void @llvm.lifetime.end.p0(i64 1, ptr %197) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %201) #10
  %1889 = load ptr, ptr %15, align 8, !tbaa !5
  %1890 = load ptr, ptr %196, align 8, !tbaa !5
  %1891 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %1890, i32 0, i32 1
  %1892 = load ptr, ptr %1891, align 8, !tbaa !170
  %1893 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %1892, i32 0, i32 7
  %1894 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1893, i64 noundef 0) #10
  %1895 = invoke noundef nonnull align 8 dereferenceable(41) ptr @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS2_8LoopNest5SitesELi4E22PerfectHashMapAsserterE3getEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %1889, ptr noundef %1894)
          to label %1896 unwind label %1953

1896:                                             ; preds = %1888
  store ptr %1895, ptr %201, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %202) #10
  %1897 = load ptr, ptr %196, align 8, !tbaa !5
  %1898 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %1897, i32 0, i32 1
  %1899 = load ptr, ptr %1898, align 8, !tbaa !170
  %1900 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %1899, i32 0, i32 14
  %1901 = load i8, ptr %1900, align 1, !tbaa !63, !range !55, !noundef !56
  %1902 = trunc i8 %1901 to i1
  br i1 %1902, label %1908, label %1903

1903:                                             ; preds = %1896
  %1904 = load ptr, ptr %201, align 8, !tbaa !5
  %1905 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::Sites", ptr %1904, i32 0, i32 2
  %1906 = load ptr, ptr %1905, align 8, !tbaa !100
  %1907 = icmp ne ptr %1906, null
  br label %1908

1908:                                             ; preds = %1903, %1896
  %1909 = phi i1 [ true, %1896 ], [ %1907, %1903 ]
  %1910 = zext i1 %1909 to i8
  store i8 %1910, ptr %202, align 1, !tbaa !11
  %1911 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 9
  %1912 = load i8, ptr %1911, align 8, !tbaa !160, !range !55, !noundef !56
  %1913 = trunc i8 %1912 to i1
  br i1 %1913, label %1914, label %2040

1914:                                             ; preds = %1908
  %1915 = load ptr, ptr %196, align 8, !tbaa !5
  %1916 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %1915, i32 0, i32 2
  %1917 = load ptr, ptr %1916, align 8, !tbaa !147
  %1918 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 8
  %1919 = load ptr, ptr %1918, align 8, !tbaa !15
  %1920 = icmp eq ptr %1917, %1919
  br i1 %1920, label %1921, label %1971

1921:                                             ; preds = %1914
  call void @llvm.lifetime.start.p0(i64 8, ptr %203) #10
  %1922 = load ptr, ptr %196, align 8, !tbaa !5
  %1923 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %1922, i32 0, i32 5
  store ptr %1923, ptr %203, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %204) #10
  %1924 = load ptr, ptr %203, align 8, !tbaa !5
  %1925 = call ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler12LoadJacobianESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1924) #10
  %1926 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.130", ptr %204, i32 0, i32 0
  store ptr %1925, ptr %1926, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %205) #10
  %1927 = load ptr, ptr %203, align 8, !tbaa !5
  %1928 = call ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler12LoadJacobianESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1927) #10
  %1929 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.130", ptr %205, i32 0, i32 0
  store ptr %1928, ptr %1929, align 8
  br label %1930

1930:                                             ; preds = %1964, %1921
  %1931 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal13Autoscheduler12LoadJacobianESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %204, ptr noundef nonnull align 8 dereferenceable(8) %205) #10
  br i1 %1931, label %1957, label %1932

1932:                                             ; preds = %1930
  store i32 76, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %205) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %204) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %203) #10
  br label %1970

1933:                                             ; preds = %1852
  %1934 = landingpad { ptr, i32 }
          cleanup
  %1935 = extractvalue { ptr, i32 } %1934, 0
  store ptr %1935, ptr %41, align 8
  %1936 = extractvalue { ptr, i32 } %1934, 1
  store i32 %1936, ptr %42, align 4
  br label %3070

1937:                                             ; preds = %1883, %1864
  %1938 = landingpad { ptr, i32 }
          cleanup
  %1939 = extractvalue { ptr, i32 } %1938, 0
  store ptr %1939, ptr %41, align 8
  %1940 = extractvalue { ptr, i32 } %1938, 1
  store i32 %1940, ptr %42, align 4
  br label %1949

1941:                                             ; preds = %1879, %1877, %1875, %1869, %1867, %1865
  %1942 = landingpad { ptr, i32 }
          cleanup
  %1943 = extractvalue { ptr, i32 } %1942, 0
  store ptr %1943, ptr %41, align 8
  %1944 = extractvalue { ptr, i32 } %1942, 1
  store i32 %1944, ptr %42, align 4
  %1945 = load i1, ptr %200, align 1
  br i1 %1945, label %1946, label %1948

1946:                                             ; preds = %1941
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %198)
          to label %1947 unwind label %3387

1947:                                             ; preds = %1946
  br label %1948

1948:                                             ; preds = %1947, %1941
  br label %1949

1949:                                             ; preds = %1948, %1937
  %1950 = load i1, ptr %199, align 1
  br i1 %1950, label %1951, label %1952

1951:                                             ; preds = %1949
  call void @llvm.lifetime.end.p0(i64 384, ptr %198) #10
  br label %1952

1952:                                             ; preds = %1951, %1949
  call void @llvm.lifetime.end.p0(i64 1, ptr %197) #10
  br label %3070

1953:                                             ; preds = %1888
  %1954 = landingpad { ptr, i32 }
          cleanup
  %1955 = extractvalue { ptr, i32 } %1954, 0
  store ptr %1955, ptr %41, align 8
  %1956 = extractvalue { ptr, i32 } %1954, 1
  store i32 %1956, ptr %42, align 4
  br label %3069

1957:                                             ; preds = %1930
  call void @llvm.lifetime.start.p0(i64 8, ptr %206) #10
  %1958 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal13Autoscheduler12LoadJacobianESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %204) #10
  store ptr %1958, ptr %206, align 8, !tbaa !5
  %1959 = load ptr, ptr %206, align 8, !tbaa !5
  %1960 = load ptr, ptr %196, align 8, !tbaa !5
  %1961 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %1960, i32 0, i32 1
  %1962 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EE12emplace_backIJRKS4_RKS7_EEERS8_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %189, ptr noundef nonnull align 8 dereferenceable(32) %1959, ptr noundef nonnull align 8 dereferenceable(8) %1961)
          to label %1963 unwind label %1966

1963:                                             ; preds = %1957
  call void @llvm.lifetime.end.p0(i64 8, ptr %206) #10
  br label %1964

1964:                                             ; preds = %1963
  %1965 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal13Autoscheduler12LoadJacobianESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %204) #10
  br label %1930

1966:                                             ; preds = %1957
  %1967 = landingpad { ptr, i32 }
          cleanup
  %1968 = extractvalue { ptr, i32 } %1967, 0
  store ptr %1968, ptr %41, align 8
  %1969 = extractvalue { ptr, i32 } %1967, 1
  store i32 %1969, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %206) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %205) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %204) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %203) #10
  br label %3068

1970:                                             ; preds = %1932
  br label %2039

1971:                                             ; preds = %1914
  call void @llvm.lifetime.start.p0(i64 24, ptr %207) #10
  call void @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %207) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %208) #10
  store ptr %189, ptr %208, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %209) #10
  %1972 = load ptr, ptr %208, align 8, !tbaa !5
  %1973 = call ptr @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1972) #10
  %1974 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.138", ptr %209, i32 0, i32 0
  store ptr %1973, ptr %1974, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %210) #10
  %1975 = load ptr, ptr %208, align 8, !tbaa !5
  %1976 = call ptr @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1975) #10
  %1977 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.138", ptr %210, i32 0, i32 0
  store ptr %1976, ptr %1977, align 8
  br label %1978

1978:                                             ; preds = %2035, %1971
  %1979 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS4_11FunctionDAG4NodeEESt6vectorIS9_SaIS9_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %209, ptr noundef nonnull align 8 dereferenceable(8) %210) #10
  br i1 %1979, label %1981, label %1980

1980:                                             ; preds = %1978
  store i32 78, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %210) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %209) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %208) #10
  br label %2038

1981:                                             ; preds = %1978
  call void @llvm.lifetime.start.p0(i64 8, ptr %211) #10
  %1982 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS4_11FunctionDAG4NodeEESt6vectorIS9_SaIS9_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %209) #10
  store ptr %1982, ptr %211, align 8, !tbaa !5
  %1983 = load ptr, ptr %196, align 8, !tbaa !5
  %1984 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %1983, i32 0, i32 2
  %1985 = load ptr, ptr %1984, align 8, !tbaa !147
  %1986 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %1985, i32 0, i32 0
  %1987 = load ptr, ptr %1986, align 8, !tbaa !138
  %1988 = load ptr, ptr %211, align 8, !tbaa !5
  %1989 = getelementptr inbounds %"struct.std::pair.136", ptr %1988, i32 0, i32 1
  %1990 = load ptr, ptr %1989, align 8, !tbaa !183
  %1991 = icmp eq ptr %1987, %1990
  br i1 %1991, label %1992, label %2026

1992:                                             ; preds = %1981
  call void @llvm.lifetime.start.p0(i64 8, ptr %212) #10
  %1993 = load ptr, ptr %196, align 8, !tbaa !5
  %1994 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %1993, i32 0, i32 5
  store ptr %1994, ptr %212, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %213) #10
  %1995 = load ptr, ptr %212, align 8, !tbaa !5
  %1996 = call ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler12LoadJacobianESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1995) #10
  %1997 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.130", ptr %213, i32 0, i32 0
  store ptr %1996, ptr %1997, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %214) #10
  %1998 = load ptr, ptr %212, align 8, !tbaa !5
  %1999 = call ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler12LoadJacobianESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1998) #10
  %2000 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.130", ptr %214, i32 0, i32 0
  store ptr %1999, ptr %2000, align 8
  br label %2001

2001:                                             ; preds = %2014, %1992
  %2002 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal13Autoscheduler12LoadJacobianESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %213, ptr noundef nonnull align 8 dereferenceable(8) %214) #10
  br i1 %2002, label %2004, label %2003

2003:                                             ; preds = %2001
  store i32 80, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %214) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %213) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %212) #10
  br label %2025

2004:                                             ; preds = %2001
  call void @llvm.lifetime.start.p0(i64 8, ptr %215) #10
  %2005 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal13Autoscheduler12LoadJacobianESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %213) #10
  store ptr %2005, ptr %215, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %216) #10
  %2006 = load ptr, ptr %215, align 8, !tbaa !5
  %2007 = load ptr, ptr %211, align 8, !tbaa !5
  %2008 = getelementptr inbounds %"struct.std::pair.136", ptr %2007, i32 0, i32 0
  invoke void @_ZNK6Halide8Internal13Autoscheduler12LoadJacobianmlERKS2_(ptr dead_on_unwind writable sret(%"class.Halide::Internal::Autoscheduler::LoadJacobian") align 8 %216, ptr noundef nonnull align 8 dereferenceable(32) %2006, ptr noundef nonnull align 8 dereferenceable(32) %2008)
          to label %2009 unwind label %2016

2009:                                             ; preds = %2004
  %2010 = load ptr, ptr %196, align 8, !tbaa !5
  %2011 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %2010, i32 0, i32 1
  %2012 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EE12emplace_backIJRS4_RKS7_EEERS8_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %207, ptr noundef nonnull align 8 dereferenceable(32) %216, ptr noundef nonnull align 8 dereferenceable(8) %2011)
          to label %2013 unwind label %2020

2013:                                             ; preds = %2009
  call void @_ZN6Halide8Internal13Autoscheduler12LoadJacobianD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %216) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %216) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %215) #10
  br label %2014

2014:                                             ; preds = %2013
  %2015 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal13Autoscheduler12LoadJacobianESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %213) #10
  br label %2001

2016:                                             ; preds = %2004
  %2017 = landingpad { ptr, i32 }
          cleanup
  %2018 = extractvalue { ptr, i32 } %2017, 0
  store ptr %2018, ptr %41, align 8
  %2019 = extractvalue { ptr, i32 } %2017, 1
  store i32 %2019, ptr %42, align 4
  br label %2024

2020:                                             ; preds = %2009
  %2021 = landingpad { ptr, i32 }
          cleanup
  %2022 = extractvalue { ptr, i32 } %2021, 0
  store ptr %2022, ptr %41, align 8
  %2023 = extractvalue { ptr, i32 } %2021, 1
  store i32 %2023, ptr %42, align 4
  call void @_ZN6Halide8Internal13Autoscheduler12LoadJacobianD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %216) #10
  br label %2024

2024:                                             ; preds = %2020, %2016
  call void @llvm.lifetime.end.p0(i64 32, ptr %216) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %215) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %214) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %213) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %212) #10
  br label %2037

2025:                                             ; preds = %2003
  br label %2034

2026:                                             ; preds = %1981
  %2027 = load ptr, ptr %211, align 8, !tbaa !5
  %2028 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EE12emplace_backIJS8_EEERS8_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %207, ptr noundef nonnull align 8 dereferenceable(40) %2027)
          to label %2029 unwind label %2030

2029:                                             ; preds = %2026
  br label %2034

2030:                                             ; preds = %2026
  %2031 = landingpad { ptr, i32 }
          cleanup
  %2032 = extractvalue { ptr, i32 } %2031, 0
  store ptr %2032, ptr %41, align 8
  %2033 = extractvalue { ptr, i32 } %2031, 1
  store i32 %2033, ptr %42, align 4
  br label %2037

2034:                                             ; preds = %2029, %2025
  call void @llvm.lifetime.end.p0(i64 8, ptr %211) #10
  br label %2035

2035:                                             ; preds = %2034
  %2036 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS4_11FunctionDAG4NodeEESt6vectorIS9_SaIS9_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %209) #10
  br label %1978

2037:                                             ; preds = %2030, %2024
  call void @llvm.lifetime.end.p0(i64 8, ptr %211) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %210) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %209) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %208) #10
  call void @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %207) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %207) #10
  br label %3068

2038:                                             ; preds = %1980
  call void @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EE4swapERSA_(ptr noundef nonnull align 8 dereferenceable(24) %189, ptr noundef nonnull align 8 dereferenceable(24) %207) #10
  call void @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %207) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %207) #10
  br label %2039

2039:                                             ; preds = %2038, %1970
  br label %2040

2040:                                             ; preds = %2039, %1908
  %2041 = load ptr, ptr %201, align 8, !tbaa !5
  %2042 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::Sites", ptr %2041, i32 0, i32 5
  %2043 = load i8, ptr %2042, align 8, !tbaa !190, !range !55, !noundef !56
  %2044 = trunc i8 %2043 to i1
  br i1 %2044, label %2045, label %2057

2045:                                             ; preds = %2040
  call void @llvm.lifetime.start.p0(i64 8, ptr %217) #10
  %2046 = load ptr, ptr %196, align 8, !tbaa !5
  %2047 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %2046, i32 0, i32 1
  %2048 = load ptr, ptr %2047, align 8, !tbaa !170
  %2049 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %2048, i32 0, i32 7
  %2050 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2049, i64 noundef 0) #10
  store ptr %2050, ptr %217, align 8, !tbaa !5
  %2051 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS7_EE12emplace_backIJPS5_EEERS7_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %188, ptr noundef nonnull align 8 dereferenceable(8) %217)
          to label %2052 unwind label %2053

2052:                                             ; preds = %2045
  call void @llvm.lifetime.end.p0(i64 8, ptr %217) #10
  store i32 75, ptr %33, align 4
  br label %3054

2053:                                             ; preds = %2045
  %2054 = landingpad { ptr, i32 }
          cleanup
  %2055 = extractvalue { ptr, i32 } %2054, 0
  store ptr %2055, ptr %41, align 8
  %2056 = extractvalue { ptr, i32 } %2054, 1
  store i32 %2056, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %217) #10
  br label %3068

2057:                                             ; preds = %2040
  call void @llvm.lifetime.start.p0(i64 8, ptr %218) #10
  %2058 = load ptr, ptr %201, align 8, !tbaa !5
  %2059 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::Sites", ptr %2058, i32 0, i32 0
  %2060 = load ptr, ptr %2059, align 8, !tbaa !191
  store ptr %2060, ptr %218, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %219) #10
  %2061 = load ptr, ptr %201, align 8, !tbaa !5
  %2062 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::Sites", ptr %2061, i32 0, i32 1
  %2063 = load ptr, ptr %2062, align 8, !tbaa !171
  store ptr %2063, ptr %219, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %220) #10
  %2064 = load ptr, ptr %181, align 8, !tbaa !5
  %2065 = load ptr, ptr %196, align 8, !tbaa !5
  %2066 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %2065, i32 0, i32 1
  %2067 = load ptr, ptr %2066, align 8, !tbaa !170
  %2068 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Halide8Internal13Autoscheduler8LoopNest10get_boundsEPKNS1_11FunctionDAG4NodeE(ptr noundef nonnull align 8 dereferenceable(196) %2064, ptr noundef %2067)
          to label %2069 unwind label %2138

2069:                                             ; preds = %2057
  store ptr %2068, ptr %220, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %221) #10
  %2070 = load ptr, ptr %182, align 8, !tbaa !5
  %2071 = load ptr, ptr %196, align 8, !tbaa !5
  %2072 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %2071, i32 0, i32 1
  %2073 = load ptr, ptr %2072, align 8, !tbaa !170
  %2074 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Halide8Internal13Autoscheduler8LoopNest10get_boundsEPKNS1_11FunctionDAG4NodeE(ptr noundef nonnull align 8 dereferenceable(196) %2070, ptr noundef %2073)
          to label %2075 unwind label %2142

2075:                                             ; preds = %2069
  store ptr %2074, ptr %221, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %222) #10
  %2076 = load ptr, ptr %218, align 8, !tbaa !5
  %2077 = load ptr, ptr %196, align 8, !tbaa !5
  %2078 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %2077, i32 0, i32 1
  %2079 = load ptr, ptr %2078, align 8, !tbaa !170
  %2080 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Halide8Internal13Autoscheduler8LoopNest10get_boundsEPKNS1_11FunctionDAG4NodeE(ptr noundef nonnull align 8 dereferenceable(196) %2076, ptr noundef %2079)
          to label %2081 unwind label %2146

2081:                                             ; preds = %2075
  store ptr %2080, ptr %222, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %223) #10
  %2082 = load ptr, ptr %219, align 8, !tbaa !5
  %2083 = load ptr, ptr %196, align 8, !tbaa !5
  %2084 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %2083, i32 0, i32 1
  %2085 = load ptr, ptr %2084, align 8, !tbaa !170
  %2086 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Halide8Internal13Autoscheduler8LoopNest10get_boundsEPKNS1_11FunctionDAG4NodeE(ptr noundef nonnull align 8 dereferenceable(196) %2082, ptr noundef %2085)
          to label %2087 unwind label %2150

2087:                                             ; preds = %2081
  store ptr %2086, ptr %223, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %224) #10
  %2088 = load ptr, ptr %196, align 8, !tbaa !5
  %2089 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %2088, i32 0, i32 1
  %2090 = load ptr, ptr %2089, align 8, !tbaa !170
  %2091 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %2090, i32 0, i32 2
  %2092 = load double, ptr %2091, align 8, !tbaa !125
  %2093 = fptosi double %2092 to i64
  store i64 %2093, ptr %224, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %225) #10
  %2094 = load i64, ptr %224, align 8, !tbaa !9
  store i64 %2094, ptr %225, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %226) #10
  %2095 = load i64, ptr %224, align 8, !tbaa !9
  store i64 %2095, ptr %226, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %227) #10
  %2096 = load i64, ptr %224, align 8, !tbaa !9
  store i64 %2096, ptr %227, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %228) #10
  store i64 1, ptr %228, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %229) #10
  store i64 1, ptr %229, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %230) #10
  store i64 1, ptr %230, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %231) #10
  store i64 1, ptr %231, align 8, !tbaa !9
  %2097 = load ptr, ptr %196, align 8, !tbaa !5
  %2098 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %2097, i32 0, i32 1
  %2099 = load ptr, ptr %2098, align 8, !tbaa !170
  %2100 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %2099, i32 0, i32 14
  %2101 = load i8, ptr %2100, align 1, !tbaa !63, !range !55, !noundef !56
  %2102 = trunc i8 %2101 to i1
  br i1 %2102, label %2103, label %2190

2103:                                             ; preds = %2087
  %2104 = load ptr, ptr %219, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %232) #10
  store i1 false, ptr %234, align 1
  store i1 false, ptr %235, align 1
  %2105 = invoke noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler8LoopNest7is_rootEv(ptr noundef nonnull align 8 dereferenceable(196) %2104)
          to label %2106 unwind label %2154

2106:                                             ; preds = %2103
  br i1 %2105, label %2107, label %2108

2107:                                             ; preds = %2106
  br label %2113

2108:                                             ; preds = %2106
  call void @llvm.lifetime.start.p0(i64 384, ptr %233) #10
  store i1 true, ptr %234, align 1
  invoke void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %233, ptr noundef @.str.3, i32 noundef 663, ptr noundef @.str.10, i32 noundef 0)
          to label %2109 unwind label %2158

2109:                                             ; preds = %2108
  store i1 true, ptr %235, align 1
  %2110 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %233)
          to label %2111 unwind label %2162

2111:                                             ; preds = %2109
  invoke void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %232, ptr noundef nonnull align 8 dereferenceable(380) %2110)
          to label %2112 unwind label %2162

2112:                                             ; preds = %2111
  br label %2113

2113:                                             ; preds = %2112, %2107
  %2114 = load i1, ptr %235, align 1
  br i1 %2114, label %2115, label %2117

2115:                                             ; preds = %2113
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %233)
          to label %2116 unwind label %2158

2116:                                             ; preds = %2115
  br label %2117

2117:                                             ; preds = %2116, %2113
  %2118 = load i1, ptr %234, align 1
  br i1 %2118, label %2119, label %2120

2119:                                             ; preds = %2117
  call void @llvm.lifetime.end.p0(i64 384, ptr %233) #10
  br label %2120

2120:                                             ; preds = %2119, %2117
  call void @llvm.lifetime.end.p0(i64 1, ptr %232) #10
  %2121 = load ptr, ptr %218, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %236) #10
  store i1 false, ptr %238, align 1
  store i1 false, ptr %239, align 1
  %2122 = invoke noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler8LoopNest7is_rootEv(ptr noundef nonnull align 8 dereferenceable(196) %2121)
          to label %2123 unwind label %2154

2123:                                             ; preds = %2120
  br i1 %2122, label %2124, label %2125

2124:                                             ; preds = %2123
  br label %2130

2125:                                             ; preds = %2123
  call void @llvm.lifetime.start.p0(i64 384, ptr %237) #10
  store i1 true, ptr %238, align 1
  invoke void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %237, ptr noundef @.str.3, i32 noundef 664, ptr noundef @.str.11, i32 noundef 0)
          to label %2126 unwind label %2174

2126:                                             ; preds = %2125
  store i1 true, ptr %239, align 1
  %2127 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %237)
          to label %2128 unwind label %2178

2128:                                             ; preds = %2126
  invoke void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %236, ptr noundef nonnull align 8 dereferenceable(380) %2127)
          to label %2129 unwind label %2178

2129:                                             ; preds = %2128
  br label %2130

2130:                                             ; preds = %2129, %2124
  %2131 = load i1, ptr %239, align 1
  br i1 %2131, label %2132, label %2134

2132:                                             ; preds = %2130
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %237)
          to label %2133 unwind label %2174

2133:                                             ; preds = %2132
  br label %2134

2134:                                             ; preds = %2133, %2130
  %2135 = load i1, ptr %238, align 1
  br i1 %2135, label %2136, label %2137

2136:                                             ; preds = %2134
  call void @llvm.lifetime.end.p0(i64 384, ptr %237) #10
  br label %2137

2137:                                             ; preds = %2136, %2134
  call void @llvm.lifetime.end.p0(i64 1, ptr %236) #10
  br label %2190

2138:                                             ; preds = %2057
  %2139 = landingpad { ptr, i32 }
          cleanup
  %2140 = extractvalue { ptr, i32 } %2139, 0
  store ptr %2140, ptr %41, align 8
  %2141 = extractvalue { ptr, i32 } %2139, 1
  store i32 %2141, ptr %42, align 4
  br label %3067

2142:                                             ; preds = %2069
  %2143 = landingpad { ptr, i32 }
          cleanup
  %2144 = extractvalue { ptr, i32 } %2143, 0
  store ptr %2144, ptr %41, align 8
  %2145 = extractvalue { ptr, i32 } %2143, 1
  store i32 %2145, ptr %42, align 4
  br label %3066

2146:                                             ; preds = %2075
  %2147 = landingpad { ptr, i32 }
          cleanup
  %2148 = extractvalue { ptr, i32 } %2147, 0
  store ptr %2148, ptr %41, align 8
  %2149 = extractvalue { ptr, i32 } %2147, 1
  store i32 %2149, ptr %42, align 4
  br label %3065

2150:                                             ; preds = %2081
  %2151 = landingpad { ptr, i32 }
          cleanup
  %2152 = extractvalue { ptr, i32 } %2151, 0
  store ptr %2152, ptr %41, align 8
  %2153 = extractvalue { ptr, i32 } %2151, 1
  store i32 %2153, ptr %42, align 4
  br label %3064

2154:                                             ; preds = %2644, %2120, %2103
  %2155 = landingpad { ptr, i32 }
          cleanup
  %2156 = extractvalue { ptr, i32 } %2155, 0
  store ptr %2156, ptr %41, align 8
  %2157 = extractvalue { ptr, i32 } %2155, 1
  store i32 %2157, ptr %42, align 4
  br label %3063

2158:                                             ; preds = %2115, %2108
  %2159 = landingpad { ptr, i32 }
          cleanup
  %2160 = extractvalue { ptr, i32 } %2159, 0
  store ptr %2160, ptr %41, align 8
  %2161 = extractvalue { ptr, i32 } %2159, 1
  store i32 %2161, ptr %42, align 4
  br label %2170

2162:                                             ; preds = %2111, %2109
  %2163 = landingpad { ptr, i32 }
          cleanup
  %2164 = extractvalue { ptr, i32 } %2163, 0
  store ptr %2164, ptr %41, align 8
  %2165 = extractvalue { ptr, i32 } %2163, 1
  store i32 %2165, ptr %42, align 4
  %2166 = load i1, ptr %235, align 1
  br i1 %2166, label %2167, label %2169

2167:                                             ; preds = %2162
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %233)
          to label %2168 unwind label %3387

2168:                                             ; preds = %2167
  br label %2169

2169:                                             ; preds = %2168, %2162
  br label %2170

2170:                                             ; preds = %2169, %2158
  %2171 = load i1, ptr %234, align 1
  br i1 %2171, label %2172, label %2173

2172:                                             ; preds = %2170
  call void @llvm.lifetime.end.p0(i64 384, ptr %233) #10
  br label %2173

2173:                                             ; preds = %2172, %2170
  call void @llvm.lifetime.end.p0(i64 1, ptr %232) #10
  br label %3063

2174:                                             ; preds = %2132, %2125
  %2175 = landingpad { ptr, i32 }
          cleanup
  %2176 = extractvalue { ptr, i32 } %2175, 0
  store ptr %2176, ptr %41, align 8
  %2177 = extractvalue { ptr, i32 } %2175, 1
  store i32 %2177, ptr %42, align 4
  br label %2186

2178:                                             ; preds = %2128, %2126
  %2179 = landingpad { ptr, i32 }
          cleanup
  %2180 = extractvalue { ptr, i32 } %2179, 0
  store ptr %2180, ptr %41, align 8
  %2181 = extractvalue { ptr, i32 } %2179, 1
  store i32 %2181, ptr %42, align 4
  %2182 = load i1, ptr %239, align 1
  br i1 %2182, label %2183, label %2185

2183:                                             ; preds = %2178
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %237)
          to label %2184 unwind label %3387

2184:                                             ; preds = %2183
  br label %2185

2185:                                             ; preds = %2184, %2178
  br label %2186

2186:                                             ; preds = %2185, %2174
  %2187 = load i1, ptr %238, align 1
  br i1 %2187, label %2188, label %2189

2188:                                             ; preds = %2186
  call void @llvm.lifetime.end.p0(i64 384, ptr %237) #10
  br label %2189

2189:                                             ; preds = %2188, %2186
  call void @llvm.lifetime.end.p0(i64 1, ptr %236) #10
  br label %3063

2190:                                             ; preds = %2137, %2087
  %2191 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 9
  %2192 = load i8, ptr %2191, align 8, !tbaa !160, !range !55, !noundef !56
  %2193 = trunc i8 %2192 to i1
  br i1 %2193, label %2194, label %2630

2194:                                             ; preds = %2190
  call void @llvm.lifetime.start.p0(i64 8, ptr %240) #10
  store ptr %189, ptr %240, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %241) #10
  %2195 = load ptr, ptr %240, align 8, !tbaa !5
  %2196 = call ptr @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %2195) #10
  %2197 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.138", ptr %241, i32 0, i32 0
  store ptr %2196, ptr %2197, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %242) #10
  %2198 = load ptr, ptr %240, align 8, !tbaa !5
  %2199 = call ptr @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %2198) #10
  %2200 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.138", ptr %242, i32 0, i32 0
  store ptr %2199, ptr %2200, align 8
  br label %2201

2201:                                             ; preds = %2625, %2194
  %2202 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS4_11FunctionDAG4NodeEESt6vectorIS9_SaIS9_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %241, ptr noundef nonnull align 8 dereferenceable(8) %242) #10
  br i1 %2202, label %2204, label %2203

2203:                                             ; preds = %2201
  store i32 82, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %242) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %241) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %240) #10
  br label %2629

2204:                                             ; preds = %2201
  call void @llvm.lifetime.start.p0(i64 8, ptr %243) #10
  %2205 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS4_11FunctionDAG4NodeEESt6vectorIS9_SaIS9_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %241) #10
  store ptr %2205, ptr %243, align 8, !tbaa !5
  %2206 = load ptr, ptr %243, align 8, !tbaa !5
  %2207 = getelementptr inbounds %"struct.std::pair.136", ptr %2206, i32 0, i32 1
  %2208 = load ptr, ptr %2207, align 8, !tbaa !183
  %2209 = load ptr, ptr %196, align 8, !tbaa !5
  %2210 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %2209, i32 0, i32 1
  %2211 = load ptr, ptr %2210, align 8, !tbaa !170
  %2212 = icmp ne ptr %2208, %2211
  br i1 %2212, label %2213, label %2214

2213:                                             ; preds = %2204
  store i32 83, ptr %33, align 4
  br label %2622

2214:                                             ; preds = %2204
  call void @llvm.lifetime.start.p0(i64 8, ptr %244) #10
  %2215 = load ptr, ptr %243, align 8, !tbaa !5
  %2216 = getelementptr inbounds %"struct.std::pair.136", ptr %2215, i32 0, i32 0
  %2217 = invoke noundef i64 @_ZNK6Halide8Internal13Autoscheduler12LoadJacobian5countEv(ptr noundef nonnull align 8 dereferenceable(32) %2216)
          to label %2218 unwind label %2257

2218:                                             ; preds = %2214
  %2219 = sitofp i64 %2217 to double
  store double %2219, ptr %244, align 8, !tbaa !158
  call void @llvm.lifetime.start.p0(i64 1, ptr %245) #10
  store i8 1, ptr %245, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %246) #10
  store i8 1, ptr %246, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %247) #10
  store i8 1, ptr %247, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %248) #10
  store i8 1, ptr %248, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %249) #10
  store i8 1, ptr %249, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %250) #10
  %2220 = load ptr, ptr %196, align 8, !tbaa !5
  %2221 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %2220, i32 0, i32 1
  %2222 = load ptr, ptr %2221, align 8, !tbaa !170
  %2223 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %2222, i32 0, i32 14
  %2224 = load i8, ptr %2223, align 1, !tbaa !63, !range !55, !noundef !56
  %2225 = trunc i8 %2224 to i1
  br i1 %2225, label %2226, label %2227

2226:                                             ; preds = %2218
  br label %2239

2227:                                             ; preds = %2218
  %2228 = load i8, ptr %202, align 1, !tbaa !11, !range !55, !noundef !56
  %2229 = trunc i8 %2228 to i1
  br i1 %2229, label %2231, label %2230

2230:                                             ; preds = %2227
  br label %2237

2231:                                             ; preds = %2227
  %2232 = load ptr, ptr %201, align 8, !tbaa !5
  %2233 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::Sites", ptr %2232, i32 0, i32 2
  %2234 = load ptr, ptr %2233, align 8, !tbaa !100
  %2235 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %2234, i32 0, i32 13
  %2236 = load i32, ptr %2235, align 4, !tbaa !129
  br label %2237

2237:                                             ; preds = %2231, %2230
  %2238 = phi i32 [ -1, %2230 ], [ %2236, %2231 ]
  br label %2239

2239:                                             ; preds = %2237, %2226
  %2240 = phi i32 [ 0, %2226 ], [ %2238, %2237 ]
  store i32 %2240, ptr %250, align 4, !tbaa !13
  %2241 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 14
  %2242 = load i32, ptr %2241, align 8, !tbaa !102
  %2243 = icmp sge i32 %2242, 0
  br i1 %2243, label %2244, label %2501

2244:                                             ; preds = %2239
  %2245 = load i8, ptr %202, align 1, !tbaa !11, !range !55, !noundef !56
  %2246 = trunc i8 %2245 to i1
  br i1 %2246, label %2388, label %2247

2247:                                             ; preds = %2244
  call void @llvm.lifetime.start.p0(i64 20, ptr %251) #10
  call void @llvm.memset.p0.i64(ptr align 16 %251, i8 0, i64 20, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %252) #10
  store i32 0, ptr %252, align 4, !tbaa !13
  br label %2248

2248:                                             ; preds = %2311, %2247
  %2249 = load i32, ptr %252, align 4, !tbaa !13
  %2250 = load ptr, ptr %196, align 8, !tbaa !5
  %2251 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %2250, i32 0, i32 1
  %2252 = load ptr, ptr %2251, align 8, !tbaa !170
  %2253 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %2252, i32 0, i32 12
  %2254 = load i32, ptr %2253, align 4, !tbaa !127
  %2255 = icmp slt i32 %2249, %2254
  br i1 %2255, label %2261, label %2256

2256:                                             ; preds = %2248
  store i32 84, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %252) #10
  br label %2314

2257:                                             ; preds = %2214
  %2258 = landingpad { ptr, i32 }
          cleanup
  %2259 = extractvalue { ptr, i32 } %2258, 0
  store ptr %2259, ptr %41, align 8
  %2260 = extractvalue { ptr, i32 } %2258, 1
  store i32 %2260, ptr %42, align 4
  br label %2628

2261:                                             ; preds = %2248
  call void @llvm.lifetime.start.p0(i64 24, ptr %253) #10
  %2262 = load ptr, ptr %243, align 8, !tbaa !5
  %2263 = getelementptr inbounds %"struct.std::pair.136", ptr %2262, i32 0, i32 0
  %2264 = load i32, ptr %252, align 4, !tbaa !13
  %2265 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 14
  %2266 = load i32, ptr %2265, align 8, !tbaa !102
  invoke void @_ZNK6Halide8Internal13Autoscheduler12LoadJacobianclEii(ptr dead_on_unwind writable sret(%"struct.Halide::Internal::Autoscheduler::OptionalRational") align 8 %253, ptr noundef nonnull align 8 dereferenceable(32) %2263, i32 noundef %2264, i32 noundef %2266)
          to label %2267 unwind label %2274

2267:                                             ; preds = %2261
  %2268 = invoke noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler16OptionalRationaleqEi(ptr noundef nonnull align 8 dereferenceable(24) %253, i32 noundef 0)
          to label %2269 unwind label %2274

2269:                                             ; preds = %2267
  br i1 %2268, label %2270, label %2278

2270:                                             ; preds = %2269
  %2271 = getelementptr inbounds [5 x i32], ptr %251, i64 0, i64 0
  %2272 = load i32, ptr %2271, align 16, !tbaa !13
  %2273 = add nsw i32 %2272, 1
  store i32 %2273, ptr %2271, align 16, !tbaa !13
  br label %2310

2274:                                             ; preds = %2299, %2292, %2285, %2278, %2267, %2261
  %2275 = landingpad { ptr, i32 }
          cleanup
  %2276 = extractvalue { ptr, i32 } %2275, 0
  store ptr %2276, ptr %41, align 8
  %2277 = extractvalue { ptr, i32 } %2275, 1
  store i32 %2277, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %253) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %252) #10
  call void @llvm.lifetime.end.p0(i64 20, ptr %251) #10
  br label %2627

2278:                                             ; preds = %2269
  %2279 = invoke noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler16OptionalRationaleqEi(ptr noundef nonnull align 8 dereferenceable(24) %253, i32 noundef 1)
          to label %2280 unwind label %2274

2280:                                             ; preds = %2278
  br i1 %2279, label %2281, label %2285

2281:                                             ; preds = %2280
  %2282 = getelementptr inbounds [5 x i32], ptr %251, i64 0, i64 1
  %2283 = load i32, ptr %2282, align 4, !tbaa !13
  %2284 = add nsw i32 %2283, 1
  store i32 %2284, ptr %2282, align 4, !tbaa !13
  br label %2309

2285:                                             ; preds = %2280
  %2286 = invoke noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler16OptionalRationaleqEi(ptr noundef nonnull align 8 dereferenceable(24) %253, i32 noundef 2)
          to label %2287 unwind label %2274

2287:                                             ; preds = %2285
  br i1 %2286, label %2288, label %2292

2288:                                             ; preds = %2287
  %2289 = getelementptr inbounds [5 x i32], ptr %251, i64 0, i64 2
  %2290 = load i32, ptr %2289, align 8, !tbaa !13
  %2291 = add nsw i32 %2290, 1
  store i32 %2291, ptr %2289, align 8, !tbaa !13
  br label %2308

2292:                                             ; preds = %2287
  %2293 = invoke noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler16OptionalRationaleqEi(ptr noundef nonnull align 8 dereferenceable(24) %253, i32 noundef 3)
          to label %2294 unwind label %2274

2294:                                             ; preds = %2292
  br i1 %2293, label %2295, label %2299

2295:                                             ; preds = %2294
  %2296 = getelementptr inbounds [5 x i32], ptr %251, i64 0, i64 3
  %2297 = load i32, ptr %2296, align 4, !tbaa !13
  %2298 = add nsw i32 %2297, 1
  store i32 %2298, ptr %2296, align 4, !tbaa !13
  br label %2307

2299:                                             ; preds = %2294
  %2300 = invoke noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler16OptionalRationaleqEi(ptr noundef nonnull align 8 dereferenceable(24) %253, i32 noundef 4)
          to label %2301 unwind label %2274

2301:                                             ; preds = %2299
  br i1 %2300, label %2302, label %2306

2302:                                             ; preds = %2301
  %2303 = getelementptr inbounds [5 x i32], ptr %251, i64 0, i64 4
  %2304 = load i32, ptr %2303, align 16, !tbaa !13
  %2305 = add nsw i32 %2304, 1
  store i32 %2305, ptr %2303, align 16, !tbaa !13
  br label %2306

2306:                                             ; preds = %2302, %2301
  br label %2307

2307:                                             ; preds = %2306, %2295
  br label %2308

2308:                                             ; preds = %2307, %2288
  br label %2309

2309:                                             ; preds = %2308, %2281
  br label %2310

2310:                                             ; preds = %2309, %2270
  call void @llvm.lifetime.end.p0(i64 24, ptr %253) #10
  br label %2311

2311:                                             ; preds = %2310
  %2312 = load i32, ptr %252, align 4, !tbaa !13
  %2313 = add nsw i32 %2312, 1
  store i32 %2313, ptr %252, align 4, !tbaa !13
  br label %2248, !llvm.loop !192

2314:                                             ; preds = %2256
  %2315 = getelementptr inbounds [5 x i32], ptr %251, i64 0, i64 0
  %2316 = load i32, ptr %2315, align 16, !tbaa !13
  %2317 = load ptr, ptr %196, align 8, !tbaa !5
  %2318 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %2317, i32 0, i32 1
  %2319 = load ptr, ptr %2318, align 8, !tbaa !170
  %2320 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %2319, i32 0, i32 12
  %2321 = load i32, ptr %2320, align 4, !tbaa !127
  %2322 = icmp eq i32 %2316, %2321
  %2323 = zext i1 %2322 to i8
  store i8 %2323, ptr %245, align 1, !tbaa !11
  %2324 = getelementptr inbounds [5 x i32], ptr %251, i64 0, i64 0
  %2325 = load i32, ptr %2324, align 16, !tbaa !13
  %2326 = load ptr, ptr %196, align 8, !tbaa !5
  %2327 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %2326, i32 0, i32 1
  %2328 = load ptr, ptr %2327, align 8, !tbaa !170
  %2329 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %2328, i32 0, i32 12
  %2330 = load i32, ptr %2329, align 4, !tbaa !127
  %2331 = sub nsw i32 %2330, 1
  %2332 = icmp eq i32 %2325, %2331
  br i1 %2332, label %2333, label %2337

2333:                                             ; preds = %2314
  %2334 = getelementptr inbounds [5 x i32], ptr %251, i64 0, i64 1
  %2335 = load i32, ptr %2334, align 4, !tbaa !13
  %2336 = icmp eq i32 %2335, 1
  br label %2337

2337:                                             ; preds = %2333, %2314
  %2338 = phi i1 [ false, %2314 ], [ %2336, %2333 ]
  %2339 = zext i1 %2338 to i8
  store i8 %2339, ptr %246, align 1, !tbaa !11
  %2340 = getelementptr inbounds [5 x i32], ptr %251, i64 0, i64 0
  %2341 = load i32, ptr %2340, align 16, !tbaa !13
  %2342 = load ptr, ptr %196, align 8, !tbaa !5
  %2343 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %2342, i32 0, i32 1
  %2344 = load ptr, ptr %2343, align 8, !tbaa !170
  %2345 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %2344, i32 0, i32 12
  %2346 = load i32, ptr %2345, align 4, !tbaa !127
  %2347 = sub nsw i32 %2346, 1
  %2348 = icmp eq i32 %2341, %2347
  br i1 %2348, label %2349, label %2353

2349:                                             ; preds = %2337
  %2350 = getelementptr inbounds [5 x i32], ptr %251, i64 0, i64 2
  %2351 = load i32, ptr %2350, align 8, !tbaa !13
  %2352 = icmp eq i32 %2351, 1
  br label %2353

2353:                                             ; preds = %2349, %2337
  %2354 = phi i1 [ false, %2337 ], [ %2352, %2349 ]
  %2355 = zext i1 %2354 to i8
  store i8 %2355, ptr %247, align 1, !tbaa !11
  %2356 = getelementptr inbounds [5 x i32], ptr %251, i64 0, i64 0
  %2357 = load i32, ptr %2356, align 16, !tbaa !13
  %2358 = load ptr, ptr %196, align 8, !tbaa !5
  %2359 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %2358, i32 0, i32 1
  %2360 = load ptr, ptr %2359, align 8, !tbaa !170
  %2361 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %2360, i32 0, i32 12
  %2362 = load i32, ptr %2361, align 4, !tbaa !127
  %2363 = sub nsw i32 %2362, 1
  %2364 = icmp eq i32 %2357, %2363
  br i1 %2364, label %2365, label %2369

2365:                                             ; preds = %2353
  %2366 = getelementptr inbounds [5 x i32], ptr %251, i64 0, i64 3
  %2367 = load i32, ptr %2366, align 4, !tbaa !13
  %2368 = icmp eq i32 %2367, 1
  br label %2369

2369:                                             ; preds = %2365, %2353
  %2370 = phi i1 [ false, %2353 ], [ %2368, %2365 ]
  %2371 = zext i1 %2370 to i8
  store i8 %2371, ptr %248, align 1, !tbaa !11
  %2372 = getelementptr inbounds [5 x i32], ptr %251, i64 0, i64 0
  %2373 = load i32, ptr %2372, align 16, !tbaa !13
  %2374 = load ptr, ptr %196, align 8, !tbaa !5
  %2375 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %2374, i32 0, i32 1
  %2376 = load ptr, ptr %2375, align 8, !tbaa !170
  %2377 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %2376, i32 0, i32 12
  %2378 = load i32, ptr %2377, align 4, !tbaa !127
  %2379 = sub nsw i32 %2378, 1
  %2380 = icmp eq i32 %2373, %2379
  br i1 %2380, label %2381, label %2385

2381:                                             ; preds = %2369
  %2382 = getelementptr inbounds [5 x i32], ptr %251, i64 0, i64 4
  %2383 = load i32, ptr %2382, align 16, !tbaa !13
  %2384 = icmp eq i32 %2383, 1
  br label %2385

2385:                                             ; preds = %2381, %2369
  %2386 = phi i1 [ false, %2369 ], [ %2384, %2381 ]
  %2387 = zext i1 %2386 to i8
  store i8 %2387, ptr %249, align 1, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 20, ptr %251) #10
  br label %2500

2388:                                             ; preds = %2244
  call void @llvm.lifetime.start.p0(i64 4, ptr %254) #10
  store i32 0, ptr %254, align 4, !tbaa !13
  br label %2389

2389:                                             ; preds = %2496, %2388
  %2390 = load i32, ptr %254, align 4, !tbaa !13
  %2391 = load ptr, ptr %196, align 8, !tbaa !5
  %2392 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %2391, i32 0, i32 1
  %2393 = load ptr, ptr %2392, align 8, !tbaa !170
  %2394 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %2393, i32 0, i32 12
  %2395 = load i32, ptr %2394, align 4, !tbaa !127
  %2396 = icmp slt i32 %2390, %2395
  br i1 %2396, label %2398, label %2397

2397:                                             ; preds = %2389
  store i32 87, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %254) #10
  br label %2499

2398:                                             ; preds = %2389
  call void @llvm.lifetime.start.p0(i64 24, ptr %255) #10
  %2399 = load ptr, ptr %243, align 8, !tbaa !5
  %2400 = getelementptr inbounds %"struct.std::pair.136", ptr %2399, i32 0, i32 0
  %2401 = load i32, ptr %254, align 4, !tbaa !13
  %2402 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 14
  %2403 = load i32, ptr %2402, align 8, !tbaa !102
  invoke void @_ZNK6Halide8Internal13Autoscheduler12LoadJacobianclEii(ptr dead_on_unwind writable sret(%"struct.Halide::Internal::Autoscheduler::OptionalRational") align 8 %255, ptr noundef nonnull align 8 dereferenceable(32) %2400, i32 noundef %2401, i32 noundef %2403)
          to label %2404 unwind label %2454

2404:                                             ; preds = %2398
  %2405 = invoke noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler16OptionalRationaleqEi(ptr noundef nonnull align 8 dereferenceable(24) %255, i32 noundef 0)
          to label %2406 unwind label %2454

2406:                                             ; preds = %2404
  %2407 = zext i1 %2405 to i32
  %2408 = load i8, ptr %245, align 1, !tbaa !11, !range !55, !noundef !56
  %2409 = trunc i8 %2408 to i1
  %2410 = zext i1 %2409 to i32
  %2411 = and i32 %2410, %2407
  %2412 = icmp ne i32 %2411, 0
  %2413 = zext i1 %2412 to i8
  store i8 %2413, ptr %245, align 1, !tbaa !11
  %2414 = load i32, ptr %254, align 4, !tbaa !13
  %2415 = load i32, ptr %250, align 4, !tbaa !13
  %2416 = icmp eq i32 %2414, %2415
  br i1 %2416, label %2417, label %2458

2417:                                             ; preds = %2406
  %2418 = invoke noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler16OptionalRationaleqEi(ptr noundef nonnull align 8 dereferenceable(24) %255, i32 noundef 1)
          to label %2419 unwind label %2454

2419:                                             ; preds = %2417
  %2420 = zext i1 %2418 to i32
  %2421 = load i8, ptr %246, align 1, !tbaa !11, !range !55, !noundef !56
  %2422 = trunc i8 %2421 to i1
  %2423 = zext i1 %2422 to i32
  %2424 = and i32 %2423, %2420
  %2425 = icmp ne i32 %2424, 0
  %2426 = zext i1 %2425 to i8
  store i8 %2426, ptr %246, align 1, !tbaa !11
  %2427 = invoke noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler16OptionalRationaleqEi(ptr noundef nonnull align 8 dereferenceable(24) %255, i32 noundef 2)
          to label %2428 unwind label %2454

2428:                                             ; preds = %2419
  %2429 = zext i1 %2427 to i32
  %2430 = load i8, ptr %247, align 1, !tbaa !11, !range !55, !noundef !56
  %2431 = trunc i8 %2430 to i1
  %2432 = zext i1 %2431 to i32
  %2433 = and i32 %2432, %2429
  %2434 = icmp ne i32 %2433, 0
  %2435 = zext i1 %2434 to i8
  store i8 %2435, ptr %247, align 1, !tbaa !11
  %2436 = invoke noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler16OptionalRationaleqEi(ptr noundef nonnull align 8 dereferenceable(24) %255, i32 noundef 3)
          to label %2437 unwind label %2454

2437:                                             ; preds = %2428
  %2438 = zext i1 %2436 to i32
  %2439 = load i8, ptr %248, align 1, !tbaa !11, !range !55, !noundef !56
  %2440 = trunc i8 %2439 to i1
  %2441 = zext i1 %2440 to i32
  %2442 = and i32 %2441, %2438
  %2443 = icmp ne i32 %2442, 0
  %2444 = zext i1 %2443 to i8
  store i8 %2444, ptr %248, align 1, !tbaa !11
  %2445 = invoke noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler16OptionalRationaleqEi(ptr noundef nonnull align 8 dereferenceable(24) %255, i32 noundef 4)
          to label %2446 unwind label %2454

2446:                                             ; preds = %2437
  %2447 = zext i1 %2445 to i32
  %2448 = load i8, ptr %249, align 1, !tbaa !11, !range !55, !noundef !56
  %2449 = trunc i8 %2448 to i1
  %2450 = zext i1 %2449 to i32
  %2451 = and i32 %2450, %2447
  %2452 = icmp ne i32 %2451, 0
  %2453 = zext i1 %2452 to i8
  store i8 %2453, ptr %249, align 1, !tbaa !11
  br label %2495

2454:                                             ; preds = %2478, %2469, %2460, %2458, %2437, %2428, %2419, %2417, %2404, %2398
  %2455 = landingpad { ptr, i32 }
          cleanup
  %2456 = extractvalue { ptr, i32 } %2455, 0
  store ptr %2456, ptr %41, align 8
  %2457 = extractvalue { ptr, i32 } %2455, 1
  store i32 %2457, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %255) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %254) #10
  br label %2627

2458:                                             ; preds = %2406
  %2459 = invoke noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler16OptionalRationaleqEi(ptr noundef nonnull align 8 dereferenceable(24) %255, i32 noundef 0)
          to label %2460 unwind label %2454

2460:                                             ; preds = %2458
  %2461 = zext i1 %2459 to i32
  %2462 = load i8, ptr %246, align 1, !tbaa !11, !range !55, !noundef !56
  %2463 = trunc i8 %2462 to i1
  %2464 = zext i1 %2463 to i32
  %2465 = and i32 %2464, %2461
  %2466 = icmp ne i32 %2465, 0
  %2467 = zext i1 %2466 to i8
  store i8 %2467, ptr %246, align 1, !tbaa !11
  %2468 = invoke noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler16OptionalRationaleqEi(ptr noundef nonnull align 8 dereferenceable(24) %255, i32 noundef 0)
          to label %2469 unwind label %2454

2469:                                             ; preds = %2460
  %2470 = zext i1 %2468 to i32
  %2471 = load i8, ptr %247, align 1, !tbaa !11, !range !55, !noundef !56
  %2472 = trunc i8 %2471 to i1
  %2473 = zext i1 %2472 to i32
  %2474 = and i32 %2473, %2470
  %2475 = icmp ne i32 %2474, 0
  %2476 = zext i1 %2475 to i8
  store i8 %2476, ptr %247, align 1, !tbaa !11
  %2477 = invoke noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler16OptionalRationaleqEi(ptr noundef nonnull align 8 dereferenceable(24) %255, i32 noundef 0)
          to label %2478 unwind label %2454

2478:                                             ; preds = %2469
  %2479 = zext i1 %2477 to i32
  %2480 = load i8, ptr %248, align 1, !tbaa !11, !range !55, !noundef !56
  %2481 = trunc i8 %2480 to i1
  %2482 = zext i1 %2481 to i32
  %2483 = and i32 %2482, %2479
  %2484 = icmp ne i32 %2483, 0
  %2485 = zext i1 %2484 to i8
  store i8 %2485, ptr %248, align 1, !tbaa !11
  %2486 = invoke noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler16OptionalRationaleqEi(ptr noundef nonnull align 8 dereferenceable(24) %255, i32 noundef 0)
          to label %2487 unwind label %2454

2487:                                             ; preds = %2478
  %2488 = zext i1 %2486 to i32
  %2489 = load i8, ptr %249, align 1, !tbaa !11, !range !55, !noundef !56
  %2490 = trunc i8 %2489 to i1
  %2491 = zext i1 %2490 to i32
  %2492 = and i32 %2491, %2488
  %2493 = icmp ne i32 %2492, 0
  %2494 = zext i1 %2493 to i8
  store i8 %2494, ptr %249, align 1, !tbaa !11
  br label %2495

2495:                                             ; preds = %2487, %2446
  call void @llvm.lifetime.end.p0(i64 24, ptr %255) #10
  br label %2496

2496:                                             ; preds = %2495
  %2497 = load i32, ptr %254, align 4, !tbaa !13
  %2498 = add nsw i32 %2497, 1
  store i32 %2498, ptr %254, align 4, !tbaa !13
  br label %2389, !llvm.loop !193

2499:                                             ; preds = %2397
  br label %2500

2500:                                             ; preds = %2499, %2385
  br label %2501

2501:                                             ; preds = %2500, %2239
  call void @llvm.lifetime.start.p0(i64 8, ptr %256) #10
  store i64 1, ptr %256, align 8, !tbaa !9
  %2502 = load ptr, ptr %99, align 8, !tbaa !5
  %2503 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %2502, i32 0, i32 8
  %2504 = load double, ptr %2503, align 8, !tbaa !181
  %2505 = fcmp ogt double %2504, 1.000000e+00
  br i1 %2505, label %2506, label %2571

2506:                                             ; preds = %2501
  call void @llvm.lifetime.start.p0(i64 8, ptr %257) #10
  store i64 0, ptr %257, align 8, !tbaa !9
  br label %2507

2507:                                             ; preds = %2567, %2506
  %2508 = load i64, ptr %257, align 8, !tbaa !9
  %2509 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 8
  %2510 = load ptr, ptr %2509, align 8, !tbaa !15
  %2511 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %2510, i32 0, i32 2
  %2512 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2511) #10
  %2513 = icmp ult i64 %2508, %2512
  br i1 %2513, label %2515, label %2514

2514:                                             ; preds = %2507
  store i32 90, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %257) #10
  br label %2570

2515:                                             ; preds = %2507
  %2516 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 8
  %2517 = load ptr, ptr %2516, align 8, !tbaa !15
  %2518 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %2517, i32 0, i32 2
  %2519 = load i64, ptr %257, align 8, !tbaa !9
  %2520 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2518, i64 noundef %2519) #10
  %2521 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop", ptr %2520, i32 0, i32 2
  %2522 = load i8, ptr %2521, align 1, !tbaa !164, !range !55, !noundef !56
  %2523 = trunc i8 %2522 to i1
  br i1 %2523, label %2566, label %2524

2524:                                             ; preds = %2515
  call void @llvm.lifetime.start.p0(i64 1, ptr %258) #10
  store i8 1, ptr %258, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %259) #10
  store i32 0, ptr %259, align 4, !tbaa !13
  br label %2525

2525:                                             ; preds = %2550, %2524
  %2526 = load i32, ptr %259, align 4, !tbaa !13
  %2527 = load ptr, ptr %196, align 8, !tbaa !5
  %2528 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %2527, i32 0, i32 1
  %2529 = load ptr, ptr %2528, align 8, !tbaa !170
  %2530 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %2529, i32 0, i32 12
  %2531 = load i32, ptr %2530, align 4, !tbaa !127
  %2532 = icmp slt i32 %2526, %2531
  br i1 %2532, label %2534, label %2533

2533:                                             ; preds = %2525
  store i32 93, ptr %33, align 4
  br label %2553

2534:                                             ; preds = %2525
  call void @llvm.lifetime.start.p0(i64 24, ptr %260) #10
  %2535 = load ptr, ptr %243, align 8, !tbaa !5
  %2536 = getelementptr inbounds %"struct.std::pair.136", ptr %2535, i32 0, i32 0
  %2537 = load i32, ptr %259, align 4, !tbaa !13
  %2538 = load i64, ptr %257, align 8, !tbaa !9
  %2539 = trunc i64 %2538 to i32
  invoke void @_ZNK6Halide8Internal13Autoscheduler12LoadJacobianclEii(ptr dead_on_unwind writable sret(%"struct.Halide::Internal::Autoscheduler::OptionalRational") align 8 %260, ptr noundef nonnull align 8 dereferenceable(32) %2536, i32 noundef %2537, i32 noundef %2539)
          to label %2540 unwind label %2545

2540:                                             ; preds = %2534
  %2541 = invoke noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler16OptionalRationaleqEi(ptr noundef nonnull align 8 dereferenceable(24) %260, i32 noundef 0)
          to label %2542 unwind label %2545

2542:                                             ; preds = %2540
  %2543 = xor i1 %2541, true
  call void @llvm.lifetime.end.p0(i64 24, ptr %260) #10
  br i1 %2543, label %2544, label %2549

2544:                                             ; preds = %2542
  store i8 0, ptr %258, align 1, !tbaa !11
  store i32 93, ptr %33, align 4
  br label %2553

2545:                                             ; preds = %2540, %2534
  %2546 = landingpad { ptr, i32 }
          cleanup
  %2547 = extractvalue { ptr, i32 } %2546, 0
  store ptr %2547, ptr %41, align 8
  %2548 = extractvalue { ptr, i32 } %2546, 1
  store i32 %2548, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %260) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %259) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %258) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %257) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %256) #10
  br label %2627

2549:                                             ; preds = %2542
  br label %2550

2550:                                             ; preds = %2549
  %2551 = load i32, ptr %259, align 4, !tbaa !13
  %2552 = add nsw i32 %2551, 1
  store i32 %2552, ptr %259, align 4, !tbaa !13
  br label %2525, !llvm.loop !194

2553:                                             ; preds = %2544, %2533
  call void @llvm.lifetime.end.p0(i64 4, ptr %259) #10
  br label %2554

2554:                                             ; preds = %2553
  %2555 = load i8, ptr %258, align 1, !tbaa !11, !range !55, !noundef !56
  %2556 = trunc i8 %2555 to i1
  br i1 %2556, label %2557, label %2565

2557:                                             ; preds = %2554
  %2558 = load ptr, ptr %18, align 8, !tbaa !5
  %2559 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %2558, i32 0, i32 2
  %2560 = load i64, ptr %257, align 8, !tbaa !9
  %2561 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2559, i64 noundef %2560) #10
  %2562 = load i64, ptr %2561, align 8, !tbaa !9
  %2563 = load i64, ptr %256, align 8, !tbaa !9
  %2564 = mul nsw i64 %2563, %2562
  store i64 %2564, ptr %256, align 8, !tbaa !9
  br label %2565

2565:                                             ; preds = %2557, %2554
  call void @llvm.lifetime.end.p0(i64 1, ptr %258) #10
  br label %2566

2566:                                             ; preds = %2565, %2515
  br label %2567

2567:                                             ; preds = %2566
  %2568 = load i64, ptr %257, align 8, !tbaa !9
  %2569 = add i64 %2568, 1
  store i64 %2569, ptr %257, align 8, !tbaa !9
  br label %2507, !llvm.loop !195

2570:                                             ; preds = %2514
  br label %2571

2571:                                             ; preds = %2570, %2501
  %2572 = load i64, ptr %256, align 8, !tbaa !9
  %2573 = sitofp i64 %2572 to double
  %2574 = load double, ptr %244, align 8, !tbaa !158
  %2575 = fdiv double %2574, %2573
  store double %2575, ptr %244, align 8, !tbaa !158
  %2576 = load double, ptr %244, align 8, !tbaa !158
  %2577 = load double, ptr %179, align 8, !tbaa !158
  %2578 = fadd double %2577, %2576
  store double %2578, ptr %179, align 8, !tbaa !158
  %2579 = load i8, ptr %245, align 1, !tbaa !11, !range !55, !noundef !56
  %2580 = trunc i8 %2579 to i1
  br i1 %2580, label %2581, label %2585

2581:                                             ; preds = %2571
  %2582 = load double, ptr %244, align 8, !tbaa !158
  %2583 = load double, ptr %174, align 8, !tbaa !158
  %2584 = fadd double %2583, %2582
  store double %2584, ptr %174, align 8, !tbaa !158
  br label %2621

2585:                                             ; preds = %2571
  %2586 = load i8, ptr %246, align 1, !tbaa !11, !range !55, !noundef !56
  %2587 = trunc i8 %2586 to i1
  br i1 %2587, label %2588, label %2592

2588:                                             ; preds = %2585
  %2589 = load double, ptr %244, align 8, !tbaa !158
  %2590 = load double, ptr %173, align 8, !tbaa !158
  %2591 = fadd double %2590, %2589
  store double %2591, ptr %173, align 8, !tbaa !158
  br label %2620

2592:                                             ; preds = %2585
  %2593 = load i8, ptr %247, align 1, !tbaa !11, !range !55, !noundef !56
  %2594 = trunc i8 %2593 to i1
  br i1 %2594, label %2595, label %2599

2595:                                             ; preds = %2592
  %2596 = load double, ptr %244, align 8, !tbaa !158
  %2597 = load double, ptr %176, align 8, !tbaa !158
  %2598 = fadd double %2597, %2596
  store double %2598, ptr %176, align 8, !tbaa !158
  br label %2619

2599:                                             ; preds = %2592
  %2600 = load i8, ptr %248, align 1, !tbaa !11, !range !55, !noundef !56
  %2601 = trunc i8 %2600 to i1
  br i1 %2601, label %2602, label %2606

2602:                                             ; preds = %2599
  %2603 = load double, ptr %244, align 8, !tbaa !158
  %2604 = load double, ptr %177, align 8, !tbaa !158
  %2605 = fadd double %2604, %2603
  store double %2605, ptr %177, align 8, !tbaa !158
  br label %2618

2606:                                             ; preds = %2599
  %2607 = load i8, ptr %249, align 1, !tbaa !11, !range !55, !noundef !56
  %2608 = trunc i8 %2607 to i1
  br i1 %2608, label %2609, label %2613

2609:                                             ; preds = %2606
  %2610 = load double, ptr %244, align 8, !tbaa !158
  %2611 = load double, ptr %178, align 8, !tbaa !158
  %2612 = fadd double %2611, %2610
  store double %2612, ptr %178, align 8, !tbaa !158
  br label %2617

2613:                                             ; preds = %2606
  %2614 = load double, ptr %244, align 8, !tbaa !158
  %2615 = load double, ptr %175, align 8, !tbaa !158
  %2616 = fadd double %2615, %2614
  store double %2616, ptr %175, align 8, !tbaa !158
  br label %2617

2617:                                             ; preds = %2613, %2609
  br label %2618

2618:                                             ; preds = %2617, %2602
  br label %2619

2619:                                             ; preds = %2618, %2595
  br label %2620

2620:                                             ; preds = %2619, %2588
  br label %2621

2621:                                             ; preds = %2620, %2581
  call void @llvm.lifetime.end.p0(i64 8, ptr %256) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %250) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %249) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %248) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %247) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %246) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %245) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %244) #10
  store i32 0, ptr %33, align 4
  br label %2622

2622:                                             ; preds = %2621, %2213
  call void @llvm.lifetime.end.p0(i64 8, ptr %243) #10
  %2623 = load i32, ptr %33, align 4
  switch i32 %2623, label %3390 [
    i32 0, label %2624
    i32 83, label %2625
  ]

2624:                                             ; preds = %2622
  br label %2625

2625:                                             ; preds = %2624, %2622
  %2626 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS4_11FunctionDAG4NodeEESt6vectorIS9_SaIS9_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %241) #10
  br label %2201

2627:                                             ; preds = %2545, %2454, %2274
  call void @llvm.lifetime.end.p0(i64 4, ptr %250) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %249) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %248) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %247) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %246) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %245) #10
  br label %2628

2628:                                             ; preds = %2627, %2257
  call void @llvm.lifetime.end.p0(i64 8, ptr %244) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %243) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %242) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %241) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %240) #10
  br label %3063

2629:                                             ; preds = %2203
  br label %2630

2630:                                             ; preds = %2629, %2190
  call void @llvm.lifetime.start.p0(i64 8, ptr %261) #10
  %2631 = load ptr, ptr %196, align 8, !tbaa !5
  %2632 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %2631, i32 0, i32 1
  %2633 = invoke ptr @_ZNSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE4findERKS6_(ptr noundef nonnull align 8 dereferenceable(48) %190, ptr noundef nonnull align 8 dereferenceable(8) %2632)
          to label %2634 unwind label %2640

2634:                                             ; preds = %2630
  %2635 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %261, i32 0, i32 0
  store ptr %2633, ptr %2635, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %262) #10
  %2636 = call ptr @_ZNKSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %190) #10
  %2637 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %262, i32 0, i32 0
  store ptr %2636, ptr %2637, align 8
  %2638 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEES9_(ptr noundef nonnull align 8 dereferenceable(8) %261, ptr noundef nonnull align 8 dereferenceable(8) %262) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %262) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %261) #10
  br i1 %2638, label %2639, label %2644

2639:                                             ; preds = %2634
  store i32 75, ptr %33, align 4
  br label %3053

2640:                                             ; preds = %2630
  %2641 = landingpad { ptr, i32 }
          cleanup
  %2642 = extractvalue { ptr, i32 } %2641, 0
  store ptr %2642, ptr %41, align 8
  %2643 = extractvalue { ptr, i32 } %2641, 1
  store i32 %2643, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %261) #10
  br label %3063

2644:                                             ; preds = %2634
  %2645 = load ptr, ptr %196, align 8, !tbaa !5
  %2646 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %2645, i32 0, i32 1
  %2647 = invoke { ptr, i8 } @_ZNSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE6insertERKS6_(ptr noundef nonnull align 8 dereferenceable(48) %190, ptr noundef nonnull align 8 dereferenceable(8) %2646)
          to label %2648 unwind label %2154

2648:                                             ; preds = %2644
  %2649 = getelementptr inbounds { ptr, i8 }, ptr %263, i32 0, i32 0
  %2650 = extractvalue { ptr, i8 } %2647, 0
  store ptr %2650, ptr %2649, align 8
  %2651 = getelementptr inbounds { ptr, i8 }, ptr %263, i32 0, i32 1
  %2652 = extractvalue { ptr, i8 } %2647, 1
  store i8 %2652, ptr %2651, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %264) #10
  store i64 1, ptr %264, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %265) #10
  store i64 1, ptr %265, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %266) #10
  store i64 1, ptr %266, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %267) #10
  store i64 1, ptr %267, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %268) #10
  store i32 0, ptr %268, align 4, !tbaa !13
  br label %2653

2653:                                             ; preds = %2965, %2648
  %2654 = load i32, ptr %268, align 4, !tbaa !13
  %2655 = load ptr, ptr %196, align 8, !tbaa !5
  %2656 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %2655, i32 0, i32 1
  %2657 = load ptr, ptr %2656, align 8, !tbaa !170
  %2658 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %2657, i32 0, i32 12
  %2659 = load i32, ptr %2658, align 4, !tbaa !127
  %2660 = icmp slt i32 %2654, %2659
  br i1 %2660, label %2662, label %2661

2661:                                             ; preds = %2653
  store i32 96, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %268) #10
  br label %2975

2662:                                             ; preds = %2653
  call void @llvm.lifetime.start.p0(i64 24, ptr %269) #10
  %2663 = load ptr, ptr %220, align 8, !tbaa !5
  %2664 = invoke noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %2663)
          to label %2665 unwind label %2854

2665:                                             ; preds = %2662
  %2666 = load i32, ptr %268, align 4, !tbaa !13
  %2667 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents15region_requiredEi(ptr noundef nonnull align 8 dereferenceable(16) %2664, i32 noundef %2666)
          to label %2668 unwind label %2854

2668:                                             ; preds = %2665
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %269, ptr align 8 %2667, i64 24, i1 false), !tbaa.struct !196
  call void @llvm.lifetime.start.p0(i64 24, ptr %270) #10
  %2669 = load ptr, ptr %222, align 8, !tbaa !5
  %2670 = invoke noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %2669)
          to label %2671 unwind label %2858

2671:                                             ; preds = %2668
  %2672 = load i32, ptr %268, align 4, !tbaa !13
  %2673 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents15region_computedEi(ptr noundef nonnull align 8 dereferenceable(16) %2670, i32 noundef %2672)
          to label %2674 unwind label %2858

2674:                                             ; preds = %2671
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %270, ptr align 8 %2673, i64 24, i1 false), !tbaa.struct !196
  call void @llvm.lifetime.start.p0(i64 24, ptr %271) #10
  %2675 = load ptr, ptr %223, align 8, !tbaa !5
  %2676 = invoke noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %2675)
          to label %2677 unwind label %2862

2677:                                             ; preds = %2674
  %2678 = load i32, ptr %268, align 4, !tbaa !13
  %2679 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents15region_requiredEi(ptr noundef nonnull align 8 dereferenceable(16) %2676, i32 noundef %2678)
          to label %2680 unwind label %2862

2680:                                             ; preds = %2677
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %271, ptr align 8 %2679, i64 24, i1 false), !tbaa.struct !196
  call void @llvm.lifetime.start.p0(i64 24, ptr %272) #10
  %2681 = load ptr, ptr %221, align 8, !tbaa !5
  %2682 = invoke noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %2681)
          to label %2683 unwind label %2866

2683:                                             ; preds = %2680
  %2684 = load i32, ptr %268, align 4, !tbaa !13
  %2685 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents15region_requiredEi(ptr noundef nonnull align 8 dereferenceable(16) %2682, i32 noundef %2684)
          to label %2686 unwind label %2866

2686:                                             ; preds = %2683
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %272, ptr align 8 %2685, i64 24, i1 false), !tbaa.struct !196
  call void @llvm.lifetime.start.p0(i64 1, ptr %273) #10
  store i1 false, ptr %275, align 1
  store i1 false, ptr %276, align 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %277) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %278) #10
  %2687 = invoke noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span3minEv(ptr noundef nonnull align 8 dereferenceable(17) %271)
          to label %2688 unwind label %2866

2688:                                             ; preds = %2686
  %2689 = invoke noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span3maxEv(ptr noundef nonnull align 8 dereferenceable(17) %271)
          to label %2690 unwind label %2866

2690:                                             ; preds = %2688
  %2691 = icmp sle i64 %2687, %2689
  br i1 %2691, label %2692, label %2693

2692:                                             ; preds = %2690
  br label %2710

2693:                                             ; preds = %2690
  call void @llvm.lifetime.start.p0(i64 384, ptr %274) #10
  store i1 true, ptr %275, align 1
  invoke void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %274, ptr noundef @.str.3, i32 noundef 796, ptr noundef @.str.12, i32 noundef 0)
          to label %2694 unwind label %2870

2694:                                             ; preds = %2693
  store i1 true, ptr %276, align 1
  %2695 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %274)
          to label %2696 unwind label %2874

2696:                                             ; preds = %2694
  %2697 = invoke noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span3minEv(ptr noundef nonnull align 8 dereferenceable(17) %271)
          to label %2698 unwind label %2878

2698:                                             ; preds = %2696
  store i64 %2697, ptr %277, align 8, !tbaa !9
  %2699 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIlEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %2695, ptr noundef nonnull align 8 dereferenceable(8) %277)
          to label %2700 unwind label %2878

2700:                                             ; preds = %2698
  %2701 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA2_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %2699, ptr noundef nonnull align 1 dereferenceable(2) @.str.13)
          to label %2702 unwind label %2878

2702:                                             ; preds = %2700
  %2703 = invoke noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span3maxEv(ptr noundef nonnull align 8 dereferenceable(17) %271)
          to label %2704 unwind label %2882

2704:                                             ; preds = %2702
  store i64 %2703, ptr %278, align 8, !tbaa !9
  %2705 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIlEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %2701, ptr noundef nonnull align 8 dereferenceable(8) %278)
          to label %2706 unwind label %2882

2706:                                             ; preds = %2704
  %2707 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA2_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %2705, ptr noundef nonnull align 1 dereferenceable(2) @.str.9)
          to label %2708 unwind label %2882

2708:                                             ; preds = %2706
  invoke void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %273, ptr noundef nonnull align 8 dereferenceable(380) %2707)
          to label %2709 unwind label %2882

2709:                                             ; preds = %2708
  br label %2710

2710:                                             ; preds = %2709, %2692
  call void @llvm.lifetime.end.p0(i64 8, ptr %278) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %277) #10
  %2711 = load i1, ptr %276, align 1
  br i1 %2711, label %2712, label %2714

2712:                                             ; preds = %2710
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %274)
          to label %2713 unwind label %2870

2713:                                             ; preds = %2712
  br label %2714

2714:                                             ; preds = %2713, %2710
  %2715 = load i1, ptr %275, align 1
  br i1 %2715, label %2716, label %2717

2716:                                             ; preds = %2714
  call void @llvm.lifetime.end.p0(i64 384, ptr %274) #10
  br label %2717

2717:                                             ; preds = %2716, %2714
  call void @llvm.lifetime.end.p0(i64 1, ptr %273) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %279) #10
  store i1 false, ptr %281, align 1
  store i1 false, ptr %282, align 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %283) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %284) #10
  %2718 = invoke noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span3minEv(ptr noundef nonnull align 8 dereferenceable(17) %270)
          to label %2719 unwind label %2866

2719:                                             ; preds = %2717
  %2720 = invoke noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span3maxEv(ptr noundef nonnull align 8 dereferenceable(17) %270)
          to label %2721 unwind label %2866

2721:                                             ; preds = %2719
  %2722 = icmp sle i64 %2718, %2720
  br i1 %2722, label %2723, label %2724

2723:                                             ; preds = %2721
  br label %2741

2724:                                             ; preds = %2721
  call void @llvm.lifetime.start.p0(i64 384, ptr %280) #10
  store i1 true, ptr %281, align 1
  invoke void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %280, ptr noundef @.str.3, i32 noundef 797, ptr noundef @.str.14, i32 noundef 0)
          to label %2725 unwind label %2896

2725:                                             ; preds = %2724
  store i1 true, ptr %282, align 1
  %2726 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %280)
          to label %2727 unwind label %2900

2727:                                             ; preds = %2725
  %2728 = invoke noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span3minEv(ptr noundef nonnull align 8 dereferenceable(17) %270)
          to label %2729 unwind label %2904

2729:                                             ; preds = %2727
  store i64 %2728, ptr %283, align 8, !tbaa !9
  %2730 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIlEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %2726, ptr noundef nonnull align 8 dereferenceable(8) %283)
          to label %2731 unwind label %2904

2731:                                             ; preds = %2729
  %2732 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA2_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %2730, ptr noundef nonnull align 1 dereferenceable(2) @.str.13)
          to label %2733 unwind label %2904

2733:                                             ; preds = %2731
  %2734 = invoke noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span3maxEv(ptr noundef nonnull align 8 dereferenceable(17) %270)
          to label %2735 unwind label %2908

2735:                                             ; preds = %2733
  store i64 %2734, ptr %284, align 8, !tbaa !9
  %2736 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIlEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %2732, ptr noundef nonnull align 8 dereferenceable(8) %284)
          to label %2737 unwind label %2908

2737:                                             ; preds = %2735
  %2738 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA2_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %2736, ptr noundef nonnull align 1 dereferenceable(2) @.str.9)
          to label %2739 unwind label %2908

2739:                                             ; preds = %2737
  invoke void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %279, ptr noundef nonnull align 8 dereferenceable(380) %2738)
          to label %2740 unwind label %2908

2740:                                             ; preds = %2739
  br label %2741

2741:                                             ; preds = %2740, %2723
  call void @llvm.lifetime.end.p0(i64 8, ptr %284) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %283) #10
  %2742 = load i1, ptr %282, align 1
  br i1 %2742, label %2743, label %2745

2743:                                             ; preds = %2741
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %280)
          to label %2744 unwind label %2896

2744:                                             ; preds = %2743
  br label %2745

2745:                                             ; preds = %2744, %2741
  %2746 = load i1, ptr %281, align 1
  br i1 %2746, label %2747, label %2748

2747:                                             ; preds = %2745
  call void @llvm.lifetime.end.p0(i64 384, ptr %280) #10
  br label %2748

2748:                                             ; preds = %2747, %2745
  call void @llvm.lifetime.end.p0(i64 1, ptr %279) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %285) #10
  store i1 false, ptr %287, align 1
  store i1 false, ptr %288, align 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %289) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %290) #10
  %2749 = invoke noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span3minEv(ptr noundef nonnull align 8 dereferenceable(17) %272)
          to label %2750 unwind label %2866

2750:                                             ; preds = %2748
  %2751 = invoke noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span3maxEv(ptr noundef nonnull align 8 dereferenceable(17) %272)
          to label %2752 unwind label %2866

2752:                                             ; preds = %2750
  %2753 = icmp sle i64 %2749, %2751
  br i1 %2753, label %2754, label %2755

2754:                                             ; preds = %2752
  br label %2772

2755:                                             ; preds = %2752
  call void @llvm.lifetime.start.p0(i64 384, ptr %286) #10
  store i1 true, ptr %287, align 1
  invoke void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %286, ptr noundef @.str.3, i32 noundef 798, ptr noundef @.str.15, i32 noundef 0)
          to label %2756 unwind label %2922

2756:                                             ; preds = %2755
  store i1 true, ptr %288, align 1
  %2757 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %286)
          to label %2758 unwind label %2926

2758:                                             ; preds = %2756
  %2759 = invoke noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span3minEv(ptr noundef nonnull align 8 dereferenceable(17) %272)
          to label %2760 unwind label %2930

2760:                                             ; preds = %2758
  store i64 %2759, ptr %289, align 8, !tbaa !9
  %2761 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIlEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %2757, ptr noundef nonnull align 8 dereferenceable(8) %289)
          to label %2762 unwind label %2930

2762:                                             ; preds = %2760
  %2763 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA2_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %2761, ptr noundef nonnull align 1 dereferenceable(2) @.str.13)
          to label %2764 unwind label %2930

2764:                                             ; preds = %2762
  %2765 = invoke noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span3maxEv(ptr noundef nonnull align 8 dereferenceable(17) %272)
          to label %2766 unwind label %2934

2766:                                             ; preds = %2764
  store i64 %2765, ptr %290, align 8, !tbaa !9
  %2767 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIlEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %2763, ptr noundef nonnull align 8 dereferenceable(8) %290)
          to label %2768 unwind label %2934

2768:                                             ; preds = %2766
  %2769 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA2_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %2767, ptr noundef nonnull align 1 dereferenceable(2) @.str.9)
          to label %2770 unwind label %2934

2770:                                             ; preds = %2768
  invoke void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %285, ptr noundef nonnull align 8 dereferenceable(380) %2769)
          to label %2771 unwind label %2934

2771:                                             ; preds = %2770
  br label %2772

2772:                                             ; preds = %2771, %2754
  call void @llvm.lifetime.end.p0(i64 8, ptr %290) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %289) #10
  %2773 = load i1, ptr %288, align 1
  br i1 %2773, label %2774, label %2776

2774:                                             ; preds = %2772
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %286)
          to label %2775 unwind label %2922

2775:                                             ; preds = %2774
  br label %2776

2776:                                             ; preds = %2775, %2772
  %2777 = load i1, ptr %287, align 1
  br i1 %2777, label %2778, label %2779

2778:                                             ; preds = %2776
  call void @llvm.lifetime.end.p0(i64 384, ptr %286) #10
  br label %2779

2779:                                             ; preds = %2778, %2776
  call void @llvm.lifetime.end.p0(i64 1, ptr %285) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %291) #10
  %2780 = invoke noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17) %269)
          to label %2781 unwind label %2948

2781:                                             ; preds = %2779
  store i64 %2780, ptr %291, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %292) #10
  %2782 = invoke noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17) %270)
          to label %2783 unwind label %2952

2783:                                             ; preds = %2781
  store i64 %2782, ptr %292, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %293) #10
  %2784 = invoke noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17) %271)
          to label %2785 unwind label %2956

2785:                                             ; preds = %2783
  store i64 %2784, ptr %293, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %294) #10
  %2786 = invoke noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17) %272)
          to label %2787 unwind label %2960

2787:                                             ; preds = %2785
  store i64 %2786, ptr %294, align 8, !tbaa !9
  %2788 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIlERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %291, ptr noundef nonnull align 8 dereferenceable(8) %264)
          to label %2789 unwind label %2960

2789:                                             ; preds = %2787
  %2790 = load i64, ptr %2788, align 8, !tbaa !9
  store i64 %2790, ptr %264, align 8, !tbaa !9
  %2791 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIlERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %292, ptr noundef nonnull align 8 dereferenceable(8) %265)
          to label %2792 unwind label %2960

2792:                                             ; preds = %2789
  %2793 = load i64, ptr %2791, align 8, !tbaa !9
  store i64 %2793, ptr %265, align 8, !tbaa !9
  %2794 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIlERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %293, ptr noundef nonnull align 8 dereferenceable(8) %266)
          to label %2795 unwind label %2960

2795:                                             ; preds = %2792
  %2796 = load i64, ptr %2794, align 8, !tbaa !9
  store i64 %2796, ptr %266, align 8, !tbaa !9
  %2797 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIlERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %294, ptr noundef nonnull align 8 dereferenceable(8) %267)
          to label %2798 unwind label %2960

2798:                                             ; preds = %2795
  %2799 = load i64, ptr %2797, align 8, !tbaa !9
  store i64 %2799, ptr %267, align 8, !tbaa !9
  %2800 = load i64, ptr %291, align 8, !tbaa !9
  %2801 = load i64, ptr %224, align 8, !tbaa !9
  %2802 = mul nsw i64 %2801, %2800
  store i64 %2802, ptr %224, align 8, !tbaa !9
  %2803 = load i64, ptr %292, align 8, !tbaa !9
  %2804 = load i64, ptr %225, align 8, !tbaa !9
  %2805 = mul nsw i64 %2804, %2803
  store i64 %2805, ptr %225, align 8, !tbaa !9
  %2806 = load i64, ptr %293, align 8, !tbaa !9
  %2807 = load i64, ptr %226, align 8, !tbaa !9
  %2808 = mul nsw i64 %2807, %2806
  store i64 %2808, ptr %226, align 8, !tbaa !9
  %2809 = load i64, ptr %294, align 8, !tbaa !9
  %2810 = load i64, ptr %227, align 8, !tbaa !9
  %2811 = mul nsw i64 %2810, %2809
  store i64 %2811, ptr %227, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %295) #10
  %2812 = load ptr, ptr %196, align 8, !tbaa !5
  %2813 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %2812, i32 0, i32 1
  %2814 = load ptr, ptr %2813, align 8, !tbaa !170
  %2815 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %2814, i32 0, i32 14
  %2816 = load i8, ptr %2815, align 1, !tbaa !63, !range !55, !noundef !56
  %2817 = trunc i8 %2816 to i1
  br i1 %2817, label %2818, label %2821

2818:                                             ; preds = %2798
  %2819 = load i32, ptr %268, align 4, !tbaa !13
  %2820 = icmp eq i32 %2819, 0
  br i1 %2820, label %2836, label %2821

2821:                                             ; preds = %2818, %2798
  %2822 = load ptr, ptr %201, align 8, !tbaa !5
  %2823 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::Sites", ptr %2822, i32 0, i32 2
  %2824 = load ptr, ptr %2823, align 8, !tbaa !100
  %2825 = icmp ne ptr %2824, null
  br i1 %2825, label %2826, label %2834

2826:                                             ; preds = %2821
  %2827 = load i32, ptr %268, align 4, !tbaa !13
  %2828 = load ptr, ptr %201, align 8, !tbaa !5
  %2829 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest::Sites", ptr %2828, i32 0, i32 2
  %2830 = load ptr, ptr %2829, align 8, !tbaa !100
  %2831 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %2830, i32 0, i32 13
  %2832 = load i32, ptr %2831, align 4, !tbaa !129
  %2833 = icmp eq i32 %2827, %2832
  br label %2834

2834:                                             ; preds = %2826, %2821
  %2835 = phi i1 [ false, %2821 ], [ %2833, %2826 ]
  br label %2836

2836:                                             ; preds = %2834, %2818
  %2837 = phi i1 [ true, %2818 ], [ %2835, %2834 ]
  %2838 = zext i1 %2837 to i8
  store i8 %2838, ptr %295, align 1, !tbaa !11
  %2839 = load i8, ptr %295, align 1, !tbaa !11, !range !55, !noundef !56
  %2840 = trunc i8 %2839 to i1
  br i1 %2840, label %2964, label %2841

2841:                                             ; preds = %2836
  %2842 = load i64, ptr %291, align 8, !tbaa !9
  %2843 = load i64, ptr %228, align 8, !tbaa !9
  %2844 = mul nsw i64 %2843, %2842
  store i64 %2844, ptr %228, align 8, !tbaa !9
  %2845 = load i64, ptr %292, align 8, !tbaa !9
  %2846 = load i64, ptr %229, align 8, !tbaa !9
  %2847 = mul nsw i64 %2846, %2845
  store i64 %2847, ptr %229, align 8, !tbaa !9
  %2848 = load i64, ptr %293, align 8, !tbaa !9
  %2849 = load i64, ptr %230, align 8, !tbaa !9
  %2850 = mul nsw i64 %2849, %2848
  store i64 %2850, ptr %230, align 8, !tbaa !9
  %2851 = load i64, ptr %294, align 8, !tbaa !9
  %2852 = load i64, ptr %231, align 8, !tbaa !9
  %2853 = mul nsw i64 %2852, %2851
  store i64 %2853, ptr %231, align 8, !tbaa !9
  br label %2964

2854:                                             ; preds = %2665, %2662
  %2855 = landingpad { ptr, i32 }
          cleanup
  %2856 = extractvalue { ptr, i32 } %2855, 0
  store ptr %2856, ptr %41, align 8
  %2857 = extractvalue { ptr, i32 } %2855, 1
  store i32 %2857, ptr %42, align 4
  br label %2974

2858:                                             ; preds = %2671, %2668
  %2859 = landingpad { ptr, i32 }
          cleanup
  %2860 = extractvalue { ptr, i32 } %2859, 0
  store ptr %2860, ptr %41, align 8
  %2861 = extractvalue { ptr, i32 } %2859, 1
  store i32 %2861, ptr %42, align 4
  br label %2973

2862:                                             ; preds = %2677, %2674
  %2863 = landingpad { ptr, i32 }
          cleanup
  %2864 = extractvalue { ptr, i32 } %2863, 0
  store ptr %2864, ptr %41, align 8
  %2865 = extractvalue { ptr, i32 } %2863, 1
  store i32 %2865, ptr %42, align 4
  br label %2972

2866:                                             ; preds = %2750, %2748, %2719, %2717, %2688, %2686, %2683, %2680
  %2867 = landingpad { ptr, i32 }
          cleanup
  %2868 = extractvalue { ptr, i32 } %2867, 0
  store ptr %2868, ptr %41, align 8
  %2869 = extractvalue { ptr, i32 } %2867, 1
  store i32 %2869, ptr %42, align 4
  br label %2971

2870:                                             ; preds = %2712, %2693
  %2871 = landingpad { ptr, i32 }
          cleanup
  %2872 = extractvalue { ptr, i32 } %2871, 0
  store ptr %2872, ptr %41, align 8
  %2873 = extractvalue { ptr, i32 } %2871, 1
  store i32 %2873, ptr %42, align 4
  br label %2892

2874:                                             ; preds = %2694
  %2875 = landingpad { ptr, i32 }
          cleanup
  %2876 = extractvalue { ptr, i32 } %2875, 0
  store ptr %2876, ptr %41, align 8
  %2877 = extractvalue { ptr, i32 } %2875, 1
  store i32 %2877, ptr %42, align 4
  br label %2887

2878:                                             ; preds = %2700, %2698, %2696
  %2879 = landingpad { ptr, i32 }
          cleanup
  %2880 = extractvalue { ptr, i32 } %2879, 0
  store ptr %2880, ptr %41, align 8
  %2881 = extractvalue { ptr, i32 } %2879, 1
  store i32 %2881, ptr %42, align 4
  br label %2886

2882:                                             ; preds = %2708, %2706, %2704, %2702
  %2883 = landingpad { ptr, i32 }
          cleanup
  %2884 = extractvalue { ptr, i32 } %2883, 0
  store ptr %2884, ptr %41, align 8
  %2885 = extractvalue { ptr, i32 } %2883, 1
  store i32 %2885, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %278) #10
  br label %2886

2886:                                             ; preds = %2882, %2878
  call void @llvm.lifetime.end.p0(i64 8, ptr %277) #10
  br label %2887

2887:                                             ; preds = %2886, %2874
  %2888 = load i1, ptr %276, align 1
  br i1 %2888, label %2889, label %2891

2889:                                             ; preds = %2887
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %274)
          to label %2890 unwind label %3387

2890:                                             ; preds = %2889
  br label %2891

2891:                                             ; preds = %2890, %2887
  br label %2892

2892:                                             ; preds = %2891, %2870
  %2893 = load i1, ptr %275, align 1
  br i1 %2893, label %2894, label %2895

2894:                                             ; preds = %2892
  call void @llvm.lifetime.end.p0(i64 384, ptr %274) #10
  br label %2895

2895:                                             ; preds = %2894, %2892
  call void @llvm.lifetime.end.p0(i64 1, ptr %273) #10
  br label %2971

2896:                                             ; preds = %2743, %2724
  %2897 = landingpad { ptr, i32 }
          cleanup
  %2898 = extractvalue { ptr, i32 } %2897, 0
  store ptr %2898, ptr %41, align 8
  %2899 = extractvalue { ptr, i32 } %2897, 1
  store i32 %2899, ptr %42, align 4
  br label %2918

2900:                                             ; preds = %2725
  %2901 = landingpad { ptr, i32 }
          cleanup
  %2902 = extractvalue { ptr, i32 } %2901, 0
  store ptr %2902, ptr %41, align 8
  %2903 = extractvalue { ptr, i32 } %2901, 1
  store i32 %2903, ptr %42, align 4
  br label %2913

2904:                                             ; preds = %2731, %2729, %2727
  %2905 = landingpad { ptr, i32 }
          cleanup
  %2906 = extractvalue { ptr, i32 } %2905, 0
  store ptr %2906, ptr %41, align 8
  %2907 = extractvalue { ptr, i32 } %2905, 1
  store i32 %2907, ptr %42, align 4
  br label %2912

2908:                                             ; preds = %2739, %2737, %2735, %2733
  %2909 = landingpad { ptr, i32 }
          cleanup
  %2910 = extractvalue { ptr, i32 } %2909, 0
  store ptr %2910, ptr %41, align 8
  %2911 = extractvalue { ptr, i32 } %2909, 1
  store i32 %2911, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %284) #10
  br label %2912

2912:                                             ; preds = %2908, %2904
  call void @llvm.lifetime.end.p0(i64 8, ptr %283) #10
  br label %2913

2913:                                             ; preds = %2912, %2900
  %2914 = load i1, ptr %282, align 1
  br i1 %2914, label %2915, label %2917

2915:                                             ; preds = %2913
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %280)
          to label %2916 unwind label %3387

2916:                                             ; preds = %2915
  br label %2917

2917:                                             ; preds = %2916, %2913
  br label %2918

2918:                                             ; preds = %2917, %2896
  %2919 = load i1, ptr %281, align 1
  br i1 %2919, label %2920, label %2921

2920:                                             ; preds = %2918
  call void @llvm.lifetime.end.p0(i64 384, ptr %280) #10
  br label %2921

2921:                                             ; preds = %2920, %2918
  call void @llvm.lifetime.end.p0(i64 1, ptr %279) #10
  br label %2971

2922:                                             ; preds = %2774, %2755
  %2923 = landingpad { ptr, i32 }
          cleanup
  %2924 = extractvalue { ptr, i32 } %2923, 0
  store ptr %2924, ptr %41, align 8
  %2925 = extractvalue { ptr, i32 } %2923, 1
  store i32 %2925, ptr %42, align 4
  br label %2944

2926:                                             ; preds = %2756
  %2927 = landingpad { ptr, i32 }
          cleanup
  %2928 = extractvalue { ptr, i32 } %2927, 0
  store ptr %2928, ptr %41, align 8
  %2929 = extractvalue { ptr, i32 } %2927, 1
  store i32 %2929, ptr %42, align 4
  br label %2939

2930:                                             ; preds = %2762, %2760, %2758
  %2931 = landingpad { ptr, i32 }
          cleanup
  %2932 = extractvalue { ptr, i32 } %2931, 0
  store ptr %2932, ptr %41, align 8
  %2933 = extractvalue { ptr, i32 } %2931, 1
  store i32 %2933, ptr %42, align 4
  br label %2938

2934:                                             ; preds = %2770, %2768, %2766, %2764
  %2935 = landingpad { ptr, i32 }
          cleanup
  %2936 = extractvalue { ptr, i32 } %2935, 0
  store ptr %2936, ptr %41, align 8
  %2937 = extractvalue { ptr, i32 } %2935, 1
  store i32 %2937, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %290) #10
  br label %2938

2938:                                             ; preds = %2934, %2930
  call void @llvm.lifetime.end.p0(i64 8, ptr %289) #10
  br label %2939

2939:                                             ; preds = %2938, %2926
  %2940 = load i1, ptr %288, align 1
  br i1 %2940, label %2941, label %2943

2941:                                             ; preds = %2939
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %286)
          to label %2942 unwind label %3387

2942:                                             ; preds = %2941
  br label %2943

2943:                                             ; preds = %2942, %2939
  br label %2944

2944:                                             ; preds = %2943, %2922
  %2945 = load i1, ptr %287, align 1
  br i1 %2945, label %2946, label %2947

2946:                                             ; preds = %2944
  call void @llvm.lifetime.end.p0(i64 384, ptr %286) #10
  br label %2947

2947:                                             ; preds = %2946, %2944
  call void @llvm.lifetime.end.p0(i64 1, ptr %285) #10
  br label %2971

2948:                                             ; preds = %2779
  %2949 = landingpad { ptr, i32 }
          cleanup
  %2950 = extractvalue { ptr, i32 } %2949, 0
  store ptr %2950, ptr %41, align 8
  %2951 = extractvalue { ptr, i32 } %2949, 1
  store i32 %2951, ptr %42, align 4
  br label %2970

2952:                                             ; preds = %2781
  %2953 = landingpad { ptr, i32 }
          cleanup
  %2954 = extractvalue { ptr, i32 } %2953, 0
  store ptr %2954, ptr %41, align 8
  %2955 = extractvalue { ptr, i32 } %2953, 1
  store i32 %2955, ptr %42, align 4
  br label %2969

2956:                                             ; preds = %2783
  %2957 = landingpad { ptr, i32 }
          cleanup
  %2958 = extractvalue { ptr, i32 } %2957, 0
  store ptr %2958, ptr %41, align 8
  %2959 = extractvalue { ptr, i32 } %2957, 1
  store i32 %2959, ptr %42, align 4
  br label %2968

2960:                                             ; preds = %2795, %2792, %2789, %2787, %2785
  %2961 = landingpad { ptr, i32 }
          cleanup
  %2962 = extractvalue { ptr, i32 } %2961, 0
  store ptr %2962, ptr %41, align 8
  %2963 = extractvalue { ptr, i32 } %2961, 1
  store i32 %2963, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %294) #10
  br label %2968

2964:                                             ; preds = %2841, %2836
  call void @llvm.lifetime.end.p0(i64 1, ptr %295) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %294) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %293) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %292) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %291) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %272) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %271) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %270) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %269) #10
  br label %2965

2965:                                             ; preds = %2964
  %2966 = load i32, ptr %268, align 4, !tbaa !13
  %2967 = add nsw i32 %2966, 1
  store i32 %2967, ptr %268, align 4, !tbaa !13
  br label %2653, !llvm.loop !197

2968:                                             ; preds = %2960, %2956
  call void @llvm.lifetime.end.p0(i64 8, ptr %293) #10
  br label %2969

2969:                                             ; preds = %2968, %2952
  call void @llvm.lifetime.end.p0(i64 8, ptr %292) #10
  br label %2970

2970:                                             ; preds = %2969, %2948
  call void @llvm.lifetime.end.p0(i64 8, ptr %291) #10
  br label %2971

2971:                                             ; preds = %2970, %2947, %2921, %2895, %2866
  call void @llvm.lifetime.end.p0(i64 24, ptr %272) #10
  br label %2972

2972:                                             ; preds = %2971, %2862
  call void @llvm.lifetime.end.p0(i64 24, ptr %271) #10
  br label %2973

2973:                                             ; preds = %2972, %2858
  call void @llvm.lifetime.end.p0(i64 24, ptr %270) #10
  br label %2974

2974:                                             ; preds = %2973, %2854
  call void @llvm.lifetime.end.p0(i64 24, ptr %269) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %268) #10
  br label %3062

2975:                                             ; preds = %2661
  %2976 = load i8, ptr %202, align 1, !tbaa !11, !range !55, !noundef !56
  %2977 = trunc i8 %2976 to i1
  br i1 %2977, label %2991, label %2978

2978:                                             ; preds = %2975
  %2979 = load i64, ptr %264, align 8, !tbaa !9
  %2980 = load i64, ptr %228, align 8, !tbaa !9
  %2981 = sdiv i64 %2980, %2979
  store i64 %2981, ptr %228, align 8, !tbaa !9
  %2982 = load i64, ptr %265, align 8, !tbaa !9
  %2983 = load i64, ptr %229, align 8, !tbaa !9
  %2984 = sdiv i64 %2983, %2982
  store i64 %2984, ptr %229, align 8, !tbaa !9
  %2985 = load i64, ptr %266, align 8, !tbaa !9
  %2986 = load i64, ptr %230, align 8, !tbaa !9
  %2987 = sdiv i64 %2986, %2985
  store i64 %2987, ptr %230, align 8, !tbaa !9
  %2988 = load i64, ptr %267, align 8, !tbaa !9
  %2989 = load i64, ptr %231, align 8, !tbaa !9
  %2990 = sdiv i64 %2989, %2988
  store i64 %2990, ptr %231, align 8, !tbaa !9
  br label %2991

2991:                                             ; preds = %2978, %2975
  call void @llvm.lifetime.start.p0(i64 8, ptr %296) #10
  store i64 1, ptr %296, align 8, !tbaa !9
  %2992 = load i8, ptr %202, align 1, !tbaa !11, !range !55, !noundef !56
  %2993 = trunc i8 %2992 to i1
  br i1 %2993, label %2994, label %3032

2994:                                             ; preds = %2991
  %2995 = load ptr, ptr %196, align 8, !tbaa !5
  %2996 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %2995, i32 0, i32 1
  %2997 = load ptr, ptr %2996, align 8, !tbaa !170
  %2998 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %2997, i32 0, i32 14
  %2999 = load i8, ptr %2998, align 1, !tbaa !63, !range !55, !noundef !56
  %3000 = trunc i8 %2999 to i1
  br i1 %3000, label %3032, label %3001

3001:                                             ; preds = %2994
  call void @llvm.lifetime.start.p0(i64 8, ptr %297) #10
  %3002 = load ptr, ptr %22, align 8, !tbaa !5
  %3003 = load ptr, ptr %196, align 8, !tbaa !5
  %3004 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Edge", ptr %3003, i32 0, i32 1
  %3005 = load ptr, ptr %3004, align 8, !tbaa !170
  %3006 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %3005, i32 0, i32 7
  %3007 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3006, i64 noundef 0) #10
  %3008 = invoke noundef nonnull align 8 dereferenceable(312) ptr @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE13get_or_createEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %3002, ptr noundef %3007)
          to label %3009 unwind label %3026

3009:                                             ; preds = %3001
  store ptr %3008, ptr %297, align 8, !tbaa !5
  %3010 = load ptr, ptr %297, align 8, !tbaa !5
  %3011 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %3010, i32 0, i32 0
  %3012 = load double, ptr %3011, align 8, !tbaa !95
  %3013 = fcmp une double %3012, 0.000000e+00
  br i1 %3013, label %3014, label %3031

3014:                                             ; preds = %3009
  call void @llvm.lifetime.start.p0(i64 8, ptr %298) #10
  %3015 = load ptr, ptr %297, align 8, !tbaa !5
  %3016 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %3015, i32 0, i32 0
  %3017 = load double, ptr %3016, align 8, !tbaa !95
  %3018 = fptosi double %3017 to i64
  store i64 %3018, ptr %298, align 8, !tbaa !9
  %3019 = load i64, ptr %298, align 8, !tbaa !9
  %3020 = load i64, ptr %183, align 8, !tbaa !9
  %3021 = icmp sgt i64 %3019, %3020
  br i1 %3021, label %3022, label %3030

3022:                                             ; preds = %3014
  %3023 = load i64, ptr %298, align 8, !tbaa !9
  %3024 = load i64, ptr %183, align 8, !tbaa !9
  %3025 = sdiv i64 %3023, %3024
  store i64 %3025, ptr %296, align 8, !tbaa !9
  br label %3030

3026:                                             ; preds = %3001
  %3027 = landingpad { ptr, i32 }
          cleanup
  %3028 = extractvalue { ptr, i32 } %3027, 0
  store ptr %3028, ptr %41, align 8
  %3029 = extractvalue { ptr, i32 } %3027, 1
  store i32 %3029, ptr %42, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %297) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %296) #10
  br label %3062

3030:                                             ; preds = %3022, %3014
  call void @llvm.lifetime.end.p0(i64 8, ptr %298) #10
  br label %3031

3031:                                             ; preds = %3030, %3009
  call void @llvm.lifetime.end.p0(i64 8, ptr %297) #10
  br label %3032

3032:                                             ; preds = %3031, %2994, %2991
  %3033 = load i64, ptr %225, align 8, !tbaa !9
  %3034 = load i64, ptr %172, align 8, !tbaa !9
  %3035 = add nsw i64 %3034, %3033
  store i64 %3035, ptr %172, align 8, !tbaa !9
  %3036 = load i64, ptr %296, align 8, !tbaa !9
  %3037 = icmp sgt i64 %3036, 1
  br i1 %3037, label %3038, label %3045

3038:                                             ; preds = %3032
  %3039 = load i64, ptr %226, align 8, !tbaa !9
  %3040 = load i64, ptr %170, align 8, !tbaa !9
  %3041 = add nsw i64 %3040, %3039
  store i64 %3041, ptr %170, align 8, !tbaa !9
  %3042 = load i64, ptr %230, align 8, !tbaa !9
  %3043 = load i64, ptr %171, align 8, !tbaa !9
  %3044 = add nsw i64 %3043, %3042
  store i64 %3044, ptr %171, align 8, !tbaa !9
  br label %3052

3045:                                             ; preds = %3032
  %3046 = load i64, ptr %224, align 8, !tbaa !9
  %3047 = load i64, ptr %170, align 8, !tbaa !9
  %3048 = add nsw i64 %3047, %3046
  store i64 %3048, ptr %170, align 8, !tbaa !9
  %3049 = load i64, ptr %228, align 8, !tbaa !9
  %3050 = load i64, ptr %171, align 8, !tbaa !9
  %3051 = add nsw i64 %3050, %3049
  store i64 %3051, ptr %171, align 8, !tbaa !9
  br label %3052

3052:                                             ; preds = %3045, %3038
  call void @llvm.lifetime.end.p0(i64 8, ptr %296) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %267) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %266) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %265) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %264) #10
  store i32 0, ptr %33, align 4
  br label %3053

3053:                                             ; preds = %3052, %2639
  call void @llvm.lifetime.end.p0(i64 8, ptr %231) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %230) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %229) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %228) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %227) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %226) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %225) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %224) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %223) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %222) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %221) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %220) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %219) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %218) #10
  br label %3054

3054:                                             ; preds = %3053, %2052
  call void @llvm.lifetime.end.p0(i64 1, ptr %202) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %201) #10
  %3055 = load i32, ptr %33, align 4
  switch i32 %3055, label %3057 [
    i32 0, label %3056
  ]

3056:                                             ; preds = %3054
  store i32 0, ptr %33, align 4
  br label %3057

3057:                                             ; preds = %3056, %3054
  call void @llvm.lifetime.end.p0(i64 8, ptr %196) #10
  %3058 = load i32, ptr %33, align 4
  switch i32 %3058, label %3390 [
    i32 0, label %3059
    i32 75, label %3060
  ]

3059:                                             ; preds = %3057
  br label %3060

3060:                                             ; preds = %3059, %3057
  %3061 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %194) #10
  br label %1834

3062:                                             ; preds = %3026, %2974
  call void @llvm.lifetime.end.p0(i64 8, ptr %267) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %266) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %265) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %264) #10
  br label %3063

3063:                                             ; preds = %3062, %2640, %2628, %2189, %2173, %2154
  call void @llvm.lifetime.end.p0(i64 8, ptr %231) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %230) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %229) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %228) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %227) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %226) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %225) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %224) #10
  br label %3064

3064:                                             ; preds = %3063, %2150
  call void @llvm.lifetime.end.p0(i64 8, ptr %223) #10
  br label %3065

3065:                                             ; preds = %3064, %2146
  call void @llvm.lifetime.end.p0(i64 8, ptr %222) #10
  br label %3066

3066:                                             ; preds = %3065, %2142
  call void @llvm.lifetime.end.p0(i64 8, ptr %221) #10
  br label %3067

3067:                                             ; preds = %3066, %2138
  call void @llvm.lifetime.end.p0(i64 8, ptr %220) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %219) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %218) #10
  br label %3068

3068:                                             ; preds = %3067, %2053, %2037, %1966
  call void @llvm.lifetime.end.p0(i64 1, ptr %202) #10
  br label %3069

3069:                                             ; preds = %3068, %1953
  call void @llvm.lifetime.end.p0(i64 8, ptr %201) #10
  br label %3070

3070:                                             ; preds = %3069, %1952, %1933
  call void @llvm.lifetime.end.p0(i64 8, ptr %196) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %195) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %194) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %193) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %192) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %191) #10
  call void @_ZNSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %190) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr %190) #10
  call void @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %189) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %189) #10
  br label %3073

3071:                                             ; preds = %1836
  call void @llvm.lifetime.end.p0(i64 8, ptr %192) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %191) #10
  br label %1819, !llvm.loop !198

3072:                                             ; preds = %1819
  call void @_ZNSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %190) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr %190) #10
  call void @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %189) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %189) #10
  call void @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS7_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %188) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %188) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %183) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %182) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %181) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %180) #10
  br label %3075

3073:                                             ; preds = %3070, %1848
  call void @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS7_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %188) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %188) #10
  br label %3074

3074:                                             ; preds = %3073, %1847
  call void @llvm.lifetime.end.p0(i64 8, ptr %183) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %182) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %181) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %180) #10
  br label %3378

3075:                                             ; preds = %3072, %1767
  %3076 = load i8, ptr %106, align 1, !tbaa !11, !range !55, !noundef !56
  %3077 = trunc i8 %3076 to i1
  br i1 %3077, label %3078, label %3184

3078:                                             ; preds = %3075
  %3079 = load i64, ptr %170, align 8, !tbaa !9
  %3080 = icmp sge i64 %3079, 0
  call void @llvm.lifetime.start.p0(i64 1, ptr %299) #10
  store i1 false, ptr %301, align 1
  store i1 false, ptr %302, align 1
  br i1 %3080, label %3081, label %3082

3081:                                             ; preds = %3078
  br label %3092

3082:                                             ; preds = %3078
  call void @llvm.lifetime.start.p0(i64 384, ptr %300) #10
  store i1 true, ptr %301, align 1
  call void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %300, ptr noundef @.str.3, i32 noundef 875, ptr noundef @.str.16, i32 noundef 0)
  store i1 true, ptr %302, align 1
  %3083 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %300)
          to label %3084 unwind label %3161

3084:                                             ; preds = %3082
  %3085 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA24_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %3083, ptr noundef nonnull align 1 dereferenceable(24) @.str.17)
          to label %3086 unwind label %3161

3086:                                             ; preds = %3084
  %3087 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIlEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %3085, ptr noundef nonnull align 8 dereferenceable(8) %170)
          to label %3088 unwind label %3161

3088:                                             ; preds = %3086
  %3089 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA2_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %3087, ptr noundef nonnull align 1 dereferenceable(2) @.str.9)
          to label %3090 unwind label %3161

3090:                                             ; preds = %3088
  invoke void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %299, ptr noundef nonnull align 8 dereferenceable(380) %3089)
          to label %3091 unwind label %3161

3091:                                             ; preds = %3090
  br label %3092

3092:                                             ; preds = %3091, %3081
  %3093 = load i1, ptr %302, align 1
  br i1 %3093, label %3094, label %3095

3094:                                             ; preds = %3092
  call void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %300)
  br label %3095

3095:                                             ; preds = %3094, %3092
  %3096 = load i1, ptr %301, align 1
  br i1 %3096, label %3097, label %3098

3097:                                             ; preds = %3095
  call void @llvm.lifetime.end.p0(i64 384, ptr %300) #10
  br label %3098

3098:                                             ; preds = %3097, %3095
  call void @llvm.lifetime.end.p0(i64 1, ptr %299) #10
  %3099 = load i64, ptr %172, align 8, !tbaa !9
  %3100 = sitofp i64 %3099 to double
  %3101 = load ptr, ptr %99, align 8, !tbaa !5
  %3102 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %3101, i32 0, i32 20
  store double %3100, ptr %3102, align 8, !tbaa !199
  %3103 = load i64, ptr %170, align 8, !tbaa !9
  %3104 = sitofp i64 %3103 to double
  %3105 = load ptr, ptr %99, align 8, !tbaa !5
  %3106 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %3105, i32 0, i32 18
  store double %3104, ptr %3106, align 8, !tbaa !200
  %3107 = load i64, ptr %171, align 8, !tbaa !9
  %3108 = sitofp i64 %3107 to double
  %3109 = load ptr, ptr %99, align 8, !tbaa !5
  %3110 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %3109, i32 0, i32 19
  store double %3108, ptr %3110, align 8, !tbaa !201
  %3111 = load i8, ptr %107, align 1, !tbaa !11, !range !55, !noundef !56
  %3112 = trunc i8 %3111 to i1
  br i1 %3112, label %3183, label %3113

3113:                                             ; preds = %3098
  %3114 = load i64, ptr %170, align 8, !tbaa !9
  %3115 = icmp sge i64 %3114, 0
  call void @llvm.lifetime.start.p0(i64 1, ptr %303) #10
  store i1 false, ptr %305, align 1
  store i1 false, ptr %306, align 1
  br i1 %3115, label %3116, label %3117

3116:                                             ; preds = %3113
  br label %3129

3117:                                             ; preds = %3113
  call void @llvm.lifetime.start.p0(i64 384, ptr %304) #10
  store i1 true, ptr %305, align 1
  call void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %304, ptr noundef @.str.3, i32 noundef 883, ptr noundef @.str.16, i32 noundef 0)
  store i1 true, ptr %306, align 1
  %3118 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %304)
          to label %3119 unwind label %3172

3119:                                             ; preds = %3117
  %3120 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA31_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %3118, ptr noundef nonnull align 1 dereferenceable(31) @.str.18)
          to label %3121 unwind label %3172

3121:                                             ; preds = %3119
  %3122 = load ptr, ptr %99, align 8, !tbaa !5
  %3123 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %3122, i32 0, i32 12
  %3124 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIdEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %3120, ptr noundef nonnull align 8 dereferenceable(8) %3123)
          to label %3125 unwind label %3172

3125:                                             ; preds = %3121
  %3126 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA2_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %3124, ptr noundef nonnull align 1 dereferenceable(2) @.str.9)
          to label %3127 unwind label %3172

3127:                                             ; preds = %3125
  invoke void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %303, ptr noundef nonnull align 8 dereferenceable(380) %3126)
          to label %3128 unwind label %3172

3128:                                             ; preds = %3127
  br label %3129

3129:                                             ; preds = %3128, %3116
  %3130 = load i1, ptr %306, align 1
  br i1 %3130, label %3131, label %3132

3131:                                             ; preds = %3129
  call void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %304)
  br label %3132

3132:                                             ; preds = %3131, %3129
  %3133 = load i1, ptr %305, align 1
  br i1 %3133, label %3134, label %3135

3134:                                             ; preds = %3132
  call void @llvm.lifetime.end.p0(i64 384, ptr %304) #10
  br label %3135

3135:                                             ; preds = %3134, %3132
  call void @llvm.lifetime.end.p0(i64 1, ptr %303) #10
  %3136 = load ptr, ptr %99, align 8, !tbaa !5
  %3137 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %3136, i32 0, i32 12
  %3138 = load double, ptr %3137, align 8, !tbaa !134
  %3139 = load ptr, ptr %99, align 8, !tbaa !5
  %3140 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %3139, i32 0, i32 18
  %3141 = load double, ptr %3140, align 8, !tbaa !200
  %3142 = fadd double %3141, %3138
  store double %3142, ptr %3140, align 8, !tbaa !200
  %3143 = load ptr, ptr %99, align 8, !tbaa !5
  %3144 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %3143, i32 0, i32 12
  %3145 = load double, ptr %3144, align 8, !tbaa !134
  %3146 = load ptr, ptr %99, align 8, !tbaa !5
  %3147 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %3146, i32 0, i32 15
  %3148 = load double, ptr %3147, align 8, !tbaa !178
  %3149 = fdiv double %3145, %3148
  %3150 = load ptr, ptr %99, align 8, !tbaa !5
  %3151 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %3150, i32 0, i32 19
  %3152 = load double, ptr %3151, align 8, !tbaa !201
  %3153 = fadd double %3152, %3149
  store double %3153, ptr %3151, align 8, !tbaa !201
  %3154 = load ptr, ptr %99, align 8, !tbaa !5
  %3155 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %3154, i32 0, i32 12
  %3156 = load double, ptr %3155, align 8, !tbaa !134
  %3157 = load ptr, ptr %99, align 8, !tbaa !5
  %3158 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %3157, i32 0, i32 20
  %3159 = load double, ptr %3158, align 8, !tbaa !199
  %3160 = fadd double %3159, %3156
  store double %3160, ptr %3158, align 8, !tbaa !199
  br label %3183

3161:                                             ; preds = %3090, %3088, %3086, %3084, %3082
  %3162 = landingpad { ptr, i32 }
          cleanup
  %3163 = extractvalue { ptr, i32 } %3162, 0
  store ptr %3163, ptr %41, align 8
  %3164 = extractvalue { ptr, i32 } %3162, 1
  store i32 %3164, ptr %42, align 4
  %3165 = load i1, ptr %302, align 1
  br i1 %3165, label %3166, label %3168

3166:                                             ; preds = %3161
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %300)
          to label %3167 unwind label %3387

3167:                                             ; preds = %3166
  br label %3168

3168:                                             ; preds = %3167, %3161
  %3169 = load i1, ptr %301, align 1
  br i1 %3169, label %3170, label %3171

3170:                                             ; preds = %3168
  call void @llvm.lifetime.end.p0(i64 384, ptr %300) #10
  br label %3171

3171:                                             ; preds = %3170, %3168
  call void @llvm.lifetime.end.p0(i64 1, ptr %299) #10
  br label %3378

3172:                                             ; preds = %3127, %3125, %3121, %3119, %3117
  %3173 = landingpad { ptr, i32 }
          cleanup
  %3174 = extractvalue { ptr, i32 } %3173, 0
  store ptr %3174, ptr %41, align 8
  %3175 = extractvalue { ptr, i32 } %3173, 1
  store i32 %3175, ptr %42, align 4
  %3176 = load i1, ptr %306, align 1
  br i1 %3176, label %3177, label %3179

3177:                                             ; preds = %3172
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %304)
          to label %3178 unwind label %3387

3178:                                             ; preds = %3177
  br label %3179

3179:                                             ; preds = %3178, %3172
  %3180 = load i1, ptr %305, align 1
  br i1 %3180, label %3181, label %3182

3181:                                             ; preds = %3179
  call void @llvm.lifetime.end.p0(i64 384, ptr %304) #10
  br label %3182

3182:                                             ; preds = %3181, %3179
  call void @llvm.lifetime.end.p0(i64 1, ptr %303) #10
  br label %3378

3183:                                             ; preds = %3135, %3098
  br label %3184

3184:                                             ; preds = %3183, %3075
  %3185 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 9
  %3186 = load i8, ptr %3185, align 8, !tbaa !160, !range !55, !noundef !56
  %3187 = trunc i8 %3186 to i1
  br i1 %3187, label %3188, label %3240

3188:                                             ; preds = %3184
  %3189 = load i64, ptr %29, align 8, !tbaa !9
  %3190 = sitofp i64 %3189 to double
  %3191 = load ptr, ptr %99, align 8, !tbaa !5
  %3192 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %3191, i32 0, i32 1
  %3193 = load double, ptr %3192, align 8, !tbaa !173
  %3194 = fdiv double %3190, %3193
  %3195 = load ptr, ptr %99, align 8, !tbaa !5
  %3196 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %3195, i32 0, i32 3
  store double %3194, ptr %3196, align 8, !tbaa !202
  %3197 = load double, ptr %173, align 8, !tbaa !158
  %3198 = load double, ptr %176, align 8, !tbaa !158
  %3199 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %3198, double %3197)
  %3200 = load double, ptr %177, align 8, !tbaa !158
  %3201 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %3200, double %3199)
  %3202 = load double, ptr %178, align 8, !tbaa !158
  %3203 = call double @llvm.fmuladd.f64(double 4.000000e+00, double %3202, double %3201)
  %3204 = load ptr, ptr %99, align 8, !tbaa !5
  %3205 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %3204, i32 0, i32 27
  store double %3203, ptr %3205, align 8, !tbaa !203
  %3206 = load double, ptr %174, align 8, !tbaa !158
  %3207 = load ptr, ptr %99, align 8, !tbaa !5
  %3208 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %3207, i32 0, i32 22
  %3209 = load double, ptr %3208, align 8, !tbaa !161
  %3210 = load double, ptr %175, align 8, !tbaa !158
  %3211 = call double @llvm.fmuladd.f64(double %3209, double %3210, double %3206)
  %3212 = load ptr, ptr %99, align 8, !tbaa !5
  %3213 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %3212, i32 0, i32 26
  store double %3211, ptr %3213, align 8, !tbaa !204
  %3214 = load double, ptr %179, align 8, !tbaa !158
  %3215 = load ptr, ptr %99, align 8, !tbaa !5
  %3216 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %3215, i32 0, i32 28
  store double %3214, ptr %3216, align 8, !tbaa !205
  %3217 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 8
  %3218 = load ptr, ptr %3217, align 8, !tbaa !15
  %3219 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %3218, i32 0, i32 1
  %3220 = load i32, ptr %3219, align 8, !tbaa !144
  %3221 = icmp sgt i32 %3220, 0
  br i1 %3221, label %3222, label %3231

3222:                                             ; preds = %3188
  %3223 = load ptr, ptr %99, align 8, !tbaa !5
  %3224 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %3223, i32 0, i32 27
  %3225 = load double, ptr %3224, align 8, !tbaa !203
  %3226 = fadd double %3225, 1.000000e+00
  store double %3226, ptr %3224, align 8, !tbaa !203
  %3227 = load ptr, ptr %99, align 8, !tbaa !5
  %3228 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %3227, i32 0, i32 28
  %3229 = load double, ptr %3228, align 8, !tbaa !205
  %3230 = fadd double %3229, 1.000000e+00
  store double %3230, ptr %3228, align 8, !tbaa !205
  br label %3231

3231:                                             ; preds = %3222, %3188
  %3232 = load i64, ptr %170, align 8, !tbaa !9
  %3233 = sitofp i64 %3232 to double
  %3234 = load ptr, ptr %99, align 8, !tbaa !5
  %3235 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %3234, i32 0, i32 31
  store double %3233, ptr %3235, align 8, !tbaa !206
  %3236 = load i64, ptr %171, align 8, !tbaa !9
  %3237 = sitofp i64 %3236 to double
  %3238 = load ptr, ptr %99, align 8, !tbaa !5
  %3239 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %3238, i32 0, i32 32
  store double %3237, ptr %3239, align 8, !tbaa !207
  br label %3240

3240:                                             ; preds = %3231, %3184
  call void @llvm.lifetime.start.p0(i64 16, ptr %307) #10
  %3241 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 4
  %3242 = call { ptr, ptr } @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterE5beginEv(ptr noundef nonnull align 8 dereferenceable(32) %3241)
  %3243 = getelementptr inbounds { ptr, ptr }, ptr %307, i32 0, i32 0
  %3244 = extractvalue { ptr, ptr } %3242, 0
  store ptr %3244, ptr %3243, align 8
  %3245 = getelementptr inbounds { ptr, ptr }, ptr %307, i32 0, i32 1
  %3246 = extractvalue { ptr, ptr } %3242, 1
  store ptr %3246, ptr %3245, align 8
  br label %3247

3247:                                             ; preds = %3373, %3240
  call void @llvm.lifetime.start.p0(i64 16, ptr %308) #10
  %3248 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 4
  %3249 = call { ptr, ptr } @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterE3endEv(ptr noundef nonnull align 8 dereferenceable(32) %3248)
  %3250 = getelementptr inbounds { ptr, ptr }, ptr %308, i32 0, i32 0
  %3251 = extractvalue { ptr, ptr } %3249, 0
  store ptr %3251, ptr %3250, align 8
  %3252 = getelementptr inbounds { ptr, ptr }, ptr %308, i32 0, i32 1
  %3253 = extractvalue { ptr, ptr } %3249, 1
  store ptr %3253, ptr %3252, align 8
  %3254 = call noundef zeroext i1 @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterE14const_iteratorneERKS7_(ptr noundef nonnull align 8 dereferenceable(16) %307, ptr noundef nonnull align 8 dereferenceable(16) %308)
  call void @llvm.lifetime.end.p0(i64 16, ptr %308) #10
  br i1 %3254, label %3256, label %3255

3255:                                             ; preds = %3247
  store i32 99, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %307) #10
  br label %3374

3256:                                             ; preds = %3247
  call void @llvm.lifetime.start.p0(i64 8, ptr %309) #10
  %3257 = call noundef ptr @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterE14const_iterator3keyEv(ptr noundef nonnull align 8 dereferenceable(16) %307)
  store ptr %3257, ptr %309, align 8, !tbaa !5
  %3258 = load ptr, ptr %309, align 8, !tbaa !5
  %3259 = icmp ne ptr %3258, null
  call void @llvm.lifetime.start.p0(i64 1, ptr %310) #10
  store i1 false, ptr %312, align 1
  store i1 false, ptr %313, align 1
  br i1 %3259, label %3260, label %3261

3260:                                             ; preds = %3256
  br label %3265

3261:                                             ; preds = %3256
  call void @llvm.lifetime.start.p0(i64 384, ptr %311) #10
  store i1 true, ptr %312, align 1
  call void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %311, ptr noundef @.str.3, i32 noundef 914, ptr noundef @.str.19, i32 noundef 0)
  store i1 true, ptr %313, align 1
  %3262 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %311)
          to label %3263 unwind label %3329

3263:                                             ; preds = %3261
  invoke void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %310, ptr noundef nonnull align 8 dereferenceable(380) %3262)
          to label %3264 unwind label %3329

3264:                                             ; preds = %3263
  br label %3265

3265:                                             ; preds = %3264, %3260
  %3266 = load i1, ptr %313, align 1
  br i1 %3266, label %3267, label %3268

3267:                                             ; preds = %3265
  call void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %311)
  br label %3268

3268:                                             ; preds = %3267, %3265
  %3269 = load i1, ptr %312, align 1
  br i1 %3269, label %3270, label %3271

3270:                                             ; preds = %3268
  call void @llvm.lifetime.end.p0(i64 384, ptr %311) #10
  br label %3271

3271:                                             ; preds = %3270, %3268
  call void @llvm.lifetime.end.p0(i64 1, ptr %310) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %314) #10
  %3272 = load ptr, ptr %22, align 8, !tbaa !5
  %3273 = load ptr, ptr %309, align 8, !tbaa !5
  %3274 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %3273, i32 0, i32 7
  %3275 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3274, i64 noundef 0) #10
  %3276 = call noundef nonnull align 8 dereferenceable(312) ptr @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE13get_or_createEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %3272, ptr noundef %3275)
  store ptr %3276, ptr %314, align 8, !tbaa !5
  %3277 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterE14const_iterator5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %307)
  %3278 = load i64, ptr %3277, align 8, !tbaa !9
  %3279 = load i64, ptr %29, align 8, !tbaa !9
  %3280 = mul nsw i64 %3278, %3279
  %3281 = sitofp i64 %3280 to double
  %3282 = load ptr, ptr %314, align 8, !tbaa !5
  %3283 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %3282, i32 0, i32 17
  %3284 = load double, ptr %3283, align 8, !tbaa !208
  %3285 = fadd double %3284, %3281
  store double %3285, ptr %3283, align 8, !tbaa !208
  %3286 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterE14const_iterator5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %307)
  %3287 = load i64, ptr %3286, align 8, !tbaa !9
  %3288 = sitofp i64 %3287 to double
  %3289 = load ptr, ptr %99, align 8, !tbaa !5
  %3290 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %3289, i32 0, i32 24
  %3291 = load double, ptr %3290, align 8, !tbaa !98
  %3292 = load ptr, ptr %314, align 8, !tbaa !5
  %3293 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %3292, i32 0, i32 24
  %3294 = load double, ptr %3293, align 8, !tbaa !98
  %3295 = call double @llvm.fmuladd.f64(double %3288, double %3291, double %3294)
  store double %3295, ptr %3293, align 8, !tbaa !98
  %3296 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterE14const_iterator5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %307)
  %3297 = load i64, ptr %3296, align 8, !tbaa !9
  %3298 = sitofp i64 %3297 to double
  %3299 = load ptr, ptr %99, align 8, !tbaa !5
  %3300 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %3299, i32 0, i32 25
  %3301 = load double, ptr %3300, align 8, !tbaa !99
  %3302 = load ptr, ptr %314, align 8, !tbaa !5
  %3303 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %3302, i32 0, i32 25
  %3304 = load double, ptr %3303, align 8, !tbaa !99
  %3305 = call double @llvm.fmuladd.f64(double %3298, double %3301, double %3304)
  store double %3305, ptr %3303, align 8, !tbaa !99
  %3306 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 8
  %3307 = load ptr, ptr %3306, align 8, !tbaa !15
  %3308 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %3307, i32 0, i32 4
  %3309 = load i32, ptr %3308, align 4, !tbaa !103
  %3310 = sitofp i32 %3309 to double
  %3311 = load ptr, ptr %314, align 8, !tbaa !5
  %3312 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %3311, i32 0, i32 23
  store double %3310, ptr %3312, align 8, !tbaa !176
  %3313 = load ptr, ptr %314, align 8, !tbaa !5
  %3314 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %3313, i32 0, i32 22
  %3315 = load double, ptr %3314, align 8, !tbaa !161
  %3316 = fcmp ogt double %3315, 0.000000e+00
  br i1 %3316, label %3317, label %3340

3317:                                             ; preds = %3271
  %3318 = load ptr, ptr %314, align 8, !tbaa !5
  %3319 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %3318, i32 0, i32 22
  call void @llvm.lifetime.start.p0(i64 8, ptr %315) #10
  %3320 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %316, i32 0, i32 8
  %3321 = load ptr, ptr %3320, align 8, !tbaa !15
  %3322 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %3321, i32 0, i32 4
  %3323 = load i32, ptr %3322, align 4, !tbaa !103
  %3324 = sitofp i32 %3323 to double
  store double %3324, ptr %315, align 8, !tbaa !158
  %3325 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %3319, ptr noundef nonnull align 8 dereferenceable(8) %315)
  %3326 = load double, ptr %3325, align 8, !tbaa !158
  %3327 = load ptr, ptr %314, align 8, !tbaa !5
  %3328 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %3327, i32 0, i32 22
  store double %3326, ptr %3328, align 8, !tbaa !161
  call void @llvm.lifetime.end.p0(i64 8, ptr %315) #10
  br label %3346

3329:                                             ; preds = %3263, %3261
  %3330 = landingpad { ptr, i32 }
          cleanup
  %3331 = extractvalue { ptr, i32 } %3330, 0
  store ptr %3331, ptr %41, align 8
  %3332 = extractvalue { ptr, i32 } %3330, 1
  store i32 %3332, ptr %42, align 4
  %3333 = load i1, ptr %313, align 1
  br i1 %3333, label %3334, label %3336

3334:                                             ; preds = %3329
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %311)
          to label %3335 unwind label %3387

3335:                                             ; preds = %3334
  br label %3336

3336:                                             ; preds = %3335, %3329
  %3337 = load i1, ptr %312, align 1
  br i1 %3337, label %3338, label %3339

3338:                                             ; preds = %3336
  call void @llvm.lifetime.end.p0(i64 384, ptr %311) #10
  br label %3339

3339:                                             ; preds = %3338, %3336
  call void @llvm.lifetime.end.p0(i64 1, ptr %310) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %309) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %307) #10
  br label %3378

3340:                                             ; preds = %3271
  %3341 = load ptr, ptr %99, align 8, !tbaa !5
  %3342 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %3341, i32 0, i32 22
  %3343 = load double, ptr %3342, align 8, !tbaa !161
  %3344 = load ptr, ptr %314, align 8, !tbaa !5
  %3345 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %3344, i32 0, i32 22
  store double %3343, ptr %3345, align 8, !tbaa !161
  br label %3346

3346:                                             ; preds = %3340, %3317
  %3347 = load ptr, ptr %314, align 8, !tbaa !5
  %3348 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %3347, i32 0, i32 7
  %3349 = load double, ptr %3348, align 8, !tbaa !163
  %3350 = fcmp ogt double %3349, 0.000000e+00
  br i1 %3350, label %3351, label %3360

3351:                                             ; preds = %3346
  %3352 = load ptr, ptr %314, align 8, !tbaa !5
  %3353 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %3352, i32 0, i32 7
  %3354 = load ptr, ptr %99, align 8, !tbaa !5
  %3355 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %3354, i32 0, i32 7
  %3356 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %3353, ptr noundef nonnull align 8 dereferenceable(8) %3355)
  %3357 = load double, ptr %3356, align 8, !tbaa !158
  %3358 = load ptr, ptr %314, align 8, !tbaa !5
  %3359 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %3358, i32 0, i32 7
  store double %3357, ptr %3359, align 8, !tbaa !163
  br label %3366

3360:                                             ; preds = %3346
  %3361 = load ptr, ptr %99, align 8, !tbaa !5
  %3362 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %3361, i32 0, i32 7
  %3363 = load double, ptr %3362, align 8, !tbaa !163
  %3364 = load ptr, ptr %314, align 8, !tbaa !5
  %3365 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %3364, i32 0, i32 7
  store double %3363, ptr %3365, align 8, !tbaa !163
  br label %3366

3366:                                             ; preds = %3360, %3351
  %3367 = load ptr, ptr %314, align 8, !tbaa !5
  %3368 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %3367, i32 0, i32 9
  store double 1.000000e+00, ptr %3368, align 8, !tbaa !174
  %3369 = load i64, ptr %17, align 8, !tbaa !9
  %3370 = sitofp i64 %3369 to double
  %3371 = load ptr, ptr %314, align 8, !tbaa !5
  %3372 = getelementptr inbounds %"struct.Halide::Internal::ScheduleFeatures", ptr %3371, i32 0, i32 10
  store double %3370, ptr %3372, align 8, !tbaa !175
  call void @llvm.lifetime.end.p0(i64 8, ptr %314) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %309) #10
  br label %3373

3373:                                             ; preds = %3366
  call void @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterE14const_iteratorppEi(ptr noundef nonnull align 8 dereferenceable(16) %307, i32 noundef 0)
  br label %3247, !llvm.loop !209

3374:                                             ; preds = %3255
  call void @llvm.lifetime.end.p0(i64 8, ptr %179) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %178) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %177) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %176) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %175) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %174) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %173) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %172) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %171) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %170) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %107) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %106) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %105) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #10
  store i32 0, ptr %33, align 4
  br label %3375

3375:                                             ; preds = %3374, %952
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #10
  %3376 = load i32, ptr %33, align 4
  switch i32 %3376, label %3390 [
    i32 0, label %3377
    i32 1, label %3377
  ]

3377:                                             ; preds = %3375, %3375
  ret void

3378:                                             ; preds = %3339, %3182, %3171, %3074
  call void @llvm.lifetime.end.p0(i64 8, ptr %179) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %178) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %177) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %176) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %175) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %174) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %173) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %172) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %171) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %170) #10
  br label %3379

3379:                                             ; preds = %3378, %1455
  call void @llvm.lifetime.end.p0(i64 1, ptr %107) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %106) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %105) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #10
  br label %3380

3380:                                             ; preds = %3379, %1014
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #10
  br label %3381

3381:                                             ; preds = %3380, %479
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #10
  br label %3382

3382:                                             ; preds = %3381
  %3383 = load ptr, ptr %41, align 8
  %3384 = load i32, ptr %42, align 4
  %3385 = insertvalue { ptr, i32 } poison, ptr %3383, 0
  %3386 = insertvalue { ptr, i32 } %3385, i32 %3384, 1
  resume { ptr, i32 } %3386

3387:                                             ; preds = %3334, %3177, %3166, %2941, %2915, %2889, %2183, %2167, %1946, %1842, %1009, %474
  %3388 = landingpad { ptr, i32 }
          catch ptr null
  %3389 = extractvalue { ptr, i32 } %3388, 0
  call void @__clang_call_terminate(ptr %3389) #11
  unreachable

3390:                                             ; preds = %3375, %3057, %2622, %1449
  unreachable
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(120) ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Halide8Internal13Autoscheduler8LoopNest10get_boundsEPKNS1_11FunctionDAG4NodeE(ptr noundef nonnull align 8 dereferenceable(196), ptr noundef) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 8 dereferenceable(380)) #5 align 2

declare void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380), ptr noundef, i32 noundef, ptr noundef, i32 noundef) unnamed_addr #6

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380)) #5 align 2

declare void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380)) unnamed_addr #6

; Function Attrs: noinline noreturn nounwind uwtable
declare hidden void @__clang_call_terminate(ptr noundef) #7

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(312) ptr @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE13get_or_createEPKS5_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents5loopsEii(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef, i32 noundef) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(41) ptr @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS2_8LoopNest5SitesELi4E22PerfectHashMapAsserterE3getEPKS5_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents15region_computedEi(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(312) ptr @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE3getEPKS5_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, ptr } @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE5beginEv(ptr noundef nonnull align 8 dereferenceable(32)) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE8iteratorneERKS9_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { ptr, ptr } @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE3endEv(ptr noundef nonnull align 8 dereferenceable(32)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE8iterator3keyEv(ptr noundef nonnull align 8 dereferenceable(16)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(312) ptr @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE8iterator5valueEv(ptr noundef nonnull align 8 dereferenceable(16)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt6vectorIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt6vectorIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) #2 align 2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #8

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE8iteratorppEi(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(120) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #3

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal8Function4argsB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24)) #6

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS6_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS6_EE9push_backERKS6_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8)) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS6_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS6_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS6_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZNKSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE5countERKS6_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(8)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZNSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE6insertERKS6_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(8)) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(1368) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents15region_requiredEi(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIlERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(1368) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK6Halide8Internal13Autoscheduler8LoopNest31set_working_set_at_task_featureElP14PerfectHashMapINS1_11FunctionDAG4Node5StageENS0_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE(ptr noundef nonnull align 8 dereferenceable(196), i64 noundef, ptr noundef) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler4Span15constant_extentEv(ptr noundef nonnull align 8 dereferenceable(17)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS7_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS7_EE12emplace_backIJRKS7_EEERS7_DpOT_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8)) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS7_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS7_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS7_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS2_8LoopNest5SitesELi4E22PerfectHashMapAsserterE8containsEPKS5_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA19_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380), ptr noundef nonnull align 1 dereferenceable(19)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380), ptr noundef nonnull align 8 dereferenceable(32)) #4 align 2

declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide8Internal8Function4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24)) #6

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA2_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380), ptr noundef nonnull align 1 dereferenceable(2)) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler12LoadJacobianESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler12LoadJacobianESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal13Autoscheduler12LoadJacobianESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal13Autoscheduler12LoadJacobianESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EE12emplace_backIJRKS4_RKS7_EEERS8_DpOT_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal13Autoscheduler12LoadJacobianESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS4_11FunctionDAG4NodeEESt6vectorIS9_SaIS9_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS4_11FunctionDAG4NodeEESt6vectorIS9_SaIS9_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK6Halide8Internal13Autoscheduler12LoadJacobianmlERKS2_(ptr dead_on_unwind noalias writable sret(%"class.Halide::Internal::Autoscheduler::LoadJacobian") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EE12emplace_backIJRS4_RKS7_EEERS8_DpOT_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN6Halide8Internal13Autoscheduler12LoadJacobianD2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EE12emplace_backIJS8_EEERS8_DpOT_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(40)) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS4_11FunctionDAG4NodeEESt6vectorIS9_SaIS9_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EE4swapERSA_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS7_EE12emplace_backIJPS5_EEERS7_DpOT_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8)) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK6Halide8Internal13Autoscheduler12LoadJacobian5countEv(ptr noundef nonnull align 8 dereferenceable(32)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK6Halide8Internal13Autoscheduler12LoadJacobianclEii(ptr dead_on_unwind noalias writable sret(%"struct.Halide::Internal::Autoscheduler::OptionalRational") align 8, ptr noundef nonnull align 8 dereferenceable(32), i32 noundef, i32 noundef) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler16OptionalRationaleqEi(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZNSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE4findERKS6_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(8)) #4 align 2

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #9

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span3minEv(ptr noundef nonnull align 8 dereferenceable(17)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span3maxEv(ptr noundef nonnull align 8 dereferenceable(17)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIlEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380), ptr noundef nonnull align 8 dereferenceable(8)) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS7_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA24_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380), ptr noundef nonnull align 1 dereferenceable(24)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA31_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380), ptr noundef nonnull align 1 dereferenceable(31)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIdEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380), ptr noundef nonnull align 8 dereferenceable(8)) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterE14const_iterator5valueEv(ptr noundef nonnull align 8 dereferenceable(16)) #2 align 2

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #2 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { alwaysinline mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { noinline noreturn nounwind uwtable "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #9 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #10 = { nounwind }
attributes #11 = { noreturn nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"bool", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"int", !7, i64 0}
!15 = !{!16, !6, i64 176}
!16 = !{!"_ZTSN6Halide8Internal13Autoscheduler8LoopNestE", !17, i64 0, !20, i64 8, !24, i64 32, !28, i64 56, !34, i64 88, !42, i64 136, !6, i64 168, !6, i64 176, !12, i64 184, !12, i64 185, !12, i64 186, !14, i64 188, !14, i64 192}
!17 = !{!"_ZTSN6Halide8Internal8RefCountE", !18, i64 0}
!18 = !{!"_ZTSSt6atomicIiE", !19, i64 0}
!19 = !{!"_ZTSSt13__atomic_baseIiE", !14, i64 0}
!20 = !{!"_ZTSSt6vectorIlSaIlEE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseIlSaIlEE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIlSaIlEE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIlSaIlEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!24 = !{!"_ZTSSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!28 = !{!"_ZTS14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterE", !29, i64 0, !14, i64 24, !33, i64 28}
!29 = !{!"_ZTSSt6vectorISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElESaIS8_EE", !30, i64 0}
!30 = !{!"_ZTSSt12_Vector_baseISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElESaIS8_EE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElESaIS8_EE12_Vector_implE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElESaIS8_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!33 = !{!"_ZTSN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterEUt_E", !7, i64 0}
!34 = !{!"_ZTSSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE", !35, i64 0}
!35 = !{!"_ZTSSt8_Rb_treeIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeES6_St9_IdentityIS6_ESt4lessIS6_ESaIS6_EE", !36, i64 0}
!36 = !{!"_ZTSNSt8_Rb_treeIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeES6_St9_IdentityIS6_ESt4lessIS6_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !37, i64 0, !39, i64 8}
!37 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEEE", !38, i64 0}
!38 = !{!"_ZTSSt4lessIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEE"}
!39 = !{!"_ZTSSt15_Rb_tree_header", !40, i64 0, !10, i64 32}
!40 = !{!"_ZTSSt18_Rb_tree_node_base", !41, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!41 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!42 = !{!"_ZTS14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeENS1_12IntrusivePtrIKNS2_13BoundContentsEEELi4E22PerfectHashMapAsserterE", !43, i64 0, !14, i64 24, !47, i64 28}
!43 = !{!"_ZTSSt6vectorISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeENS2_12IntrusivePtrIKNS3_13BoundContentsEEEESaISC_EE", !44, i64 0}
!44 = !{!"_ZTSSt12_Vector_baseISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeENS2_12IntrusivePtrIKNS3_13BoundContentsEEEESaISC_EE", !45, i64 0}
!45 = !{!"_ZTSNSt12_Vector_baseISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeENS2_12IntrusivePtrIKNS3_13BoundContentsEEEESaISC_EE12_Vector_implE", !46, i64 0}
!46 = !{!"_ZTSNSt12_Vector_baseISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeENS2_12IntrusivePtrIKNS3_13BoundContentsEEEESaISC_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!47 = !{!"_ZTSN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeENS1_12IntrusivePtrIKNS2_13BoundContentsEEELi4E22PerfectHashMapAsserterEUt_E", !7, i64 0}
!48 = !{!49, !12, i64 32}
!49 = !{!"_ZTSN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopE", !50, i64 0, !12, i64 32, !12, i64 33, !52, i64 40, !52, i64 48, !14, i64 56, !12, i64 60, !14, i64 64, !12, i64 68, !10, i64 72, !10, i64 80, !50, i64 88}
!50 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !51, i64 0, !10, i64 8, !7, i64 16}
!51 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!52 = !{!"_ZTSN6Halide4ExprE", !53, i64 0}
!53 = !{!"_ZTSN6Halide8Internal8IRHandleE", !54, i64 0}
!54 = !{!"_ZTSN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEEE", !6, i64 0}
!55 = !{i8 0, i8 2}
!56 = !{}
!57 = !{!58, !14, i64 0}
!58 = !{!"_ZTSN6Halide13MachineParamsE", !14, i64 0, !10, i64 8, !59, i64 16}
!59 = !{!"float", !7, i64 0}
!60 = !{!16, !12, i64 186}
!61 = distinct !{!61, !62}
!62 = !{!"llvm.loop.mustprogress"}
!63 = !{!64, !12, i64 185}
!64 = !{!"_ZTSN6Halide8Internal13Autoscheduler11FunctionDAG4NodeE", !6, i64 0, !65, i64 8, !68, i64 32, !69, i64 40, !73, i64 64, !77, i64 88, !12, i64 112, !81, i64 120, !85, i64 144, !14, i64 168, !14, i64 172, !14, i64 176, !14, i64 180, !12, i64 184, !12, i64 185, !12, i64 186, !12, i64 187, !12, i64 188, !89, i64 192}
!65 = !{!"_ZTSN6Halide8Internal8FunctionE", !66, i64 0}
!66 = !{!"_ZTSN6Halide8Internal11FunctionPtrE", !67, i64 0, !6, i64 8, !14, i64 16}
!67 = !{!"_ZTSN6Halide8Internal12IntrusivePtrINS0_13FunctionGroupEEE", !6, i64 0}
!68 = !{!"double", !7, i64 0}
!69 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG16SymbolicIntervalESaIS4_EE", !70, i64 0}
!70 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG16SymbolicIntervalESaIS4_EE", !71, i64 0}
!71 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG16SymbolicIntervalESaIS4_EE12_Vector_implE", !72, i64 0}
!72 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG16SymbolicIntervalESaIS4_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!73 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler4SpanESaIS3_EE", !74, i64 0}
!74 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler4SpanESaIS3_EE", !75, i64 0}
!75 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler4SpanESaIS3_EE12_Vector_implE", !76, i64 0}
!76 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler4SpanESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!77 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoESaIS5_EE", !78, i64 0}
!78 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoESaIS5_EE", !79, i64 0}
!79 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoESaIS5_EE12_Vector_implE", !80, i64 0}
!80 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!81 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE", !82, i64 0}
!82 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE", !83, i64 0}
!83 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE12_Vector_implE", !84, i64 0}
!84 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!85 = !{!"_ZTSSt6vectorIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE", !86, i64 0}
!86 = !{!"_ZTSSt12_Vector_baseIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE", !87, i64 0}
!87 = !{!"_ZTSNSt12_Vector_baseIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE12_Vector_implE", !88, i64 0}
!88 = !{!"_ZTSNSt12_Vector_baseIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!89 = !{!"_ZTSSt10unique_ptrIN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_EE", !90, i64 0}
!90 = !{!"_ZTSSt15__uniq_ptr_dataIN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_ELb1ELb1EE", !91, i64 0}
!91 = !{!"_ZTSSt15__uniq_ptr_implIN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_EE", !92, i64 0}
!92 = !{!"_ZTSSt5tupleIJPN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_EEE", !93, i64 0}
!93 = !{!"_ZTSSt11_Tuple_implILm0EJPN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_EEE", !94, i64 0}
!94 = !{!"_ZTSSt10_Head_baseILm0EPN6Halide8Internal13Autoscheduler13BoundContents6LayoutELb0EE", !6, i64 0}
!95 = !{!96, !68, i64 0}
!96 = !{!"_ZTSN6Halide8Internal16ScheduleFeaturesE", !68, i64 0, !68, i64 8, !68, i64 16, !68, i64 24, !68, i64 32, !68, i64 40, !68, i64 48, !68, i64 56, !68, i64 64, !68, i64 72, !68, i64 80, !68, i64 88, !68, i64 96, !68, i64 104, !68, i64 112, !68, i64 120, !68, i64 128, !68, i64 136, !68, i64 144, !68, i64 152, !68, i64 160, !68, i64 168, !68, i64 176, !68, i64 184, !68, i64 192, !68, i64 200, !68, i64 208, !68, i64 216, !68, i64 224, !68, i64 232, !68, i64 240, !68, i64 248, !68, i64 256, !68, i64 264, !68, i64 272, !68, i64 280, !68, i64 288, !68, i64 296, !68, i64 304}
!97 = !{!96, !68, i64 16}
!98 = !{!96, !68, i64 192}
!99 = !{!96, !68, i64 200}
!100 = !{!101, !6, i64 16}
!101 = !{!"_ZTSN6Halide8Internal13Autoscheduler8LoopNest5SitesE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !12, i64 40}
!102 = !{!16, !14, i64 192}
!103 = !{!104, !14, i64 44}
!104 = !{!"_ZTSN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageE", !6, i64 0, !14, i64 8, !105, i64 16, !12, i64 40, !14, i64 44, !109, i64 48, !110, i64 1200, !50, i64 1264, !14, i64 1296, !14, i64 1300, !85, i64 1304, !117, i64 1328}
!105 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE", !106, i64 0}
!106 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE", !107, i64 0}
!107 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE12_Vector_implE", !108, i64 0}
!108 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!109 = !{!"_ZTSN6Halide8Internal16PipelineFeaturesE", !7, i64 0, !7, i64 28, !7, i64 700, !7, i64 812, !7, i64 924, !7, i64 1036}
!110 = !{!"_ZTSN6Halide5StageE", !65, i64 0, !111, i64 24, !10, i64 32, !113, i64 40}
!111 = !{!"_ZTSN6Halide8Internal10DefinitionE", !112, i64 0}
!112 = !{!"_ZTSN6Halide8Internal12IntrusivePtrINS0_18DefinitionContentsEEE", !6, i64 0}
!113 = !{!"_ZTSSt6vectorIN6Halide3VarESaIS1_EE", !114, i64 0}
!114 = !{!"_ZTSSt12_Vector_baseIN6Halide3VarESaIS1_EE", !115, i64 0}
!115 = !{!"_ZTSNSt12_Vector_baseIN6Halide3VarESaIS1_EE12_Vector_implE", !116, i64 0}
!116 = !{!"_ZTSNSt12_Vector_baseIN6Halide3VarESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!117 = !{!"_ZTSSt6vectorIbSaIbEE", !118, i64 0}
!118 = !{!"_ZTSSt13_Bvector_baseISaIbEE", !119, i64 0}
!119 = !{!"_ZTSNSt13_Bvector_baseISaIbEE13_Bvector_implE", !120, i64 0}
!120 = !{!"_ZTSNSt13_Bvector_baseISaIbEE18_Bvector_impl_dataE", !121, i64 0, !121, i64 16, !6, i64 32}
!121 = !{!"_ZTSSt13_Bit_iterator", !122, i64 0}
!122 = !{!"_ZTSSt18_Bit_iterator_base", !6, i64 0, !14, i64 8}
!123 = distinct !{!123, !62}
!124 = !{!96, !68, i64 32}
!125 = !{!64, !68, i64 32}
!126 = !{!96, !68, i64 88}
!127 = !{!64, !14, i64 180}
!128 = distinct !{!128, !62}
!129 = !{!16, !14, i64 188}
!130 = !{!96, !68, i64 112}
!131 = !{!96, !68, i64 232}
!132 = !{!96, !68, i64 240}
!133 = distinct !{!133, !62}
!134 = !{!96, !68, i64 96}
!135 = !{!96, !68, i64 296}
!136 = !{!16, !6, i64 168}
!137 = !{!96, !68, i64 288}
!138 = !{!104, !6, i64 0}
!139 = !{!96, !68, i64 104}
!140 = distinct !{!140, !62}
!141 = !{!96, !68, i64 304}
!142 = !{!96, !68, i64 128}
!143 = !{!96, !68, i64 40}
!144 = !{!104, !14, i64 8}
!145 = distinct !{!145, !62}
!146 = !{!64, !12, i64 186}
!147 = !{!148, !6, i64 32}
!148 = !{!"_ZTSN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeE", !149, i64 0, !6, i64 24, !6, i64 32, !14, i64 40, !12, i64 44, !153, i64 48}
!149 = !{!"_ZTSSt6vectorISt4pairIN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoES6_ESaIS7_EE", !150, i64 0}
!150 = !{!"_ZTSSt12_Vector_baseISt4pairIN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoES6_ESaIS7_EE", !151, i64 0}
!151 = !{!"_ZTSNSt12_Vector_baseISt4pairIN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoES6_ESaIS7_EE12_Vector_implE", !152, i64 0}
!152 = !{!"_ZTSNSt12_Vector_baseISt4pairIN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoES6_ESaIS7_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!153 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler12LoadJacobianESaIS3_EE", !154, i64 0}
!154 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler12LoadJacobianESaIS3_EE", !155, i64 0}
!155 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler12LoadJacobianESaIS3_EE12_Vector_implE", !156, i64 0}
!156 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler12LoadJacobianESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!157 = !{!148, !14, i64 40}
!158 = !{!68, !68, i64 0}
!159 = distinct !{!159, !62}
!160 = !{!16, !12, i64 184}
!161 = !{!96, !68, i64 176}
!162 = !{!96, !68, i64 48}
!163 = !{!96, !68, i64 56}
!164 = !{!49, !12, i64 33}
!165 = distinct !{!165, !62}
!166 = distinct !{!166, !62}
!167 = !{!96, !68, i64 264}
!168 = !{!96, !68, i64 272}
!169 = distinct !{!169, !62}
!170 = !{!148, !6, i64 24}
!171 = !{!101, !6, i64 8}
!172 = distinct !{!172, !62}
!173 = !{!96, !68, i64 8}
!174 = !{!96, !68, i64 72}
!175 = !{!96, !68, i64 80}
!176 = !{!96, !68, i64 184}
!177 = distinct !{!177, !62}
!178 = !{!96, !68, i64 120}
!179 = !{!96, !68, i64 168}
!180 = distinct !{!180, !62}
!181 = !{!96, !68, i64 64}
!182 = !{!101, !6, i64 32}
!183 = !{!184, !6, i64 32}
!184 = !{!"_ZTSSt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS2_11FunctionDAG4NodeEE", !185, i64 0, !6, i64 32}
!185 = !{!"_ZTSN6Halide8Internal13Autoscheduler12LoadJacobianE", !186, i64 0, !10, i64 24}
!186 = !{!"_ZTSSt6vectorIS_IN6Halide8Internal13Autoscheduler16OptionalRationalESaIS3_EESaIS5_EE", !187, i64 0}
!187 = !{!"_ZTSSt12_Vector_baseISt6vectorIN6Halide8Internal13Autoscheduler16OptionalRationalESaIS4_EESaIS6_EE", !188, i64 0}
!188 = !{!"_ZTSNSt12_Vector_baseISt6vectorIN6Halide8Internal13Autoscheduler16OptionalRationalESaIS4_EESaIS6_EE12_Vector_implE", !189, i64 0}
!189 = !{!"_ZTSNSt12_Vector_baseISt6vectorIN6Halide8Internal13Autoscheduler16OptionalRationalESaIS4_EESaIS6_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!190 = !{!101, !12, i64 40}
!191 = !{!101, !6, i64 0}
!192 = distinct !{!192, !62}
!193 = distinct !{!193, !62}
!194 = distinct !{!194, !62}
!195 = distinct !{!195, !62}
!196 = !{i64 0, i64 8, !9, i64 8, i64 8, !9, i64 16, i64 1, !11}
!197 = distinct !{!197, !62}
!198 = distinct !{!198, !62}
!199 = !{!96, !68, i64 160}
!200 = !{!96, !68, i64 144}
!201 = !{!96, !68, i64 152}
!202 = !{!96, !68, i64 24}
!203 = !{!96, !68, i64 216}
!204 = !{!96, !68, i64 208}
!205 = !{!96, !68, i64 224}
!206 = !{!96, !68, i64 248}
!207 = !{!96, !68, i64 256}
!208 = !{!96, !68, i64 136}
!209 = distinct !{!209, !62}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"struct.std::_Rb_tree_const_iterator" = type { ptr }
%"class.Halide::Internal::Voidifier" = type { i8 }
%"struct.Halide::Internal::ErrorReport" = type <{ %"class.std::__cxx11::basic_ostringstream", i32, [4 x i8] }>
%"class.std::__cxx11::basic_ostringstream" = type { %"class.std::basic_ostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.__gnu_cxx::__normal_iterator.54" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.78" = type { ptr }
%"struct.PerfectHashMap<Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage, Halide::Internal::ScheduleFeatures>::iterator" = type { ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.97" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.108" = type { ptr }
%"class.std::vector.114" = type { %"struct.std::_Vector_base.115" }
%"struct.std::_Vector_base.115" = type { %"struct.std::_Vector_base<const Halide::Internal::Autoscheduler::FunctionDAG::Edge *, std::allocator<const Halide::Internal::Autoscheduler::FunctionDAG::Edge *>>::_Vector_impl" }
%"struct.std::_Vector_base<const Halide::Internal::Autoscheduler::FunctionDAG::Edge *, std::allocator<const Halide::Internal::Autoscheduler::FunctionDAG::Edge *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const Halide::Internal::Autoscheduler::FunctionDAG::Edge *, std::allocator<const Halide::Internal::Autoscheduler::FunctionDAG::Edge *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const Halide::Internal::Autoscheduler::FunctionDAG::Edge *, std::allocator<const Halide::Internal::Autoscheduler::FunctionDAG::Edge *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::set" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<const Halide::Internal::Autoscheduler::FunctionDAG::Node *, const Halide::Internal::Autoscheduler::FunctionDAG::Node *, std::_Identity<const Halide::Internal::Autoscheduler::FunctionDAG::Node *>, std::less<const Halide::Internal::Autoscheduler::FunctionDAG::Node *>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<const Halide::Internal::Autoscheduler::FunctionDAG::Node *, const Halide::Internal::Autoscheduler::FunctionDAG::Node *, std::_Identity<const Halide::Internal::Autoscheduler::FunctionDAG::Node *>, std::less<const Halide::Internal::Autoscheduler::FunctionDAG::Node *>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.119" = type { ptr }
%"class.std::vector.120" = type { %"struct.std::_Vector_base.121" }
%"struct.std::_Vector_base.121" = type { %"struct.std::_Vector_base<const Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage *, std::allocator<const Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage *>>::_Vector_impl" }
%"struct.std::_Vector_base<const Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage *, std::allocator<const Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage *, std::allocator<const Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage *, std::allocator<const Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.125" = type { %"struct.std::_Vector_base.126" }
%"struct.std::_Vector_base.126" = type { %"struct.std::_Vector_base<std::pair<Halide::Internal::Autoscheduler::LoadJacobian, Halide::Internal::Autoscheduler::FunctionDAG::Node *>, std::allocator<std::pair<Halide::Internal::Autoscheduler::LoadJacobian, Halide::Internal::Autoscheduler::FunctionDAG::Node *>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<Halide::Internal::Autoscheduler::LoadJacobian, Halide::Internal::Autoscheduler::FunctionDAG::Node *>, std::allocator<std::pair<Halide::Internal::Autoscheduler::LoadJacobian, Halide::Internal::Autoscheduler::FunctionDAG::Node *>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<Halide::Internal::Autoscheduler::LoadJacobian, Halide::Internal::Autoscheduler::FunctionDAG::Node *>, std::allocator<std::pair<Halide::Internal::Autoscheduler::LoadJacobian, Halide::Internal::Autoscheduler::FunctionDAG::Node *>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<Halide::Internal::Autoscheduler::LoadJacobian, Halide::Internal::Autoscheduler::FunctionDAG::Node *>, std::allocator<std::pair<Halide::Internal::Autoscheduler::LoadJacobian, Halide::Internal::Autoscheduler::FunctionDAG::Node *>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.130" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.138" = type { ptr }
%"class.Halide::Internal::Autoscheduler::LoadJacobian" = type { %"class.std::vector.131", i64 }
%"class.std::vector.131" = type { %"struct.std::_Vector_base.132" }
%"struct.std::_Vector_base.132" = type { %"struct.std::_Vector_base<std::vector<Halide::Internal::Autoscheduler::OptionalRational>, std::allocator<std::vector<Halide::Internal::Autoscheduler::OptionalRational>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<Halide::Internal::Autoscheduler::OptionalRational>, std::allocator<std::vector<Halide::Internal::Autoscheduler::OptionalRational>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<Halide::Internal::Autoscheduler::OptionalRational>, std::allocator<std::vector<Halide::Internal::Autoscheduler::OptionalRational>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<Halide::Internal::Autoscheduler::OptionalRational>, std::allocator<std::vector<Halide::Internal::Autoscheduler::OptionalRational>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.Halide::Internal::Autoscheduler::OptionalRational" = type { i8, i64, i64 }
%"class.Halide::Internal::Autoscheduler::Span" = type <{ i64, i64, i8, [7 x i8] }>
%"struct.PerfectHashMap<Halide::Internal::Autoscheduler::FunctionDAG::Node, long>::const_iterator" = type { ptr, ptr }

@.str.3 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #0

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIlSaIlEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEES9_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, ptr } @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterE5beginEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterE14const_iteratorneERKS7_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { ptr, ptr } @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterE3endEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterE14const_iterator3keyEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterE14const_iteratorppEi(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler8LoopNest7is_rootEv(ptr noundef nonnull align 8 dereferenceable(196)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(1368) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(1368) ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZNK6Halide8Internal13Autoscheduler8LoopNest16compute_featuresERKNS1_11FunctionDAGERKNS_13MachineParamsERK14PerfectHashMapINS3_4Node5StageENS2_5SitesELi4E22PerfectHashMapAsserterEllPKS2_SI_RSH_PlPS9_ISB_NS0_16ScheduleFeaturesELi4ESD_E(ptr noundef nonnull align 8 dereferenceable(196) %0, ptr noundef nonnull align 8 dereferenceable(48) %1, ptr noundef nonnull align 8 dereferenceable(20) %2, ptr noundef nonnull align 8 dereferenceable(32) %3, i64 noundef %4, i64 noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef nonnull align 8 dereferenceable(196) %8, ptr nocapture noundef %9, ptr noundef %10) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %12 = alloca i64, align 8
  %13 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %14 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %15 = alloca %"class.Halide::Internal::Voidifier", align 1
  %16 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %17 = alloca %"class.__gnu_cxx::__normal_iterator.54", align 8
  %18 = alloca %"class.__gnu_cxx::__normal_iterator.54", align 8
  %19 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %20 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %21 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %22 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %23 = alloca %"class.__gnu_cxx::__normal_iterator.78", align 8
  %24 = alloca %"class.__gnu_cxx::__normal_iterator.78", align 8
  %25 = alloca %"class.__gnu_cxx::__normal_iterator.54", align 8
  %26 = alloca %"class.__gnu_cxx::__normal_iterator.54", align 8
  %27 = alloca %"struct.PerfectHashMap<Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage, Halide::Internal::ScheduleFeatures>::iterator", align 8
  %28 = alloca %"struct.PerfectHashMap<Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage, Halide::Internal::ScheduleFeatures>::iterator", align 8
  %29 = alloca %"class.__gnu_cxx::__normal_iterator.97", align 8
  %30 = alloca %"class.__gnu_cxx::__normal_iterator.97", align 8
  %31 = alloca double, align 8
  %32 = alloca %"class.Halide::Internal::Voidifier", align 1
  %33 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %34 = alloca %"class.__gnu_cxx::__normal_iterator.108", align 8
  %35 = alloca %"class.__gnu_cxx::__normal_iterator.108", align 8
  %36 = alloca %"class.std::vector.114", align 8
  %37 = alloca %"class.std::set", align 8
  %38 = alloca %"class.__gnu_cxx::__normal_iterator.97", align 8
  %39 = alloca %"class.__gnu_cxx::__normal_iterator.97", align 8
  %40 = alloca ptr, align 8
  %41 = alloca i64, align 8
  %42 = alloca i64, align 8
  %43 = alloca %"class.__gnu_cxx::__normal_iterator.119", align 8
  %44 = alloca %"class.__gnu_cxx::__normal_iterator.119", align 8
  %45 = alloca %"class.__gnu_cxx::__normal_iterator.97", align 8
  %46 = alloca %"class.__gnu_cxx::__normal_iterator.97", align 8
  %47 = alloca ptr, align 8
  %48 = alloca %"class.__gnu_cxx::__normal_iterator.54", align 8
  %49 = alloca %"class.__gnu_cxx::__normal_iterator.54", align 8
  %50 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %51 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %52 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %53 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %54 = alloca %"class.__gnu_cxx::__normal_iterator.78", align 8
  %55 = alloca %"class.__gnu_cxx::__normal_iterator.78", align 8
  %56 = alloca %"class.__gnu_cxx::__normal_iterator.54", align 8
  %57 = alloca %"class.__gnu_cxx::__normal_iterator.54", align 8
  %58 = alloca i64, align 8
  %59 = alloca %"class.Halide::Internal::Voidifier", align 1
  %60 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %61 = alloca %"class.std::vector.120", align 8
  %62 = alloca %"class.std::vector.125", align 8
  %63 = alloca %"class.std::set", align 8
  %64 = alloca %"class.__gnu_cxx::__normal_iterator.97", align 8
  %65 = alloca %"class.__gnu_cxx::__normal_iterator.97", align 8
  %66 = alloca %"class.Halide::Internal::Voidifier", align 1
  %67 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %68 = alloca %"class.__gnu_cxx::__normal_iterator.130", align 8
  %69 = alloca %"class.__gnu_cxx::__normal_iterator.130", align 8
  %70 = alloca %"class.std::vector.125", align 8
  %71 = alloca %"class.__gnu_cxx::__normal_iterator.138", align 8
  %72 = alloca %"class.__gnu_cxx::__normal_iterator.138", align 8
  %73 = alloca %"class.__gnu_cxx::__normal_iterator.130", align 8
  %74 = alloca %"class.__gnu_cxx::__normal_iterator.130", align 8
  %75 = alloca %"class.Halide::Internal::Autoscheduler::LoadJacobian", align 8
  %76 = alloca ptr, align 8
  %77 = alloca %"class.Halide::Internal::Voidifier", align 1
  %78 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %79 = alloca %"class.Halide::Internal::Voidifier", align 1
  %80 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %81 = alloca %"class.__gnu_cxx::__normal_iterator.138", align 8
  %82 = alloca %"class.__gnu_cxx::__normal_iterator.138", align 8
  %83 = alloca %"struct.Halide::Internal::Autoscheduler::OptionalRational", align 8
  %84 = alloca %"struct.Halide::Internal::Autoscheduler::OptionalRational", align 8
  %85 = alloca %"struct.Halide::Internal::Autoscheduler::OptionalRational", align 8
  %86 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %87 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %88 = alloca i64, align 8
  %89 = alloca i64, align 8
  %90 = alloca i64, align 8
  %91 = alloca i64, align 8
  %92 = alloca %"class.Halide::Internal::Autoscheduler::Span", align 8
  %93 = alloca %"class.Halide::Internal::Autoscheduler::Span", align 8
  %94 = alloca %"class.Halide::Internal::Autoscheduler::Span", align 8
  %95 = alloca %"class.Halide::Internal::Autoscheduler::Span", align 8
  %96 = alloca %"class.Halide::Internal::Voidifier", align 1
  %97 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %98 = alloca i64, align 8
  %99 = alloca i64, align 8
  %100 = alloca %"class.Halide::Internal::Voidifier", align 1
  %101 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %102 = alloca i64, align 8
  %103 = alloca i64, align 8
  %104 = alloca %"class.Halide::Internal::Voidifier", align 1
  %105 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %106 = alloca i64, align 8
  %107 = alloca i64, align 8
  %108 = alloca i64, align 8
  %109 = alloca i64, align 8
  %110 = alloca i64, align 8
  %111 = alloca i64, align 8
  %112 = alloca %"class.Halide::Internal::Voidifier", align 1
  %113 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %114 = alloca %"class.Halide::Internal::Voidifier", align 1
  %115 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %116 = alloca %"struct.PerfectHashMap<Halide::Internal::Autoscheduler::FunctionDAG::Node, long>::const_iterator", align 8
  %117 = alloca %"struct.PerfectHashMap<Halide::Internal::Autoscheduler::FunctionDAG::Node, long>::const_iterator", align 8
  %118 = alloca %"class.Halide::Internal::Voidifier", align 1
  %119 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %120 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #11
  store i64 0, ptr %12, align 8, !tbaa !5
  %121 = getelementptr inbounds i8, ptr %0, i64 8
  %122 = tail call noundef i64 @_ZNKSt6vectorIlSaIlEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %121) #11
  %123 = trunc i64 %122 to i32
  %124 = icmp sgt i32 %123, 0
  br i1 %124, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %11
  %125 = getelementptr inbounds i8, ptr %0, i64 176
  %126 = getelementptr inbounds i8, ptr %0, i64 186
  %127 = and i64 %122, 2147483647
  br label %134

._crit_edge:                                      ; preds = %164, %11
  %.0623.lcssa = phi i64 [ 1, %11 ], [ %.1, %164 ]
  %.0.lcssa = phi i64 [ 1, %11 ], [ %137, %164 ]
  %128 = mul nsw i64 %.0.lcssa, %4
  %129 = getelementptr inbounds i8, ptr %0, i64 88
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #11
  %130 = tail call ptr @_ZNKSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %129) #11
  store ptr %130, ptr %13, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #11
  %131 = tail call ptr @_ZNKSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %129) #11
  store ptr %131, ptr %14, align 8
  %132 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEES9_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %14) #11
  br i1 %132, label %.lr.ph1795, label %._crit_edge1796

.lr.ph1795:                                       ; preds = %._crit_edge
  %133 = sitofp i64 %128 to double
  br label %167

134:                                              ; preds = %.lr.ph, %164
  %indvars.iv = phi i64 [ %127, %.lr.ph ], [ %indvars.iv.next, %164 ]
  %.01778 = phi i64 [ 1, %.lr.ph ], [ %137, %164 ]
  %.06231777 = phi i64 [ 1, %.lr.ph ], [ %.1, %164 ]
  %.06281776 = phi i1 [ false, %.lr.ph ], [ %.1629, %164 ]
  %indvars.iv.next = add nsw i64 %indvars.iv, -1
  %135 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %121, i64 noundef %indvars.iv.next) #11
  %136 = load i64, ptr %135, align 8, !tbaa !5
  %137 = mul i64 %136, %.01778
  %138 = load ptr, ptr %125, align 8, !tbaa !9
  %139 = getelementptr inbounds i8, ptr %138, i64 16
  %140 = tail call noundef nonnull align 8 dereferenceable(120) ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %139, i64 noundef %indvars.iv.next) #11
  %141 = getelementptr inbounds i8, ptr %140, i64 32
  %142 = load i8, ptr %141, align 8, !tbaa !45, !range !52, !noundef !53
  %143 = trunc nuw i8 %142 to i1
  %.not967 = xor i1 %143, true
  %brmerge968 = select i1 %.not967, i1 true, i1 %.06281776
  br i1 %brmerge968, label %163, label %144

144:                                              ; preds = %134
  %145 = load i32, ptr %2, align 8, !tbaa !54
  %146 = icmp sgt i32 %145, 1
  br i1 %146, label %147, label %164

147:                                              ; preds = %144
  %148 = load i8, ptr %126, align 2, !tbaa !57, !range !52, !noundef !53
  %149 = trunc nuw i8 %148 to i1
  br i1 %149, label %155, label %150

150:                                              ; preds = %147
  %151 = tail call noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler8LoopNest7is_rootEv(ptr noundef nonnull align 8 dereferenceable(196) %6)
  %152 = load i32, ptr %2, align 8
  %153 = sext i32 %152 to i64
  %154 = icmp slt i64 %.06231777, %153
  %or.cond892 = select i1 %151, i1 %154, i1 false
  br i1 %or.cond892, label %._crit_edge2060, label %164

._crit_edge2060:                                  ; preds = %150
  %.pre = load i8, ptr %126, align 2, !tbaa !57, !range !52
  br label %155

155:                                              ; preds = %._crit_edge2060, %147
  %156 = phi i32 [ %152, %._crit_edge2060 ], [ %145, %147 ]
  %157 = phi i8 [ %.pre, %._crit_edge2060 ], [ %148, %147 ]
  %158 = mul i64 %136, %.06231777
  %159 = trunc nuw i8 %157 to i1
  br i1 %159, label %164, label %160

160:                                              ; preds = %155
  %161 = shl nsw i32 %156, 3
  %162 = sext i32 %161 to i64
  %spec.select = tail call i64 @llvm.smin.i64(i64 %158, i64 %162)
  br label %164

163:                                              ; preds = %134
  %.not889 = icmp ne i64 %136, 1
  %spec.select893 = select i1 %.not889, i1 true, i1 %.06281776
  br label %164

164:                                              ; preds = %163, %160, %144, %150, %155
  %.1629 = phi i1 [ false, %155 ], [ false, %150 ], [ false, %144 ], [ false, %160 ], [ %spec.select893, %163 ]
  %.1 = phi i64 [ %158, %155 ], [ %.06231777, %150 ], [ %.06231777, %144 ], [ %spec.select, %160 ], [ %.06231777, %163 ]
  %165 = icmp ugt i64 %indvars.iv, 1
  br i1 %165, label %134, label %._crit_edge, !llvm.loop !58

._crit_edge1796:                                  ; preds = %._crit_edge1793, %._crit_edge
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #11
  %166 = call noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler8LoopNest7is_rootEv(ptr noundef nonnull align 8 dereferenceable(196) %0)
  br i1 %166, label %281, label %449

167:                                              ; preds = %.lr.ph1795, %._crit_edge1793
  %168 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %13) #11
  %169 = load ptr, ptr %168, align 8, !tbaa !60
  %170 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Halide8Internal13Autoscheduler8LoopNest10get_boundsEPKNS1_11FunctionDAG4NodeE(ptr noundef nonnull align 8 dereferenceable(196) %0, ptr noundef %169)
  %171 = getelementptr inbounds i8, ptr %169, i64 120
  %172 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %171) #11
  %.not2039 = icmp eq i64 %172, 0
  br i1 %.not2039, label %._crit_edge1793, label %.lr.ph1792

.lr.ph1792:                                       ; preds = %167
  %173 = getelementptr inbounds i8, ptr %169, i64 185
  %174 = getelementptr inbounds i8, ptr %169, i64 32
  %175 = getelementptr inbounds i8, ptr %169, i64 180
  br label %178

._crit_edge1793:                                  ; preds = %277, %167
  %176 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %13) #11
  %177 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEES9_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %14) #11
  br i1 %177, label %167, label %._crit_edge1796

178:                                              ; preds = %.lr.ph1792, %277
  %.06481790 = phi i64 [ 0, %.lr.ph1792 ], [ %278, %277 ]
  %179 = load i8, ptr %173, align 1, !tbaa !61, !range !52, !noundef !53
  %180 = trunc nuw i8 %179 to i1
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %15) #11
  br i1 %180, label %.critedge, label %.critedge894

.critedge:                                        ; preds = %178
  call void @llvm.lifetime.start.p0(i64 384, ptr nonnull %16) #11
  call void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %16, ptr noundef nonnull @.str.3, i32 noundef 258, ptr noundef nonnull @.str.4, i32 noundef 0)
  %181 = call noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %16)
  call void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %15, ptr noundef nonnull align 8 dereferenceable(380) %181)
  call void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %16)
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %16) #11
  br label %.critedge894

.critedge894:                                     ; preds = %178, %.critedge
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #11
  %182 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %171, i64 noundef %.06481790) #11
  %183 = call noundef nonnull align 8 dereferenceable(312) ptr @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE13get_or_createEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull %182)
  store double %133, ptr %183, align 8, !tbaa !93
  %184 = getelementptr inbounds i8, ptr %183, i64 16
  store double 1.000000e+00, ptr %184, align 8, !tbaa !95
  %185 = getelementptr inbounds i8, ptr %183, i64 192
  store double %133, ptr %185, align 8, !tbaa !96
  %186 = getelementptr inbounds i8, ptr %183, i64 200
  store double %133, ptr %186, align 8, !tbaa !97
  %187 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %171, i64 noundef %.06481790) #11
  %188 = getelementptr inbounds i8, ptr %187, i64 16
  %189 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %188) #11
  %190 = trunc i64 %189 to i32
  %191 = icmp sgt i32 %190, 0
  br i1 %191, label %.lr.ph1783, label %.critedge2038

.lr.ph1783:                                       ; preds = %.critedge894
  %192 = trunc i64 %.06481790 to i32
  br label %193

._crit_edge1784:                                  ; preds = %225
  br i1 %.1724, label %234, label %.critedge2038

193:                                              ; preds = %.lr.ph1783, %225
  %.07231782 = phi i1 [ false, %.lr.ph1783 ], [ %.1724, %225 ]
  %.07251781 = phi i32 [ 0, %.lr.ph1783 ], [ %228, %225 ]
  %194 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %170)
  %195 = call noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents5loopsEii(ptr noundef nonnull align 8 dereferenceable(16) %194, i32 noundef %192, i32 noundef %.07251781)
  %196 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17) %195)
  %197 = sitofp i64 %196 to double
  %198 = load double, ptr %184, align 8, !tbaa !95
  %199 = fmul double %198, %197
  store double %199, ptr %184, align 8, !tbaa !95
  %200 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %171, i64 noundef %.06481790) #11
  %201 = call noundef nonnull align 8 dereferenceable(41) ptr @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS2_8LoopNest5SitesELi4E22PerfectHashMapAsserterE3getEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull %200)
  %202 = getelementptr inbounds i8, ptr %201, i64 16
  %203 = load ptr, ptr %202, align 8, !tbaa !98
  %204 = getelementptr inbounds i8, ptr %203, i64 192
  %205 = load i32, ptr %204, align 8, !tbaa !100
  %206 = icmp eq i32 %.07251781, %205
  br i1 %206, label %207, label %222

207:                                              ; preds = %193
  %208 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %171, i64 noundef %.06481790) #11
  %209 = getelementptr inbounds i8, ptr %208, i64 44
  %210 = load i32, ptr %209, align 4, !tbaa !101
  %211 = sext i32 %210 to i64
  %212 = sdiv i64 %196, %211
  %213 = sitofp i64 %212 to double
  %214 = load double, ptr %185, align 8, !tbaa !96
  %215 = fmul double %214, %213
  store double %215, ptr %185, align 8, !tbaa !96
  %216 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %171, i64 noundef %.06481790) #11
  %217 = getelementptr inbounds i8, ptr %216, i64 44
  %218 = load i32, ptr %217, align 4, !tbaa !101
  %219 = sext i32 %218 to i64
  %220 = srem i64 %196, %219
  %221 = sitofp i64 %220 to double
  br label %225

222:                                              ; preds = %193
  %223 = load double, ptr %185, align 8, !tbaa !96
  %224 = fmul double %223, %197
  store double %224, ptr %185, align 8, !tbaa !96
  br label %225

225:                                              ; preds = %222, %207
  %.sink2091 = phi double [ %197, %222 ], [ %221, %207 ]
  %.1724 = phi i1 [ %.07231782, %222 ], [ true, %207 ]
  %226 = load double, ptr %186, align 8, !tbaa !97
  %227 = fmul double %226, %.sink2091
  store double %227, ptr %186, align 8, !tbaa !97
  %228 = add nuw nsw i32 %.07251781, 1
  %229 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %171, i64 noundef %.06481790) #11
  %230 = getelementptr inbounds i8, ptr %229, i64 16
  %231 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %230) #11
  %232 = trunc i64 %231 to i32
  %233 = icmp slt i32 %228, %232
  br i1 %233, label %193, label %._crit_edge1784, !llvm.loop !121

.critedge2038:                                    ; preds = %.critedge894, %._crit_edge1784
  store double 0.000000e+00, ptr %185, align 8, !tbaa !96
  br label %234

234:                                              ; preds = %.critedge2038, %._crit_edge1784
  %235 = load double, ptr %184, align 8, !tbaa !95
  %236 = load double, ptr %183, align 8, !tbaa !93
  %237 = fmul double %235, %236
  %238 = getelementptr inbounds i8, ptr %183, i64 32
  store double %237, ptr %238, align 8, !tbaa !122
  %239 = load double, ptr %174, align 8, !tbaa !123
  %240 = getelementptr inbounds i8, ptr %183, i64 88
  store double %239, ptr %240, align 8, !tbaa !124
  %241 = load i32, ptr %175, align 4, !tbaa !125
  %242 = icmp sgt i32 %241, 0
  br i1 %242, label %.lr.ph1788, label %._crit_edge1789

._crit_edge1789:                                  ; preds = %.lr.ph1788, %234
  %243 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %171, i64 noundef %.06481790) #11
  %244 = call noundef nonnull align 8 dereferenceable(41) ptr @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS2_8LoopNest5SitesELi4E22PerfectHashMapAsserterE3getEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull %243)
  %245 = getelementptr inbounds i8, ptr %244, i64 16
  %246 = load ptr, ptr %245, align 8, !tbaa !98
  %247 = getelementptr inbounds i8, ptr %246, i64 188
  %248 = load i32, ptr %247, align 4, !tbaa !126
  %249 = icmp sgt i32 %248, -1
  br i1 %249, label %259, label %266

.lr.ph1788:                                       ; preds = %234, %.lr.ph1788
  %.07261786 = phi i32 [ %256, %.lr.ph1788 ], [ 0, %234 ]
  %250 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %170)
  %251 = call noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents15region_computedEi(ptr noundef nonnull align 8 dereferenceable(16) %250, i32 noundef %.07261786)
  %252 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17) %251)
  %253 = sitofp i64 %252 to double
  %254 = load double, ptr %240, align 8, !tbaa !124
  %255 = fmul double %254, %253
  store double %255, ptr %240, align 8, !tbaa !124
  %256 = add nuw nsw i32 %.07261786, 1
  %257 = load i32, ptr %175, align 4, !tbaa !125
  %258 = icmp slt i32 %256, %257
  br i1 %258, label %.lr.ph1788, label %._crit_edge1789, !llvm.loop !127

259:                                              ; preds = %._crit_edge1789
  %260 = load i32, ptr %175, align 4, !tbaa !125
  %261 = icmp sgt i32 %260, 0
  br i1 %261, label %262, label %266

262:                                              ; preds = %259
  %263 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %170)
  %264 = call noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents15region_computedEi(ptr noundef nonnull align 8 dereferenceable(16) %263, i32 noundef %248)
  %265 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17) %264)
  br label %266

266:                                              ; preds = %262, %259, %._crit_edge1789
  %.0727 = phi i64 [ %265, %262 ], [ 1, %259 ], [ 1, %._crit_edge1789 ]
  %267 = load double, ptr %174, align 8, !tbaa !123
  %268 = sitofp i64 %.0727 to double
  %269 = fmul double %267, %268
  %270 = getelementptr inbounds i8, ptr %183, i64 112
  store double %269, ptr %270, align 8, !tbaa !128
  %271 = call noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler8LoopNest7is_rootEv(ptr noundef nonnull align 8 dereferenceable(196) %0)
  br i1 %271, label %277, label %272

272:                                              ; preds = %266
  %273 = load double, ptr %240, align 8, !tbaa !124
  %274 = getelementptr inbounds i8, ptr %183, i64 232
  store double %273, ptr %274, align 8, !tbaa !129
  %275 = load double, ptr %270, align 8, !tbaa !128
  %276 = getelementptr inbounds i8, ptr %183, i64 240
  store double %275, ptr %276, align 8, !tbaa !130
  br label %277

277:                                              ; preds = %272, %266
  %278 = add nuw i64 %.06481790, 1
  %279 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %171) #11
  %280 = icmp ult i64 %278, %279
  br i1 %280, label %178, label %._crit_edge1793, !llvm.loop !131

281:                                              ; preds = %._crit_edge1796
  %282 = getelementptr inbounds i8, ptr %0, i64 32
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #11
  %283 = call ptr @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %282) #11
  store ptr %283, ptr %17, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #11
  %284 = call ptr @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %282) #11
  store ptr %284, ptr %18, align 8
  %285 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %18) #11
  br i1 %285, label %.lr.ph2005, label %._crit_edge2006

._crit_edge2006.loopexit:                         ; preds = %.lr.ph2005
  %.promoted2007.pre = load i64, ptr %12, align 8, !tbaa !5
  br label %._crit_edge2006

._crit_edge2006:                                  ; preds = %._crit_edge2006.loopexit, %281
  %.promoted2007 = phi i64 [ %.promoted2007.pre, %._crit_edge2006.loopexit ], [ 0, %281 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #11
  %286 = call ptr @_ZNKSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %129) #11
  store ptr %286, ptr %19, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #11
  %287 = call ptr @_ZNKSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %129) #11
  store ptr %287, ptr %20, align 8
  %288 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEES9_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %20) #11
  br i1 %288, label %.lr.ph2010, label %._crit_edge2011

.lr.ph2005:                                       ; preds = %281, %.lr.ph2005
  %289 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %17) #11
  %290 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %289)
  call void @_ZNK6Halide8Internal13Autoscheduler8LoopNest16compute_featuresERKNS1_11FunctionDAGERKNS_13MachineParamsERK14PerfectHashMapINS3_4Node5StageENS2_5SitesELi4E22PerfectHashMapAsserterEllPKS2_SI_RSH_PlPS9_ISB_NS0_16ScheduleFeaturesELi4ESD_E(ptr noundef nonnull align 8 dereferenceable(196) %290, ptr noundef nonnull align 8 dereferenceable(48) %1, ptr noundef nonnull align 8 dereferenceable(20) %2, ptr noundef nonnull align 8 dereferenceable(32) %3, i64 noundef %128, i64 noundef %5, ptr noundef nonnull %0, ptr noundef %6, ptr noundef nonnull align 8 dereferenceable(196) %8, ptr noundef nonnull %12, ptr noundef %10)
  %291 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %17) #11
  %292 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %18) #11
  br i1 %292, label %.lr.ph2005, label %._crit_edge2006.loopexit

._crit_edge2011:                                  ; preds = %.lr.ph2010, %._crit_edge2006
  %293 = phi i64 [ %.promoted2007, %._crit_edge2006 ], [ %308, %.lr.ph2010 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #11
  %294 = call ptr @_ZNKSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %129) #11
  store ptr %294, ptr %21, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #11
  %295 = call ptr @_ZNKSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %129) #11
  store ptr %295, ptr %22, align 8
  %296 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEES9_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %22) #11
  br i1 %296, label %.lr.ph2017, label %._crit_edge2018

.lr.ph2017:                                       ; preds = %._crit_edge2011
  %297 = sitofp i64 %293 to double
  br label %316

.lr.ph2010:                                       ; preds = %._crit_edge2006, %.lr.ph2010
  %298 = phi i64 [ %308, %.lr.ph2010 ], [ %.promoted2007, %._crit_edge2006 ]
  %299 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #11
  %300 = load ptr, ptr %299, align 8, !tbaa !60
  %301 = getelementptr inbounds i8, ptr %300, i64 120
  %302 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %301, i64 noundef 0) #11
  %303 = call noundef nonnull align 8 dereferenceable(312) ptr @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE3getEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull %302)
  %304 = getelementptr inbounds i8, ptr %303, i64 96
  %305 = load double, ptr %304, align 8, !tbaa !132
  %306 = sitofp i64 %298 to double
  %307 = fadd double %305, %306
  %308 = fptosi double %307 to i64
  %309 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #11
  %310 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEES9_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %20) #11
  br i1 %310, label %.lr.ph2010, label %._crit_edge2011

._crit_edge2018:                                  ; preds = %._crit_edge2015, %._crit_edge2011
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #11
  %311 = call ptr @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %282) #11
  store ptr %311, ptr %25, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #11
  %312 = call ptr @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %282) #11
  store ptr %312, ptr %26, align 8
  %313 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %26) #11
  br i1 %313, label %.lr.ph2020, label %._crit_edge2021

.lr.ph2020:                                       ; preds = %._crit_edge2018
  %314 = getelementptr inbounds i8, ptr %0, i64 168
  %315 = sitofp i64 %293 to double
  br label %340

316:                                              ; preds = %.lr.ph2017, %._crit_edge2015
  %317 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %21) #11
  %318 = load ptr, ptr %317, align 8, !tbaa !60
  %319 = getelementptr inbounds i8, ptr %318, i64 120
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #11
  %320 = call ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %319) #11
  store ptr %320, ptr %23, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #11
  %321 = call ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %319) #11
  store ptr %321, ptr %24, align 8
  %322 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %24) #11
  br i1 %322, label %.lr.ph2014, label %._crit_edge2015

._crit_edge2015:                                  ; preds = %.lr.ph2014, %316
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #11
  %323 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %21) #11
  %324 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEES9_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %22) #11
  br i1 %324, label %316, label %._crit_edge2018

.lr.ph2014:                                       ; preds = %316, %.lr.ph2014
  %325 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #11
  %326 = call noundef nonnull align 8 dereferenceable(312) ptr @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE3getEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull %325)
  %327 = getelementptr inbounds i8, ptr %326, i64 296
  store double %297, ptr %327, align 8, !tbaa !133
  %328 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #11
  %329 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %24) #11
  br i1 %329, label %.lr.ph2014, label %._crit_edge2015

._crit_edge2021:                                  ; preds = %352, %._crit_edge2018
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %27) #11
  %330 = call { ptr, ptr } @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE5beginEv(ptr noundef nonnull align 8 dereferenceable(32) %10)
  %331 = extractvalue { ptr, ptr } %330, 0
  store ptr %331, ptr %27, align 8
  %332 = getelementptr inbounds i8, ptr %27, i64 8
  %333 = extractvalue { ptr, ptr } %330, 1
  store ptr %333, ptr %332, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %28) #11
  %334 = call { ptr, ptr } @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE3endEv(ptr noundef nonnull align 8 dereferenceable(32) %10)
  %335 = extractvalue { ptr, ptr } %334, 0
  store ptr %335, ptr %28, align 8
  %336 = getelementptr inbounds i8, ptr %28, i64 8
  %337 = extractvalue { ptr, ptr } %334, 1
  store ptr %337, ptr %336, align 8
  %338 = call noundef zeroext i1 @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE8iteratorneERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %27, ptr noundef nonnull align 8 dereferenceable(16) %28)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #11
  br i1 %338, label %.lr.ph2036, label %._crit_edge2037

.lr.ph2036:                                       ; preds = %._crit_edge2021
  %339 = sitofp i64 %293 to double
  br label %355

340:                                              ; preds = %.lr.ph2020, %352
  %341 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %25) #11
  %342 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %341)
  %343 = getelementptr inbounds i8, ptr %342, i64 168
  %344 = load ptr, ptr %343, align 8, !tbaa !134
  %345 = load ptr, ptr %314, align 8, !tbaa !134
  %.not887 = icmp eq ptr %344, %345
  br i1 %.not887, label %352, label %346

346:                                              ; preds = %340
  %347 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %341)
  %348 = getelementptr inbounds i8, ptr %347, i64 176
  %349 = load ptr, ptr %348, align 8, !tbaa !9
  %350 = call noundef nonnull align 8 dereferenceable(312) ptr @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE3getEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef %349)
  %351 = getelementptr inbounds i8, ptr %350, i64 288
  store double %315, ptr %351, align 8, !tbaa !135
  br label %352

352:                                              ; preds = %346, %340
  %353 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %25) #11
  %354 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %26) #11
  br i1 %354, label %340, label %._crit_edge2021

._crit_edge2037:                                  ; preds = %444, %._crit_edge2021
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #11
  br label %1521

355:                                              ; preds = %.lr.ph2036, %444
  %356 = call noundef ptr @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE8iterator3keyEv(ptr noundef nonnull align 8 dereferenceable(16) %27)
  %357 = load ptr, ptr %356, align 8, !tbaa !136
  %358 = call noundef nonnull align 8 dereferenceable(312) ptr @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE8iterator5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %27)
  %359 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Halide8Internal13Autoscheduler8LoopNest10get_boundsEPKNS1_11FunctionDAG4NodeE(ptr noundef nonnull align 8 dereferenceable(196) %8, ptr noundef %357)
  %360 = getelementptr inbounds i8, ptr %357, i64 32
  %361 = load double, ptr %360, align 8, !tbaa !123
  %362 = getelementptr inbounds i8, ptr %358, i64 104
  store double %361, ptr %362, align 8, !tbaa !137
  %363 = getelementptr inbounds i8, ptr %357, i64 180
  %364 = load i32, ptr %363, align 4, !tbaa !125
  %365 = icmp sgt i32 %364, 0
  br i1 %365, label %.lr.ph2024, label %._crit_edge2025

._crit_edge2025:                                  ; preds = %.lr.ph2024, %355
  %366 = getelementptr inbounds i8, ptr %358, i64 304
  store double %339, ptr %366, align 8, !tbaa !138
  %367 = call noundef nonnull align 8 dereferenceable(41) ptr @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS2_8LoopNest5SitesELi4E22PerfectHashMapAsserterE3getEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull %356)
  %368 = getelementptr inbounds i8, ptr %367, i64 16
  %369 = load ptr, ptr %368, align 8, !tbaa !98
  %.not886 = icmp eq ptr %369, null
  br i1 %.not886, label %394, label %379

.lr.ph2024:                                       ; preds = %355, %.lr.ph2024
  %.07282022 = phi i32 [ %376, %.lr.ph2024 ], [ 0, %355 ]
  %370 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %359)
  %371 = call noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents15region_computedEi(ptr noundef nonnull align 8 dereferenceable(16) %370, i32 noundef %.07282022)
  %372 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17) %371)
  %373 = sitofp i64 %372 to double
  %374 = load double, ptr %362, align 8, !tbaa !137
  %375 = fmul double %374, %373
  store double %375, ptr %362, align 8, !tbaa !137
  %376 = add nuw nsw i32 %.07282022, 1
  %377 = load i32, ptr %363, align 4, !tbaa !125
  %378 = icmp slt i32 %376, %377
  br i1 %378, label %.lr.ph2024, label %._crit_edge2025, !llvm.loop !139

379:                                              ; preds = %._crit_edge2025
  %380 = getelementptr inbounds i8, ptr %369, i64 188
  %381 = load i32, ptr %380, align 4, !tbaa !126
  %382 = icmp sgt i32 %381, -1
  br i1 %382, label %383, label %390

383:                                              ; preds = %379
  %384 = load i32, ptr %363, align 4, !tbaa !125
  %385 = icmp slt i32 %381, %384
  br i1 %385, label %386, label %390

386:                                              ; preds = %383
  %387 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %359)
  %388 = call noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents15region_computedEi(ptr noundef nonnull align 8 dereferenceable(16) %387, i32 noundef %381)
  %389 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17) %388)
  br label %390

390:                                              ; preds = %386, %383, %379
  %.0729 = phi i64 [ %389, %386 ], [ 1, %383 ], [ 1, %379 ]
  %391 = load double, ptr %360, align 8, !tbaa !123
  %392 = sitofp i64 %.0729 to double
  %393 = fmul double %391, %392
  br label %394

394:                                              ; preds = %._crit_edge2025, %390
  %.sink2092 = phi double [ %393, %390 ], [ 0.000000e+00, %._crit_edge2025 ]
  %395 = getelementptr inbounds i8, ptr %358, i64 128
  store double %.sink2092, ptr %395, align 8, !tbaa !140
  %396 = getelementptr inbounds i8, ptr %358, i64 40
  store double 1.000000e+00, ptr %396, align 8, !tbaa !141
  %397 = getelementptr inbounds i8, ptr %356, i64 16
  %398 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %397) #11
  %399 = trunc i64 %398 to i32
  %400 = icmp sgt i32 %399, 0
  br i1 %400, label %.lr.ph2028, label %._crit_edge2029

.lr.ph2028:                                       ; preds = %394
  %401 = getelementptr inbounds i8, ptr %356, i64 8
  br label %405

._crit_edge2029:                                  ; preds = %405, %394
  %402 = getelementptr inbounds i8, ptr %357, i64 120
  %403 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %402) #11
  %404 = icmp eq i64 %403, 1
  br i1 %404, label %417, label %444

405:                                              ; preds = %.lr.ph2028, %405
  %.07302026 = phi i32 [ 0, %.lr.ph2028 ], [ %413, %405 ]
  %406 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %359)
  %407 = load i32, ptr %401, align 8, !tbaa !142
  %408 = call noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents5loopsEii(ptr noundef nonnull align 8 dereferenceable(16) %406, i32 noundef %407, i32 noundef %.07302026)
  %409 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17) %408)
  %410 = sitofp i64 %409 to double
  %411 = load double, ptr %396, align 8, !tbaa !141
  %412 = fmul double %411, %410
  store double %412, ptr %396, align 8, !tbaa !141
  %413 = add nuw nsw i32 %.07302026, 1
  %414 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %397) #11
  %415 = trunc i64 %414 to i32
  %416 = icmp slt i32 %413, %415
  br i1 %416, label %405, label %._crit_edge2029, !llvm.loop !143

417:                                              ; preds = %._crit_edge2029
  %418 = getelementptr inbounds i8, ptr %357, i64 186
  %419 = load i8, ptr %418, align 2, !tbaa !144, !range !52, !noundef !53
  %420 = trunc nuw i8 %419 to i1
  br i1 %420, label %444, label %421

421:                                              ; preds = %417
  %422 = getelementptr inbounds i8, ptr %357, i64 144
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #11
  %423 = call ptr @_ZNKSt6vectorIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %422) #11
  store ptr %423, ptr %29, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #11
  %424 = call ptr @_ZNKSt6vectorIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %422) #11
  store ptr %424, ptr %30, align 8
  %425 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %30) #11
  br i1 %425, label %.lr.ph2032, label %._crit_edge2033

._crit_edge2033:                                  ; preds = %.lr.ph2032, %421
  %.0731.lcssa = phi i64 [ 0, %421 ], [ %441, %.lr.ph2032 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #11
  %426 = sitofp i64 %.0731.lcssa to double
  store double %426, ptr %31, align 8, !tbaa !145
  %427 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %396, ptr noundef nonnull align 8 dereferenceable(8) %31)
  %428 = load double, ptr %427, align 8, !tbaa !145
  store double %428, ptr %396, align 8, !tbaa !141
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #11
  br label %444

.lr.ph2032:                                       ; preds = %421, %.lr.ph2032
  %.07312030 = phi i64 [ %441, %.lr.ph2032 ], [ 0, %421 ]
  %429 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %29) #11
  %430 = load ptr, ptr %429, align 8, !tbaa !60
  %431 = getelementptr inbounds i8, ptr %430, i64 32
  %432 = load ptr, ptr %431, align 8, !tbaa !146
  %433 = call noundef nonnull align 8 dereferenceable(312) ptr @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE3getEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef %432)
  %434 = getelementptr inbounds i8, ptr %433, i64 40
  %435 = load double, ptr %434, align 8, !tbaa !141
  %436 = getelementptr inbounds i8, ptr %430, i64 40
  %437 = load i32, ptr %436, align 8, !tbaa !156
  %438 = sitofp i32 %437 to double
  %439 = sitofp i64 %.07312030 to double
  %440 = call double @llvm.fmuladd.f64(double %435, double %438, double %439)
  %441 = fptosi double %440 to i64
  %442 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %29) #11
  %443 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %30) #11
  br i1 %443, label %.lr.ph2032, label %._crit_edge2033

444:                                              ; preds = %._crit_edge2033, %417, %._crit_edge2029
  call void @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE8iteratorppEi(ptr noundef nonnull align 8 dereferenceable(16) %27, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %28) #11
  %445 = call { ptr, ptr } @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE3endEv(ptr noundef nonnull align 8 dereferenceable(32) %10)
  %446 = extractvalue { ptr, ptr } %445, 0
  store ptr %446, ptr %28, align 8
  %447 = extractvalue { ptr, ptr } %445, 1
  store ptr %447, ptr %336, align 8
  %448 = call noundef zeroext i1 @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE8iteratorneERKS9_(ptr noundef nonnull align 8 dereferenceable(16) %27, ptr noundef nonnull align 8 dereferenceable(16) %28)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #11
  br i1 %448, label %355, label %._crit_edge2037, !llvm.loop !157

449:                                              ; preds = %._crit_edge1796
  %450 = mul nsw i64 %.0623.lcssa, %5
  %451 = getelementptr inbounds i8, ptr %0, i64 176
  %452 = load ptr, ptr %451, align 8, !tbaa !9
  %453 = load ptr, ptr %452, align 8, !tbaa !136
  %454 = getelementptr inbounds i8, ptr %453, i64 185
  %455 = load i8, ptr %454, align 1, !tbaa !61, !range !52, !noundef !53
  %456 = trunc nuw i8 %455 to i1
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %32) #11
  br i1 %456, label %.critedge896, label %.critedge897

.critedge896:                                     ; preds = %449
  call void @llvm.lifetime.start.p0(i64 384, ptr nonnull %33) #11
  call void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %33, ptr noundef nonnull @.str.3, i32 noundef 379, ptr noundef nonnull @.str.5, i32 noundef 0)
  %457 = call noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %33)
  call void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %32, ptr noundef nonnull align 8 dereferenceable(380) %457)
  call void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %33)
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %33) #11
  %.pre2061 = load ptr, ptr %451, align 8, !tbaa !9
  br label %.critedge897

.critedge897:                                     ; preds = %449, %.critedge896
  %458 = phi ptr [ %452, %449 ], [ %.pre2061, %.critedge896 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #11
  %459 = call noundef nonnull align 8 dereferenceable(312) ptr @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE13get_or_createEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef %458)
  %460 = getelementptr inbounds i8, ptr %0, i64 184
  %461 = load i8, ptr %460, align 8, !tbaa !158, !range !52, !noundef !53
  %462 = trunc nuw i8 %461 to i1
  br i1 %462, label %463, label %486

463:                                              ; preds = %.critedge897
  %464 = getelementptr inbounds i8, ptr %0, i64 192
  %465 = load i32, ptr %464, align 8, !tbaa !100
  %466 = icmp sgt i32 %465, -1
  br i1 %466, label %467, label %.thread

467:                                              ; preds = %463
  %468 = call noundef i64 @_ZNKSt6vectorIlSaIlEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %121) #11
  %469 = trunc i64 %468 to i32
  %470 = icmp slt i32 %465, %469
  br i1 %470, label %472, label %.thread

.thread:                                          ; preds = %463, %467
  %471 = getelementptr inbounds i8, ptr %459, i64 176
  store double 1.000000e+00, ptr %471, align 8, !tbaa !159
  br label %480

472:                                              ; preds = %467
  %473 = load i32, ptr %464, align 8, !tbaa !100
  %474 = sext i32 %473 to i64
  %475 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %121, i64 noundef %474) #11
  %476 = load i64, ptr %475, align 8, !tbaa !5
  %477 = sitofp i64 %476 to double
  %478 = getelementptr inbounds i8, ptr %459, i64 176
  store double %477, ptr %478, align 8, !tbaa !159
  %479 = icmp eq i64 %476, 1
  br i1 %479, label %480, label %513

480:                                              ; preds = %.thread, %472
  %481 = getelementptr inbounds i8, ptr %459, i64 192
  %482 = load double, ptr %481, align 8, !tbaa !96
  %483 = getelementptr inbounds i8, ptr %459, i64 200
  %484 = load double, ptr %483, align 8, !tbaa !97
  %485 = fadd double %482, %484
  store double %485, ptr %483, align 8, !tbaa !97
  store double 0.000000e+00, ptr %481, align 8, !tbaa !96
  br label %513

486:                                              ; preds = %.critedge897
  %487 = getelementptr inbounds i8, ptr %459, i64 48
  %488 = getelementptr inbounds i8, ptr %459, i64 56
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %487, align 8, !tbaa !145
  %489 = load ptr, ptr %451, align 8, !tbaa !9
  %490 = getelementptr inbounds i8, ptr %489, i64 16
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #11
  %491 = call ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %490) #11
  store ptr %491, ptr %34, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #11
  %492 = call ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %490) #11
  store ptr %492, ptr %35, align 8
  %493 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 8 dereferenceable(8) %35) #11
  br i1 %493, label %.lr.ph1799, label %._crit_edge1800

._crit_edge1800:                                  ; preds = %509, %486
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #11
  br label %513

.lr.ph1799:                                       ; preds = %486, %509
  %.07341797 = phi i64 [ %510, %509 ], [ 0, %486 ]
  %494 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %34) #11
  %495 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %121, i64 noundef %.07341797) #11
  %496 = load i64, ptr %495, align 8, !tbaa !5
  %497 = sitofp i64 %496 to double
  %498 = load double, ptr %487, align 8, !tbaa !160
  %499 = fmul double %498, %497
  store double %499, ptr %487, align 8, !tbaa !160
  %500 = getelementptr inbounds i8, ptr %494, i64 33
  %501 = load i8, ptr %500, align 1, !tbaa !161, !range !52, !noundef !53
  %502 = trunc nuw i8 %501 to i1
  br i1 %502, label %509, label %503

503:                                              ; preds = %.lr.ph1799
  %504 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %121, i64 noundef %.07341797) #11
  %505 = load i64, ptr %504, align 8, !tbaa !5
  %506 = sitofp i64 %505 to double
  %507 = load double, ptr %488, align 8, !tbaa !162
  %508 = fmul double %507, %506
  store double %508, ptr %488, align 8, !tbaa !162
  br label %509

509:                                              ; preds = %503, %.lr.ph1799
  %510 = add i64 %.07341797, 1
  %511 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %34) #11
  %512 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 8 dereferenceable(8) %35) #11
  br i1 %512, label %.lr.ph1799, label %._crit_edge1800

513:                                              ; preds = %472, %480, %._crit_edge1800
  %514 = call noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler8LoopNest7is_rootEv(ptr noundef nonnull align 8 dereferenceable(196) %6)
  %515 = getelementptr inbounds i8, ptr %6, i64 168
  %516 = load ptr, ptr %515, align 8, !tbaa !134
  %517 = getelementptr inbounds i8, ptr %0, i64 168
  %518 = load ptr, ptr %517, align 8, !tbaa !134
  %.not = icmp ne ptr %516, %518
  br i1 %.not, label %519, label %524

519:                                              ; preds = %513
  %520 = load ptr, ptr %451, align 8, !tbaa !9
  %521 = getelementptr inbounds i8, ptr %520, i64 8
  %522 = load i32, ptr %521, align 8, !tbaa !142
  %523 = icmp eq i32 %522, 0
  br label %524

524:                                              ; preds = %519, %513
  %525 = phi i1 [ false, %513 ], [ %523, %519 ]
  br i1 %514, label %526, label %706

526:                                              ; preds = %524
  %527 = getelementptr inbounds i8, ptr %0, i64 186
  %528 = load i8, ptr %527, align 2, !tbaa !57, !range !52, !noundef !53
  %529 = trunc nuw i8 %528 to i1
  br i1 %529, label %530, label %579

530:                                              ; preds = %526
  %531 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Halide8Internal13Autoscheduler8LoopNest10get_boundsEPKNS1_11FunctionDAG4NodeE(ptr noundef nonnull align 8 dereferenceable(196) %0, ptr noundef %518)
  %532 = load ptr, ptr %517, align 8, !tbaa !134
  %533 = getelementptr inbounds i8, ptr %532, i64 32
  %534 = load double, ptr %533, align 8, !tbaa !123
  %535 = getelementptr inbounds i8, ptr %459, i64 232
  store double %534, ptr %535, align 8, !tbaa !129
  %536 = getelementptr inbounds i8, ptr %532, i64 180
  %537 = load i32, ptr %536, align 4, !tbaa !125
  %538 = icmp sgt i32 %537, 0
  br i1 %538, label %.preheader974.lr.ph, label %._crit_edge1806

.preheader974.lr.ph:                              ; preds = %530
  %539 = getelementptr inbounds i8, ptr %0, i64 188
  br label %.preheader974

.preheader974:                                    ; preds = %.preheader974.lr.ph, %.loopexit975
  %indvars.iv2057 = phi i64 [ 0, %.preheader974.lr.ph ], [ %indvars.iv.next2058, %.loopexit975 ]
  %.07351805 = phi i64 [ 1, %.preheader974.lr.ph ], [ %spec.select898, %.loopexit975 ]
  %540 = load ptr, ptr %451, align 8, !tbaa !9
  %541 = getelementptr inbounds i8, ptr %540, i64 16
  %542 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %541) #11
  %.not2040 = icmp eq i64 %542, 0
  br i1 %.not2040, label %.loopexit975, label %.lr.ph1802

._crit_edge1806.loopexit:                         ; preds = %.loopexit975
  %.phi.trans.insert = getelementptr inbounds i8, ptr %574, i64 32
  %.pre2062 = load double, ptr %.phi.trans.insert, align 8, !tbaa !123
  br label %._crit_edge1806

._crit_edge1806:                                  ; preds = %._crit_edge1806.loopexit, %530
  %543 = phi double [ %534, %530 ], [ %.pre2062, %._crit_edge1806.loopexit ]
  %.0735.lcssa = phi i64 [ 1, %530 ], [ %spec.select898, %._crit_edge1806.loopexit ]
  %544 = sitofp i64 %.0735.lcssa to double
  %545 = fmul double %543, %544
  br label %591

.lr.ph1802:                                       ; preds = %.preheader974, %557
  %.07431801 = phi i64 [ %558, %557 ], [ 0, %.preheader974 ]
  %546 = load ptr, ptr %451, align 8, !tbaa !9
  %547 = getelementptr inbounds i8, ptr %546, i64 16
  %548 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %547, i64 noundef %.07431801) #11
  %549 = load ptr, ptr %517, align 8, !tbaa !134
  %550 = getelementptr inbounds i8, ptr %549, i64 8
  %551 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal8Function4argsB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %550)
  %552 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %551, i64 noundef %indvars.iv2057) #11
  %553 = call noundef zeroext i1 @_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_(ptr noundef nonnull align 8 dereferenceable(32) %548, ptr noundef nonnull align 8 dereferenceable(32) %552) #11
  br i1 %553, label %554, label %557

554:                                              ; preds = %.lr.ph1802
  %555 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %121, i64 noundef %.07431801) #11
  %556 = load i64, ptr %555, align 8, !tbaa !5
  br label %.loopexit975

557:                                              ; preds = %.lr.ph1802
  %558 = add nuw i64 %.07431801, 1
  %559 = load ptr, ptr %451, align 8, !tbaa !9
  %560 = getelementptr inbounds i8, ptr %559, i64 16
  %561 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %560) #11
  %562 = icmp ult i64 %558, %561
  br i1 %562, label %.lr.ph1802, label %.loopexit975, !llvm.loop !163

.loopexit975:                                     ; preds = %557, %.preheader974, %554
  %.0738 = phi i64 [ %556, %554 ], [ 1, %.preheader974 ], [ 1, %557 ]
  %563 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %531)
  %564 = trunc nuw nsw i64 %indvars.iv2057 to i32
  %565 = call noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents15region_computedEi(ptr noundef nonnull align 8 dereferenceable(16) %563, i32 noundef %564)
  %566 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17) %565)
  %567 = sdiv i64 %566, %.0738
  %568 = sitofp i64 %567 to double
  %569 = load double, ptr %535, align 8, !tbaa !129
  %570 = fmul double %569, %568
  store double %570, ptr %535, align 8, !tbaa !129
  %571 = load i32, ptr %539, align 4, !tbaa !126
  %572 = zext i32 %571 to i64
  %573 = icmp eq i64 %indvars.iv2057, %572
  %spec.select898 = select i1 %573, i64 %567, i64 %.07351805
  %indvars.iv.next2058 = add nuw nsw i64 %indvars.iv2057, 1
  %574 = load ptr, ptr %517, align 8, !tbaa !134
  %575 = getelementptr inbounds i8, ptr %574, i64 180
  %576 = load i32, ptr %575, align 4, !tbaa !125
  %577 = sext i32 %576 to i64
  %578 = icmp slt i64 %indvars.iv.next2058, %577
  br i1 %578, label %.preheader974, label %._crit_edge1806.loopexit, !llvm.loop !164

579:                                              ; preds = %526
  %580 = getelementptr inbounds i8, ptr %459, i64 88
  %581 = load double, ptr %580, align 8, !tbaa !124
  %582 = load i32, ptr %2, align 8, !tbaa !54
  %583 = sitofp i32 %582 to double
  %584 = fadd double %581, %583
  %585 = fadd double %584, -1.000000e+00
  %586 = fdiv double %585, %583
  %587 = getelementptr inbounds i8, ptr %459, i64 232
  store double %586, ptr %587, align 8, !tbaa !129
  %588 = getelementptr inbounds i8, ptr %459, i64 112
  %589 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %587, ptr noundef nonnull align 8 dereferenceable(8) %588)
  %590 = load double, ptr %589, align 8, !tbaa !145
  br label %591

591:                                              ; preds = %579, %._crit_edge1806
  %.sink2094 = phi double [ %590, %579 ], [ %545, %._crit_edge1806 ]
  %592 = getelementptr inbounds i8, ptr %459, i64 240
  store double %.sink2094, ptr %592, align 8, !tbaa !130
  %593 = getelementptr inbounds i8, ptr %459, i64 264
  %594 = getelementptr inbounds i8, ptr %459, i64 272
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %593, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %36) #11
  call void @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS6_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %36) #11
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %37) #11
  call void @_ZNSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %37) #11
  %595 = load ptr, ptr %451, align 8, !tbaa !9
  %596 = getelementptr inbounds i8, ptr %595, i64 1304
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #11
  %597 = call ptr @_ZNKSt6vectorIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %596) #11
  store ptr %597, ptr %38, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #11
  %598 = call ptr @_ZNKSt6vectorIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %596) #11
  store ptr %598, ptr %39, align 8
  %599 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef nonnull align 8 dereferenceable(8) %39) #11
  br i1 %599, label %.lr.ph1810, label %._crit_edge1811

._crit_edge1811:                                  ; preds = %603, %591
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #11
  %600 = call noundef zeroext i1 @_ZNKSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS6_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %36) #11
  br i1 %600, label %._crit_edge1829, label %.lr.ph1828

.lr.ph1810:                                       ; preds = %591, %603
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #11
  %601 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %38) #11
  %602 = load ptr, ptr %601, align 8, !tbaa !60
  store ptr %602, ptr %40, align 8, !tbaa !60
  invoke void @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS6_EE9push_backERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %36, ptr noundef nonnull align 8 dereferenceable(8) %40)
          to label %603 unwind label %606

603:                                              ; preds = %.lr.ph1810
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #11
  %604 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %38) #11
  %605 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef nonnull align 8 dereferenceable(8) %39) #11
  br i1 %605, label %.lr.ph1810, label %._crit_edge1811

606:                                              ; preds = %.lr.ph1810
  %607 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #11
  br label %705

.lr.ph1828:                                       ; preds = %._crit_edge1811, %703
  %608 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS6_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %36) #11
  %609 = load ptr, ptr %608, align 8, !tbaa !60
  call void @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS6_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %36) #11
  %610 = getelementptr inbounds i8, ptr %609, i64 24
  %611 = invoke noundef i64 @_ZNKSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE5countERKS6_(ptr noundef nonnull align 8 dereferenceable(48) %37, ptr noundef nonnull align 8 dereferenceable(8) %610)
          to label %612 unwind label %613

612:                                              ; preds = %.lr.ph1828
  %.not876 = icmp eq i64 %611, 0
  br i1 %.not876, label %615, label %703, !llvm.loop !165

613:                                              ; preds = %615, %.lr.ph1828
  %614 = landingpad { ptr, i32 }
          cleanup
  br label %705

615:                                              ; preds = %612
  %616 = invoke { ptr, i8 } @_ZNSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE6insertERKS6_(ptr noundef nonnull align 8 dereferenceable(48) %37, ptr noundef nonnull align 8 dereferenceable(8) %610)
          to label %617 unwind label %613

617:                                              ; preds = %615
  %618 = load ptr, ptr %610, align 8, !tbaa !166
  %619 = getelementptr inbounds i8, ptr %618, i64 120
  %620 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %619, i64 noundef 0) #11
  %621 = invoke noundef nonnull align 8 dereferenceable(41) ptr @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS2_8LoopNest5SitesELi4E22PerfectHashMapAsserterE3getEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull %620)
          to label %622 unwind label %654

622:                                              ; preds = %617
  %623 = getelementptr inbounds i8, ptr %621, i64 8
  %624 = load ptr, ptr %623, align 8, !tbaa !167
  %625 = call noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler8LoopNest7is_rootEv(ptr noundef nonnull align 8 dereferenceable(196) %624)
  br i1 %625, label %626, label %680

626:                                              ; preds = %622
  %627 = load ptr, ptr %610, align 8, !tbaa !166
  %628 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Halide8Internal13Autoscheduler8LoopNest10get_boundsEPKNS1_11FunctionDAG4NodeE(ptr noundef nonnull align 8 dereferenceable(196) %0, ptr noundef %627)
          to label %629 unwind label %656

629:                                              ; preds = %626
  %630 = load ptr, ptr %610, align 8, !tbaa !166
  %631 = getelementptr inbounds i8, ptr %630, i64 32
  %632 = load double, ptr %631, align 8, !tbaa !123
  %633 = fptosi double %632 to i64
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #11
  store i64 1, ptr %41, align 8, !tbaa !5
  %634 = getelementptr inbounds i8, ptr %630, i64 185
  %635 = load i8, ptr %634, align 1, !tbaa !61, !range !52, !noundef !53
  %636 = trunc nuw i8 %635 to i1
  br i1 %636, label %643, label %637

637:                                              ; preds = %629
  %638 = getelementptr inbounds i8, ptr %621, i64 16
  %639 = load ptr, ptr %638, align 8, !tbaa !98
  %.not881 = icmp eq ptr %639, null
  br i1 %.not881, label %643, label %640

640:                                              ; preds = %637
  %641 = getelementptr inbounds i8, ptr %639, i64 188
  %642 = load i32, ptr %641, align 4, !tbaa !126
  br label %643

643:                                              ; preds = %640, %637, %629
  %644 = phi i32 [ 0, %629 ], [ %642, %640 ], [ -1, %637 ]
  %645 = getelementptr inbounds i8, ptr %630, i64 180
  %646 = load i32, ptr %645, align 4, !tbaa !125
  %647 = icmp sgt i32 %646, 0
  br i1 %647, label %.lr.ph1822, label %._crit_edge1823

._crit_edge1823.loopexit:                         ; preds = %.lr.ph1822
  %.phi.trans.insert2063 = getelementptr inbounds i8, ptr %667, i64 185
  %.pre2064 = load i8, ptr %.phi.trans.insert2063, align 1, !tbaa !61, !range !52
  br label %._crit_edge1823

._crit_edge1823:                                  ; preds = %._crit_edge1823.loopexit, %643
  %648 = phi i64 [ 1, %643 ], [ %662, %._crit_edge1823.loopexit ]
  %649 = phi i8 [ %635, %643 ], [ %.pre2064, %._crit_edge1823.loopexit ]
  %.0745.lcssa = phi i64 [ 1, %643 ], [ %spec.select899, %._crit_edge1823.loopexit ]
  %.0744.lcssa = phi i64 [ %633, %643 ], [ %664, %._crit_edge1823.loopexit ]
  %650 = trunc nuw i8 %649 to i1
  %651 = getelementptr inbounds i8, ptr %621, i64 16
  %652 = load ptr, ptr %651, align 8
  %653 = icmp ne ptr %652, null
  %or.cond903.not = select i1 %650, i1 true, i1 %653
  br i1 %or.cond903.not, label %673, label %671

654:                                              ; preds = %617
  %655 = landingpad { ptr, i32 }
          cleanup
  br label %705

656:                                              ; preds = %626
  %657 = landingpad { ptr, i32 }
          cleanup
  br label %705

.lr.ph1822:                                       ; preds = %643, %.lr.ph1822
  %.07441820 = phi i64 [ %664, %.lr.ph1822 ], [ %633, %643 ]
  %.07451819 = phi i64 [ %spec.select899, %.lr.ph1822 ], [ 1, %643 ]
  %.07501818 = phi i32 [ %666, %.lr.ph1822 ], [ 0, %643 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #11
  %658 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %628)
  %659 = call noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents15region_requiredEi(ptr noundef nonnull align 8 dereferenceable(16) %658, i32 noundef %.07501818)
  %660 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17) %659)
  store i64 %660, ptr %42, align 8, !tbaa !5
  %661 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIlERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull align 8 dereferenceable(8) %41)
  %662 = load i64, ptr %661, align 8, !tbaa !5
  store i64 %662, ptr %41, align 8, !tbaa !5
  %663 = load i64, ptr %42, align 8, !tbaa !5
  %664 = mul nsw i64 %663, %.07441820
  %.not882 = icmp eq i32 %.07501818, %644
  %665 = select i1 %.not882, i64 1, i64 %663
  %spec.select899 = mul nsw i64 %665, %.07451819
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #11
  %666 = add nuw nsw i32 %.07501818, 1
  %667 = load ptr, ptr %610, align 8, !tbaa !166
  %668 = getelementptr inbounds i8, ptr %667, i64 180
  %669 = load i32, ptr %668, align 4, !tbaa !125
  %670 = icmp slt i32 %666, %669
  br i1 %670, label %.lr.ph1822, label %._crit_edge1823.loopexit, !llvm.loop !168

671:                                              ; preds = %._crit_edge1823
  %672 = sdiv i64 %.0745.lcssa, %648
  br label %673

673:                                              ; preds = %671, %._crit_edge1823
  %.2747 = phi i64 [ %.0745.lcssa, %._crit_edge1823 ], [ %672, %671 ]
  %674 = sitofp i64 %.0744.lcssa to double
  %675 = load double, ptr %593, align 8, !tbaa !169
  %676 = fadd double %675, %674
  store double %676, ptr %593, align 8, !tbaa !169
  %677 = sitofp i64 %.2747 to double
  %678 = load double, ptr %594, align 8, !tbaa !170
  %679 = fadd double %678, %677
  store double %679, ptr %594, align 8, !tbaa !170
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #11
  br label %703

680:                                              ; preds = %622
  %681 = getelementptr inbounds i8, ptr %621, i64 16
  %682 = load ptr, ptr %681, align 8, !tbaa !98
  %.not877 = icmp eq ptr %682, null
  br i1 %.not877, label %703, label %683

683:                                              ; preds = %680
  %684 = load ptr, ptr %610, align 8, !tbaa !166
  %685 = getelementptr inbounds i8, ptr %684, i64 120
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #11
  %686 = call ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %685) #11
  store ptr %686, ptr %43, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %44) #11
  %687 = call ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %685) #11
  store ptr %687, ptr %44, align 8
  %688 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull align 8 dereferenceable(8) %44) #11
  br i1 %688, label %.lr.ph1816, label %._crit_edge1817

._crit_edge1817:                                  ; preds = %._crit_edge1814, %683
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #11
  br label %703

.lr.ph1816:                                       ; preds = %683, %._crit_edge1814
  %689 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #11
  %690 = getelementptr inbounds i8, ptr %689, i64 1304
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #11
  %691 = call ptr @_ZNKSt6vectorIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %690) #11
  store ptr %691, ptr %45, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #11
  %692 = call ptr @_ZNKSt6vectorIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %690) #11
  store ptr %692, ptr %46, align 8
  %693 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull align 8 dereferenceable(8) %46) #11
  br i1 %693, label %.lr.ph1813, label %._crit_edge1814

._crit_edge1814:                                  ; preds = %698, %.lr.ph1816
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #11
  %694 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #11
  %695 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull align 8 dereferenceable(8) %44) #11
  br i1 %695, label %.lr.ph1816, label %._crit_edge1817

.lr.ph1813:                                       ; preds = %.lr.ph1816, %698
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #11
  %696 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %45) #11
  %697 = load ptr, ptr %696, align 8, !tbaa !60
  store ptr %697, ptr %47, align 8, !tbaa !60
  invoke void @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS6_EE9push_backERKS6_(ptr noundef nonnull align 8 dereferenceable(24) %36, ptr noundef nonnull align 8 dereferenceable(8) %47)
          to label %698 unwind label %701

698:                                              ; preds = %.lr.ph1813
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #11
  %699 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %45) #11
  %700 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull align 8 dereferenceable(8) %46) #11
  br i1 %700, label %.lr.ph1813, label %._crit_edge1814

701:                                              ; preds = %.lr.ph1813
  %702 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #11
  br label %705

703:                                              ; preds = %673, %._crit_edge1817, %680, %612
  %704 = call noundef zeroext i1 @_ZNKSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS6_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %36) #11
  br i1 %704, label %._crit_edge1829, label %.lr.ph1828

._crit_edge1829:                                  ; preds = %703, %._crit_edge1811
  call void @_ZNSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %37) #11
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %37) #11
  call void @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %36) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %36) #11
  br label %706

705:                                              ; preds = %613, %701, %656, %654, %606
  %.pn883 = phi { ptr, i32 } [ %607, %606 ], [ %614, %613 ], [ %657, %656 ], [ %702, %701 ], [ %655, %654 ]
  call void @_ZNSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %37) #11
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %37) #11
  call void @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %36) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %36) #11
  br label %1523

706:                                              ; preds = %._crit_edge1829, %524
  br i1 %.not, label %707, label %754

707:                                              ; preds = %706
  %708 = sitofp i64 %4 to double
  %709 = getelementptr inbounds i8, ptr %459, i64 8
  store double %708, ptr %709, align 8, !tbaa !171
  %710 = sitofp i64 %.0623.lcssa to double
  %711 = getelementptr inbounds i8, ptr %459, i64 72
  store double %710, ptr %711, align 8, !tbaa !172
  %712 = sitofp i64 %5 to double
  %713 = getelementptr inbounds i8, ptr %459, i64 80
  store double %712, ptr %713, align 8, !tbaa !173
  %714 = load ptr, ptr %451, align 8, !tbaa !9
  %715 = getelementptr inbounds i8, ptr %714, i64 44
  %716 = load i32, ptr %715, align 4, !tbaa !101
  %717 = sitofp i32 %716 to double
  %718 = getelementptr inbounds i8, ptr %459, i64 184
  store double %717, ptr %718, align 8, !tbaa !174
  %719 = load ptr, ptr %517, align 8, !tbaa !134
  %720 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Halide8Internal13Autoscheduler8LoopNest10get_boundsEPKNS1_11FunctionDAG4NodeE(ptr noundef nonnull align 8 dereferenceable(196) %6, ptr noundef %719)
  %721 = load ptr, ptr %517, align 8, !tbaa !134
  %722 = getelementptr inbounds i8, ptr %721, i64 32
  %723 = load double, ptr %722, align 8, !tbaa !123
  %724 = getelementptr inbounds i8, ptr %459, i64 96
  store double %723, ptr %724, align 8, !tbaa !132
  %725 = getelementptr inbounds i8, ptr %721, i64 180
  %726 = load i32, ptr %725, align 4, !tbaa !125
  %727 = icmp sgt i32 %726, 0
  br i1 %727, label %.lr.ph1832, label %._crit_edge1833.thread

._crit_edge1833:                                  ; preds = %.lr.ph1832
  %728 = getelementptr inbounds i8, ptr %0, i64 188
  %729 = load i32, ptr %728, align 4, !tbaa !126
  %730 = icmp sgt i32 %729, -1
  %731 = icmp sgt i32 %741, 0
  %or.cond904 = and i1 %731, %730
  br i1 %or.cond904, label %743, label %._crit_edge1833.thread

.lr.ph1832:                                       ; preds = %707, %.lr.ph1832
  %.07511830 = phi i32 [ %738, %.lr.ph1832 ], [ 0, %707 ]
  %732 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %720)
  %733 = call noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents15region_computedEi(ptr noundef nonnull align 8 dereferenceable(16) %732, i32 noundef %.07511830)
  %734 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17) %733)
  %735 = sitofp i64 %734 to double
  %736 = load double, ptr %724, align 8, !tbaa !132
  %737 = fmul double %736, %735
  store double %737, ptr %724, align 8, !tbaa !132
  %738 = add nuw nsw i32 %.07511830, 1
  %739 = load ptr, ptr %517, align 8, !tbaa !134
  %740 = getelementptr inbounds i8, ptr %739, i64 180
  %741 = load i32, ptr %740, align 4, !tbaa !125
  %742 = icmp slt i32 %738, %741
  br i1 %742, label %.lr.ph1832, label %._crit_edge1833, !llvm.loop !175

743:                                              ; preds = %._crit_edge1833
  %744 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %720)
  %745 = load i32, ptr %728, align 4, !tbaa !126
  %746 = call noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents15region_computedEi(ptr noundef nonnull align 8 dereferenceable(16) %744, i32 noundef %745)
  %747 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17) %746)
  %.pre2065 = load ptr, ptr %517, align 8, !tbaa !134
  br label %._crit_edge1833.thread

._crit_edge1833.thread:                           ; preds = %707, %743, %._crit_edge1833
  %748 = phi ptr [ %.pre2065, %743 ], [ %739, %._crit_edge1833 ], [ %721, %707 ]
  %.0752 = phi i64 [ %747, %743 ], [ 1, %._crit_edge1833 ], [ 1, %707 ]
  %749 = getelementptr inbounds i8, ptr %748, i64 32
  %750 = load double, ptr %749, align 8, !tbaa !123
  %751 = sitofp i64 %.0752 to double
  %752 = fmul double %750, %751
  %753 = getelementptr inbounds i8, ptr %459, i64 120
  store double %752, ptr %753, align 8, !tbaa !176
  br label %754

754:                                              ; preds = %._crit_edge1833.thread, %706
  %755 = getelementptr inbounds i8, ptr %0, i64 32
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #11
  %756 = call ptr @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %755) #11
  store ptr %756, ptr %48, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %49) #11
  %757 = call ptr @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %755) #11
  store ptr %757, ptr %49, align 8
  %758 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull align 8 dereferenceable(8) %49) #11
  br i1 %758, label %.lr.ph1836, label %._crit_edge1837

._crit_edge1837.loopexit:                         ; preds = %.lr.ph1836
  %.promoted.pre = load i64, ptr %12, align 8, !tbaa !5
  br label %._crit_edge1837

._crit_edge1837:                                  ; preds = %._crit_edge1837.loopexit, %754
  %.promoted = phi i64 [ %.promoted.pre, %._crit_edge1837.loopexit ], [ 0, %754 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %50) #11
  %759 = call ptr @_ZNKSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %129) #11
  store ptr %759, ptr %50, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #11
  %760 = call ptr @_ZNKSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %129) #11
  store ptr %760, ptr %51, align 8
  %761 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEES9_(ptr noundef nonnull align 8 dereferenceable(8) %50, ptr noundef nonnull align 8 dereferenceable(8) %51) #11
  br i1 %761, label %.lr.ph1840, label %._crit_edge1841

.lr.ph1836:                                       ; preds = %754, %.lr.ph1836
  %762 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %48) #11
  %763 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %762)
  call void @_ZNK6Halide8Internal13Autoscheduler8LoopNest16compute_featuresERKNS1_11FunctionDAGERKNS_13MachineParamsERK14PerfectHashMapINS3_4Node5StageENS2_5SitesELi4E22PerfectHashMapAsserterEllPKS2_SI_RSH_PlPS9_ISB_NS0_16ScheduleFeaturesELi4ESD_E(ptr noundef nonnull align 8 dereferenceable(196) %763, ptr noundef nonnull align 8 dereferenceable(48) %1, ptr noundef nonnull align 8 dereferenceable(20) %2, ptr noundef nonnull align 8 dereferenceable(32) %3, i64 noundef %128, i64 noundef %450, ptr noundef nonnull %0, ptr noundef nonnull %6, ptr noundef nonnull align 8 dereferenceable(196) %8, ptr noundef nonnull %12, ptr noundef nonnull %10)
  %764 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %48) #11
  %765 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull align 8 dereferenceable(8) %49) #11
  br i1 %765, label %.lr.ph1836, label %._crit_edge1837.loopexit

._crit_edge1841:                                  ; preds = %.lr.ph1840, %._crit_edge1837
  %766 = phi i64 [ %.promoted, %._crit_edge1837 ], [ %781, %.lr.ph1840 ]
  store i64 %766, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #11
  %767 = call ptr @_ZNKSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %129) #11
  store ptr %767, ptr %52, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %53) #11
  %768 = call ptr @_ZNKSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %129) #11
  store ptr %768, ptr %53, align 8
  %769 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEES9_(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull align 8 dereferenceable(8) %53) #11
  br i1 %769, label %.lr.ph1847, label %._crit_edge1848

.lr.ph1847:                                       ; preds = %._crit_edge1841
  %770 = sitofp i64 %766 to double
  br label %788

.lr.ph1840:                                       ; preds = %._crit_edge1837, %.lr.ph1840
  %771 = phi i64 [ %781, %.lr.ph1840 ], [ %.promoted, %._crit_edge1837 ]
  %772 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %50) #11
  %773 = load ptr, ptr %772, align 8, !tbaa !60
  %774 = getelementptr inbounds i8, ptr %773, i64 120
  %775 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %774, i64 noundef 0) #11
  %776 = call noundef nonnull align 8 dereferenceable(312) ptr @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE3getEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull %775)
  %777 = getelementptr inbounds i8, ptr %776, i64 96
  %778 = load double, ptr %777, align 8, !tbaa !132
  %779 = sitofp i64 %771 to double
  %780 = fadd double %778, %779
  %781 = fptosi double %780 to i64
  %782 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %50) #11
  %783 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEES9_(ptr noundef nonnull align 8 dereferenceable(8) %50, ptr noundef nonnull align 8 dereferenceable(8) %51) #11
  br i1 %783, label %.lr.ph1840, label %._crit_edge1841

._crit_edge1848:                                  ; preds = %._crit_edge1845, %._crit_edge1841
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %56) #11
  %784 = call ptr @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %755) #11
  store ptr %784, ptr %56, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %57) #11
  %785 = call ptr @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %755) #11
  store ptr %785, ptr %57, align 8
  %786 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %56, ptr noundef nonnull align 8 dereferenceable(8) %57) #11
  br i1 %786, label %.lr.ph1850, label %._crit_edge1851

.lr.ph1850:                                       ; preds = %._crit_edge1848
  %787 = sitofp i64 %766 to double
  br label %802

788:                                              ; preds = %.lr.ph1847, %._crit_edge1845
  %789 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %52) #11
  %790 = load ptr, ptr %789, align 8, !tbaa !60
  %791 = getelementptr inbounds i8, ptr %790, i64 120
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %54) #11
  %792 = call ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %791) #11
  store ptr %792, ptr %54, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %55) #11
  %793 = call ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %791) #11
  store ptr %793, ptr %55, align 8
  %794 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %54, ptr noundef nonnull align 8 dereferenceable(8) %55) #11
  br i1 %794, label %.lr.ph1844, label %._crit_edge1845

._crit_edge1845:                                  ; preds = %.lr.ph1844, %788
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #11
  %795 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %52) #11
  %796 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEES9_(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull align 8 dereferenceable(8) %53) #11
  br i1 %796, label %788, label %._crit_edge1848

.lr.ph1844:                                       ; preds = %788, %.lr.ph1844
  %797 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %54) #11
  %798 = call noundef nonnull align 8 dereferenceable(312) ptr @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE3getEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull %797)
  %799 = getelementptr inbounds i8, ptr %798, i64 296
  store double %770, ptr %799, align 8, !tbaa !133
  %800 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %54) #11
  %801 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %54, ptr noundef nonnull align 8 dereferenceable(8) %55) #11
  br i1 %801, label %.lr.ph1844, label %._crit_edge1845

._crit_edge1851:                                  ; preds = %814, %._crit_edge1848
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %57) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %56) #11
  br i1 %514, label %817, label %818

802:                                              ; preds = %.lr.ph1850, %814
  %803 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %56) #11
  %804 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %803)
  %805 = getelementptr inbounds i8, ptr %804, i64 168
  %806 = load ptr, ptr %805, align 8, !tbaa !134
  %807 = load ptr, ptr %517, align 8, !tbaa !134
  %.not875 = icmp eq ptr %806, %807
  br i1 %.not875, label %814, label %808

808:                                              ; preds = %802
  %809 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %803)
  %810 = getelementptr inbounds i8, ptr %809, i64 176
  %811 = load ptr, ptr %810, align 8, !tbaa !9
  %812 = call noundef nonnull align 8 dereferenceable(312) ptr @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE3getEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef %811)
  %813 = getelementptr inbounds i8, ptr %812, i64 288
  store double %787, ptr %813, align 8, !tbaa !135
  br label %814

814:                                              ; preds = %808, %802
  %815 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %56) #11
  %816 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %56, ptr noundef nonnull align 8 dereferenceable(8) %57) #11
  br i1 %816, label %802, label %._crit_edge1851

817:                                              ; preds = %._crit_edge1851
  call void @_ZNK6Halide8Internal13Autoscheduler8LoopNest31set_working_set_at_task_featureElP14PerfectHashMapINS1_11FunctionDAG4Node5StageENS0_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE(ptr noundef nonnull align 8 dereferenceable(196) %0, i64 noundef %766, ptr noundef nonnull %10)
  br label %818

818:                                              ; preds = %817, %._crit_edge1851
  br i1 %.not, label %819, label %822

819:                                              ; preds = %818
  %820 = sitofp i64 %766 to double
  %821 = getelementptr inbounds i8, ptr %459, i64 168
  store double %820, ptr %821, align 8, !tbaa !177
  br label %822

822:                                              ; preds = %819, %818
  %823 = load i8, ptr %460, align 8, !tbaa !158, !range !52, !noundef !53
  %824 = trunc nuw i8 %823 to i1
  br i1 %824, label %825, label %864

825:                                              ; preds = %822
  %826 = getelementptr inbounds i8, ptr %459, i64 56
  %827 = load double, ptr %826, align 8, !tbaa !162
  %828 = fcmp ugt double %827, 1.200000e+01
  br i1 %828, label %.sink.split, label %829

829:                                              ; preds = %825
  %830 = load ptr, ptr %515, align 8, !tbaa !134
  %831 = load ptr, ptr %517, align 8, !tbaa !134
  %832 = icmp eq ptr %830, %831
  br i1 %832, label %833, label %.sink.split

833:                                              ; preds = %829
  %834 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Halide8Internal13Autoscheduler8LoopNest10get_boundsEPKNS1_11FunctionDAG4NodeE(ptr noundef nonnull align 8 dereferenceable(196) %7, ptr noundef %831)
  %835 = getelementptr inbounds i8, ptr %6, i64 8
  %836 = call noundef i64 @_ZNKSt6vectorIlSaIlEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %835) #11
  %.not2041 = icmp eq i64 %836, 0
  br i1 %.not2041, label %._crit_edge1856.thread, label %.lr.ph1855

.lr.ph1855:                                       ; preds = %833
  %837 = getelementptr inbounds i8, ptr %6, i64 176
  br label %838

838:                                              ; preds = %.lr.ph1855, %857
  %.07531853 = phi i8 [ 1, %.lr.ph1855 ], [ %.1754, %857 ]
  %.08221852 = phi i64 [ 0, %.lr.ph1855 ], [ %858, %857 ]
  %839 = load ptr, ptr %451, align 8, !tbaa !9
  %840 = getelementptr inbounds i8, ptr %839, i64 16
  %841 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %840, i64 noundef %.08221852) #11
  %842 = getelementptr inbounds i8, ptr %841, i64 33
  %843 = load i8, ptr %842, align 1, !tbaa !161, !range !52, !noundef !53
  %844 = trunc nuw i8 %843 to i1
  br i1 %844, label %857, label %845

845:                                              ; preds = %838
  %846 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %834)
  %847 = load ptr, ptr %837, align 8, !tbaa !9
  %848 = getelementptr inbounds i8, ptr %847, i64 8
  %849 = load i32, ptr %848, align 8, !tbaa !142
  %850 = trunc i64 %.08221852 to i32
  %851 = call noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents5loopsEii(ptr noundef nonnull align 8 dereferenceable(16) %846, i32 noundef %849, i32 noundef %850)
  %852 = call noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler4Span15constant_extentEv(ptr noundef nonnull align 8 dereferenceable(17) %851)
  %853 = and i8 %.07531853, 1
  %854 = icmp ne i8 %853, 0
  %855 = select i1 %852, i1 %854, i1 false
  %856 = zext i1 %855 to i8
  br label %857

857:                                              ; preds = %838, %845
  %.1754 = phi i8 [ %.07531853, %838 ], [ %856, %845 ]
  %858 = add nuw i64 %.08221852, 1
  %859 = call noundef i64 @_ZNKSt6vectorIlSaIlEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %835) #11
  %860 = icmp ult i64 %858, %859
  br i1 %860, label %838, label %._crit_edge1856, !llvm.loop !178

._crit_edge1856:                                  ; preds = %857
  %861 = trunc nuw i8 %.1754 to i1
  br i1 %861, label %._crit_edge1856.thread, label %.sink.split

._crit_edge1856.thread:                           ; preds = %833, %._crit_edge1856
  %862 = load double, ptr %826, align 8, !tbaa !162
  br label %.sink.split

.sink.split:                                      ; preds = %._crit_edge1856, %829, %825, %._crit_edge1856.thread
  %.sink2096 = phi double [ %862, %._crit_edge1856.thread ], [ 1.000000e+00, %825 ], [ 1.000000e+00, %829 ], [ 1.000000e+00, %._crit_edge1856 ]
  %863 = getelementptr inbounds i8, ptr %459, i64 64
  store double %.sink2096, ptr %863, align 8, !tbaa !179
  br label %864

864:                                              ; preds = %.sink.split, %822
  %865 = load i64, ptr %9, align 8, !tbaa !5
  %866 = add nsw i64 %865, %766
  store i64 %866, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %58) #11
  store i64 0, ptr %58, align 8, !tbaa !5
  %867 = load i8, ptr %460, align 8, !tbaa !158, !range !52, !noundef !53
  %868 = trunc nuw i8 %867 to i1
  %brmerge = or i1 %.not, %868
  br i1 %brmerge, label %869, label %1375

869:                                              ; preds = %864
  %870 = load ptr, ptr %451, align 8, !tbaa !9
  %871 = call noundef nonnull align 8 dereferenceable(41) ptr @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS2_8LoopNest5SitesELi4E22PerfectHashMapAsserterE3getEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef %870)
  %872 = load i8, ptr %460, align 8, !tbaa !158, !range !52, !noundef !53
  %873 = trunc nuw i8 %872 to i1
  %874 = getelementptr inbounds i8, ptr %871, i64 8
  %875 = load ptr, ptr %874, align 8
  %876 = select i1 %873, ptr %6, ptr %875
  %877 = getelementptr inbounds i8, ptr %871, i64 32
  %878 = load ptr, ptr %877, align 8, !tbaa !180
  %879 = sitofp i64 %4 to double
  %880 = load double, ptr %459, align 8
  %881 = select i1 %873, double %879, double %880
  %882 = fptosi double %881 to i64
  %.not836 = icmp eq i64 %882, 0
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %59) #11
  br i1 %.not836, label %.critedge906, label %.critedge907

.critedge906:                                     ; preds = %869
  call void @llvm.lifetime.start.p0(i64 384, ptr nonnull %60) #11
  call void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %60, ptr noundef nonnull @.str.3, i32 noundef 590, ptr noundef nonnull @.str.6, i32 noundef 0)
  %883 = call noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %60)
  call void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %59, ptr noundef nonnull align 8 dereferenceable(380) %883)
  call void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %60)
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %60) #11
  br label %.critedge907

.critedge907:                                     ; preds = %869, %.critedge906
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %59) #11
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %61) #11
  call void @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS7_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %61) #11
  %884 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS7_EE12emplace_backIJRKS7_EEERS7_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %61, ptr noundef nonnull align 8 dereferenceable(8) %451)
          to label %885 unwind label %898

885:                                              ; preds = %.critedge907
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %62) #11
  call void @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %62) #11
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %63) #11
  call void @_ZNSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %63) #11
  %886 = call noundef zeroext i1 @_ZNKSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS7_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %61) #11
  br i1 %886, label %._crit_edge1991, label %.lr.ph1990

.lr.ph1990:                                       ; preds = %885
  %887 = getelementptr inbounds i8, ptr %0, i64 192
  %888 = getelementptr inbounds i8, ptr %459, i64 64
  %889 = getelementptr inbounds i8, ptr %6, i64 8
  br label %890

890:                                              ; preds = %.lr.ph1990, %._crit_edge1960
  %.07561983 = phi double [ 0.000000e+00, %.lr.ph1990 ], [ %.1757.lcssa, %._crit_edge1960 ]
  %.07631982 = phi double [ 0.000000e+00, %.lr.ph1990 ], [ %.1764.lcssa, %._crit_edge1960 ]
  %.07711981 = phi double [ 0.000000e+00, %.lr.ph1990 ], [ %.1772.lcssa, %._crit_edge1960 ]
  %.07791980 = phi double [ 0.000000e+00, %.lr.ph1990 ], [ %.1780.lcssa, %._crit_edge1960 ]
  %.07871979 = phi double [ 0.000000e+00, %.lr.ph1990 ], [ %.1788.lcssa, %._crit_edge1960 ]
  %.07951978 = phi double [ 0.000000e+00, %.lr.ph1990 ], [ %.1796.lcssa, %._crit_edge1960 ]
  %.08031977 = phi double [ 0.000000e+00, %.lr.ph1990 ], [ %.1804.lcssa, %._crit_edge1960 ]
  %.08111976 = phi i64 [ 0, %.lr.ph1990 ], [ %.1812.lcssa, %._crit_edge1960 ]
  %.08161975 = phi i64 [ 0, %.lr.ph1990 ], [ %.1817.lcssa, %._crit_edge1960 ]
  %891 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS7_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %61) #11
  %892 = load ptr, ptr %891, align 8, !tbaa !60
  call void @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS7_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %61) #11
  %893 = getelementptr inbounds i8, ptr %892, i64 1304
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %64) #11
  %894 = call ptr @_ZNKSt6vectorIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %893) #11
  store ptr %894, ptr %64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %65) #11
  %895 = call ptr @_ZNKSt6vectorIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %893) #11
  store ptr %895, ptr %65, align 8
  %896 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %64, ptr noundef nonnull align 8 dereferenceable(8) %65) #11
  br i1 %896, label %.lr.ph1959, label %._crit_edge1960

._crit_edge1960:                                  ; preds = %1367, %890
  %.1817.lcssa = phi i64 [ %.08161975, %890 ], [ %.4820, %1367 ]
  %.1812.lcssa = phi i64 [ %.08111976, %890 ], [ %.3814, %1367 ]
  %.1804.lcssa = phi double [ %.08031977, %890 ], [ %.6809, %1367 ]
  %.1796.lcssa = phi double [ %.07951978, %890 ], [ %.6801, %1367 ]
  %.1788.lcssa = phi double [ %.07871979, %890 ], [ %.6793, %1367 ]
  %.1780.lcssa = phi double [ %.07791980, %890 ], [ %.6785, %1367 ]
  %.1772.lcssa = phi double [ %.07711981, %890 ], [ %.6777, %1367 ]
  %.1764.lcssa = phi double [ %.07631982, %890 ], [ %.6769, %1367 ]
  %.1757.lcssa = phi double [ %.07561983, %890 ], [ %.5761, %1367 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %65) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %64) #11
  %897 = call noundef zeroext i1 @_ZNKSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS7_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %61) #11
  br i1 %897, label %._crit_edge1991.loopexit, label %890, !llvm.loop !181

898:                                              ; preds = %.critedge907
  %899 = landingpad { ptr, i32 }
          cleanup
  br label %1374

.lr.ph1959:                                       ; preds = %890, %1367
  %.17571952 = phi double [ %.5761, %1367 ], [ %.07561983, %890 ]
  %.17641951 = phi double [ %.6769, %1367 ], [ %.07631982, %890 ]
  %.17721950 = phi double [ %.6777, %1367 ], [ %.07711981, %890 ]
  %.17801949 = phi double [ %.6785, %1367 ], [ %.07791980, %890 ]
  %.17881948 = phi double [ %.6793, %1367 ], [ %.07871979, %890 ]
  %.17961947 = phi double [ %.6801, %1367 ], [ %.07951978, %890 ]
  %.18041946 = phi double [ %.6809, %1367 ], [ %.08031977, %890 ]
  %.18121945 = phi i64 [ %.3814, %1367 ], [ %.08111976, %890 ]
  %.18171944 = phi i64 [ %.4820, %1367 ], [ %.08161975, %890 ]
  %900 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %64) #11
  %901 = load ptr, ptr %900, align 8, !tbaa !60
  %902 = getelementptr inbounds i8, ptr %901, i64 24
  %903 = load ptr, ptr %902, align 8, !tbaa !166
  %904 = getelementptr inbounds i8, ptr %903, i64 120
  %905 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %904, i64 noundef 0) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %66) #11
  %906 = invoke noundef zeroext i1 @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS2_8LoopNest5SitesELi4E22PerfectHashMapAsserterE8containsEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull %905)
          to label %907 unwind label %946

907:                                              ; preds = %.lr.ph1959
  br i1 %906, label %.critedge910, label %908

908:                                              ; preds = %907
  call void @llvm.lifetime.start.p0(i64 384, ptr nonnull %67) #11
  invoke void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %67, ptr noundef nonnull @.str.3, i32 noundef 601, ptr noundef nonnull @.str.7, i32 noundef 0)
          to label %909 unwind label %948

909:                                              ; preds = %908
  %910 = call noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %67)
  %911 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA19_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %910, ptr noundef nonnull align 1 dereferenceable(19) @.str.8)
          to label %912 unwind label %950

912:                                              ; preds = %909
  %913 = load ptr, ptr %902, align 8, !tbaa !166
  %914 = getelementptr inbounds i8, ptr %913, i64 8
  %915 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide8Internal8Function4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24) %914)
          to label %916 unwind label %950

916:                                              ; preds = %912
  %917 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %911, ptr noundef nonnull align 8 dereferenceable(32) %915)
          to label %918 unwind label %950

918:                                              ; preds = %916
  %919 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA2_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %917, ptr noundef nonnull align 1 dereferenceable(2) @.str.9)
          to label %920 unwind label %950

920:                                              ; preds = %918
  call void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %66, ptr noundef nonnull align 8 dereferenceable(380) %919)
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %67)
          to label %.critedge909 unwind label %948

.critedge909:                                     ; preds = %920
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %67) #11
  br label %.critedge910

.critedge910:                                     ; preds = %907, %.critedge909
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %66) #11
  %921 = load ptr, ptr %902, align 8, !tbaa !166
  %922 = getelementptr inbounds i8, ptr %921, i64 120
  %923 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %922, i64 noundef 0) #11
  %924 = invoke noundef nonnull align 8 dereferenceable(41) ptr @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS2_8LoopNest5SitesELi4E22PerfectHashMapAsserterE3getEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull %923)
          to label %925 unwind label %953

925:                                              ; preds = %.critedge910
  %926 = load ptr, ptr %902, align 8, !tbaa !166
  %927 = getelementptr inbounds i8, ptr %926, i64 185
  %928 = load i8, ptr %927, align 1, !tbaa !61, !range !52, !noundef !53
  %929 = trunc nuw i8 %928 to i1
  %930 = getelementptr inbounds i8, ptr %924, i64 16
  %931 = load ptr, ptr %930, align 8
  %932 = icmp ne ptr %931, null
  %933 = select i1 %929, i1 true, i1 %932
  %934 = load i8, ptr %460, align 8, !tbaa !158, !range !52, !noundef !53
  %935 = trunc nuw i8 %934 to i1
  br i1 %935, label %936, label %997

936:                                              ; preds = %925
  %937 = getelementptr inbounds i8, ptr %901, i64 32
  %938 = load ptr, ptr %937, align 8, !tbaa !146
  %939 = load ptr, ptr %451, align 8, !tbaa !9
  %940 = icmp eq ptr %938, %939
  br i1 %940, label %941, label %962

941:                                              ; preds = %936
  %942 = getelementptr inbounds i8, ptr %901, i64 48
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %68) #11
  %943 = call ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler12LoadJacobianESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %942) #11
  store ptr %943, ptr %68, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %69) #11
  %944 = call ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler12LoadJacobianESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %942) #11
  store ptr %944, ptr %69, align 8
  %945 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal13Autoscheduler12LoadJacobianESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %68, ptr noundef nonnull align 8 dereferenceable(8) %69) #11
  br i1 %945, label %.lr.ph1865, label %._crit_edge1866

._crit_edge1866:                                  ; preds = %957, %941
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %69) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %68) #11
  br label %997

946:                                              ; preds = %.lr.ph1959
  %947 = landingpad { ptr, i32 }
          cleanup
  br label %1371

948:                                              ; preds = %920, %908
  %949 = landingpad { ptr, i32 }
          cleanup
  br label %952

950:                                              ; preds = %918, %916, %912, %909
  %951 = landingpad { ptr, i32 }
          cleanup
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %67)
          to label %952 unwind label %1524

952:                                              ; preds = %950, %948
  %.pn = phi { ptr, i32 } [ %949, %948 ], [ %951, %950 ]
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %67) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %66) #11
  br label %1371

953:                                              ; preds = %.critedge910
  %954 = landingpad { ptr, i32 }
          cleanup
  br label %1371

.lr.ph1865:                                       ; preds = %941, %957
  %955 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal13Autoscheduler12LoadJacobianESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %68) #11
  %956 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EE12emplace_backIJRKS4_RKS7_EEERS8_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %62, ptr noundef nonnull align 8 dereferenceable(32) %955, ptr noundef nonnull align 8 dereferenceable(8) %902)
          to label %957 unwind label %960

957:                                              ; preds = %.lr.ph1865
  %958 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal13Autoscheduler12LoadJacobianESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %68) #11
  %959 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal13Autoscheduler12LoadJacobianESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %68, ptr noundef nonnull align 8 dereferenceable(8) %69) #11
  br i1 %959, label %.lr.ph1865, label %._crit_edge1866

960:                                              ; preds = %.lr.ph1865
  %961 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %69) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %68) #11
  br label %1371

962:                                              ; preds = %936
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %70) #11
  call void @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %70) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %71) #11
  %963 = call ptr @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %62) #11
  store ptr %963, ptr %71, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %72) #11
  %964 = call ptr @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %62) #11
  store ptr %964, ptr %72, align 8
  %965 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS4_11FunctionDAG4NodeEESt6vectorIS9_SaIS9_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %71, ptr noundef nonnull align 8 dereferenceable(8) %72) #11
  br i1 %965, label %.lr.ph1862, label %._crit_edge1863

.lr.ph1862:                                       ; preds = %962
  %966 = getelementptr inbounds i8, ptr %901, i64 48
  br label %967

._crit_edge1863:                                  ; preds = %993, %962
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %72) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %71) #11
  call void @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EE4swapERSA_(ptr noundef nonnull align 8 dereferenceable(24) %62, ptr noundef nonnull align 8 dereferenceable(24) %70) #11
  call void @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %70) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %70) #11
  br label %997

967:                                              ; preds = %.lr.ph1862, %993
  %968 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS4_11FunctionDAG4NodeEESt6vectorIS9_SaIS9_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %71) #11
  %969 = load ptr, ptr %937, align 8, !tbaa !146
  %970 = load ptr, ptr %969, align 8, !tbaa !136
  %971 = getelementptr inbounds i8, ptr %968, i64 32
  %972 = load ptr, ptr %971, align 8, !tbaa !182
  %973 = icmp eq ptr %970, %972
  br i1 %973, label %974, label %989

974:                                              ; preds = %967
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %73) #11
  %975 = call ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler12LoadJacobianESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %966) #11
  store ptr %975, ptr %73, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %74) #11
  %976 = call ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler12LoadJacobianESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %966) #11
  store ptr %976, ptr %74, align 8
  %977 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal13Autoscheduler12LoadJacobianESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %73, ptr noundef nonnull align 8 dereferenceable(8) %74) #11
  br i1 %977, label %.lr.ph1859, label %._crit_edge1860

._crit_edge1860:                                  ; preds = %981, %974
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %74) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #11
  br label %993

.lr.ph1859:                                       ; preds = %974, %981
  %978 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal13Autoscheduler12LoadJacobianESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %73) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %75) #11
  invoke void @_ZNK6Halide8Internal13Autoscheduler12LoadJacobianmlERKS2_(ptr dead_on_unwind nonnull writable sret(%"class.Halide::Internal::Autoscheduler::LoadJacobian") align 8 %75, ptr noundef nonnull align 8 dereferenceable(32) %978, ptr noundef nonnull align 8 dereferenceable(32) %968)
          to label %979 unwind label %984

979:                                              ; preds = %.lr.ph1859
  %980 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EE12emplace_backIJRS4_RKS7_EEERS8_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %70, ptr noundef nonnull align 8 dereferenceable(32) %75, ptr noundef nonnull align 8 dereferenceable(8) %902)
          to label %981 unwind label %986

981:                                              ; preds = %979
  call void @_ZN6Halide8Internal13Autoscheduler12LoadJacobianD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %75) #11
  %982 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal13Autoscheduler12LoadJacobianESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %73) #11
  %983 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal13Autoscheduler12LoadJacobianESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %73, ptr noundef nonnull align 8 dereferenceable(8) %74) #11
  br i1 %983, label %.lr.ph1859, label %._crit_edge1860

984:                                              ; preds = %.lr.ph1859
  %985 = landingpad { ptr, i32 }
          cleanup
  br label %988

986:                                              ; preds = %979
  %987 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN6Halide8Internal13Autoscheduler12LoadJacobianD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #11
  br label %988

988:                                              ; preds = %986, %984
  %.pn839 = phi { ptr, i32 } [ %987, %986 ], [ %985, %984 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %75) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %74) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #11
  br label %996

989:                                              ; preds = %967
  %990 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EE12emplace_backIJS8_EEERS8_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %70, ptr noundef nonnull align 8 dereferenceable(40) %968)
          to label %993 unwind label %991

991:                                              ; preds = %989
  %992 = landingpad { ptr, i32 }
          cleanup
  br label %996

993:                                              ; preds = %989, %._crit_edge1860
  %994 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS4_11FunctionDAG4NodeEESt6vectorIS9_SaIS9_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %71) #11
  %995 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS4_11FunctionDAG4NodeEESt6vectorIS9_SaIS9_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %71, ptr noundef nonnull align 8 dereferenceable(8) %72) #11
  br i1 %995, label %967, label %._crit_edge1863

996:                                              ; preds = %991, %988
  %.pn839.pn = phi { ptr, i32 } [ %.pn839, %988 ], [ %992, %991 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %72) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %71) #11
  call void @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %70) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %70) #11
  br label %1371

997:                                              ; preds = %._crit_edge1866, %._crit_edge1863, %925
  %998 = getelementptr inbounds i8, ptr %924, i64 40
  %999 = load i8, ptr %998, align 8, !tbaa !189, !range !52, !noundef !53
  %1000 = trunc nuw i8 %999 to i1
  br i1 %1000, label %1001, label %1009

1001:                                             ; preds = %997
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %76) #11
  %1002 = load ptr, ptr %902, align 8, !tbaa !166
  %1003 = getelementptr inbounds i8, ptr %1002, i64 120
  %1004 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1003, i64 noundef 0) #11
  store ptr %1004, ptr %76, align 8, !tbaa !60
  %1005 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS7_EE12emplace_backIJPS5_EEERS7_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %61, ptr noundef nonnull align 8 dereferenceable(8) %76)
          to label %1006 unwind label %1007

1006:                                             ; preds = %1001
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %76) #11
  br label %1367

1007:                                             ; preds = %1001
  %1008 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %76) #11
  br label %1371

1009:                                             ; preds = %997
  %1010 = load ptr, ptr %924, align 8, !tbaa !190
  %1011 = getelementptr inbounds i8, ptr %924, i64 8
  %1012 = load ptr, ptr %1011, align 8, !tbaa !167
  %1013 = load ptr, ptr %902, align 8, !tbaa !166
  %1014 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Halide8Internal13Autoscheduler8LoopNest10get_boundsEPKNS1_11FunctionDAG4NodeE(ptr noundef nonnull align 8 dereferenceable(196) %876, ptr noundef %1013)
          to label %1015 unwind label %1041

1015:                                             ; preds = %1009
  %1016 = load ptr, ptr %902, align 8, !tbaa !166
  %1017 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Halide8Internal13Autoscheduler8LoopNest10get_boundsEPKNS1_11FunctionDAG4NodeE(ptr noundef nonnull align 8 dereferenceable(196) %878, ptr noundef %1016)
          to label %1018 unwind label %1043

1018:                                             ; preds = %1015
  %1019 = load ptr, ptr %902, align 8, !tbaa !166
  %1020 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Halide8Internal13Autoscheduler8LoopNest10get_boundsEPKNS1_11FunctionDAG4NodeE(ptr noundef nonnull align 8 dereferenceable(196) %1010, ptr noundef %1019)
          to label %1021 unwind label %1045

1021:                                             ; preds = %1018
  %1022 = load ptr, ptr %902, align 8, !tbaa !166
  %1023 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Halide8Internal13Autoscheduler8LoopNest10get_boundsEPKNS1_11FunctionDAG4NodeE(ptr noundef nonnull align 8 dereferenceable(196) %1012, ptr noundef %1022)
          to label %1024 unwind label %1047

1024:                                             ; preds = %1021
  %1025 = load ptr, ptr %902, align 8, !tbaa !166
  %1026 = getelementptr inbounds i8, ptr %1025, i64 32
  %1027 = load double, ptr %1026, align 8, !tbaa !123
  %1028 = fptosi double %1027 to i64
  %1029 = getelementptr inbounds i8, ptr %1025, i64 185
  %1030 = load i8, ptr %1029, align 1, !tbaa !61, !range !52, !noundef !53
  %1031 = trunc nuw i8 %1030 to i1
  br i1 %1031, label %1032, label %1055

1032:                                             ; preds = %1024
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %77) #11
  %1033 = call noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler8LoopNest7is_rootEv(ptr noundef nonnull align 8 dereferenceable(196) %1012)
  br i1 %1033, label %.critedge913, label %1034

1034:                                             ; preds = %1032
  call void @llvm.lifetime.start.p0(i64 384, ptr nonnull %78) #11
  invoke void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %78, ptr noundef nonnull @.str.3, i32 noundef 663, ptr noundef nonnull @.str.10, i32 noundef 0)
          to label %1035 unwind label %1051

1035:                                             ; preds = %1034
  %1036 = call noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %78)
  call void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %77, ptr noundef nonnull align 8 dereferenceable(380) %1036)
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %78)
          to label %.critedge912 unwind label %1051

.critedge912:                                     ; preds = %1035
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %78) #11
  br label %.critedge913

.critedge913:                                     ; preds = %1032, %.critedge912
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %77) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %79) #11
  %1037 = call noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler8LoopNest7is_rootEv(ptr noundef nonnull align 8 dereferenceable(196) %1010)
  br i1 %1037, label %.critedge916, label %1038

1038:                                             ; preds = %.critedge913
  call void @llvm.lifetime.start.p0(i64 384, ptr nonnull %80) #11
  invoke void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %80, ptr noundef nonnull @.str.3, i32 noundef 664, ptr noundef nonnull @.str.11, i32 noundef 0)
          to label %1039 unwind label %1053

1039:                                             ; preds = %1038
  %1040 = call noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %80)
  call void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %79, ptr noundef nonnull align 8 dereferenceable(380) %1040)
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %80)
          to label %.critedge915 unwind label %1053

.critedge915:                                     ; preds = %1039
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %80) #11
  br label %.critedge916

.critedge916:                                     ; preds = %.critedge913, %.critedge915
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %79) #11
  br label %1055

1041:                                             ; preds = %1009
  %1042 = landingpad { ptr, i32 }
          cleanup
  br label %1371

1043:                                             ; preds = %1015
  %1044 = landingpad { ptr, i32 }
          cleanup
  br label %1371

1045:                                             ; preds = %1018
  %1046 = landingpad { ptr, i32 }
          cleanup
  br label %1371

1047:                                             ; preds = %1021
  %1048 = landingpad { ptr, i32 }
          cleanup
  br label %1371

1049:                                             ; preds = %1208
  %1050 = landingpad { ptr, i32 }
          cleanup
  br label %1371

1051:                                             ; preds = %1035, %1034
  %1052 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %78) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %77) #11
  br label %1371

1053:                                             ; preds = %1039, %1038
  %1054 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %80) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %79) #11
  br label %1371

1055:                                             ; preds = %.critedge916, %1024
  %1056 = load i8, ptr %460, align 8, !tbaa !158, !range !52, !noundef !53
  %1057 = trunc nuw i8 %1056 to i1
  br i1 %1057, label %1058, label %1201

1058:                                             ; preds = %1055
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %81) #11
  %1059 = call ptr @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %62) #11
  store ptr %1059, ptr %81, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %82) #11
  %1060 = call ptr @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %62) #11
  store ptr %1060, ptr %82, align 8
  %1061 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS4_11FunctionDAG4NodeEESt6vectorIS9_SaIS9_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %81, ptr noundef nonnull align 8 dereferenceable(8) %82) #11
  br i1 %1061, label %.lr.ph1913, label %._crit_edge1914

.lr.ph1913:                                       ; preds = %1058
  %.not917 = xor i1 %933, true
  br label %1062

._crit_edge1914:                                  ; preds = %1197, %1058
  %.2805.lcssa = phi double [ %.18041946, %1058 ], [ %.4807, %1197 ]
  %.2797.lcssa = phi double [ %.17961947, %1058 ], [ %.4799, %1197 ]
  %.2789.lcssa = phi double [ %.17881948, %1058 ], [ %.4791, %1197 ]
  %.2781.lcssa = phi double [ %.17801949, %1058 ], [ %.4783, %1197 ]
  %.2773.lcssa = phi double [ %.17721950, %1058 ], [ %.4775, %1197 ]
  %.2765.lcssa = phi double [ %.17641951, %1058 ], [ %.4767, %1197 ]
  %.2758.lcssa = phi double [ %.17571952, %1058 ], [ %.3759, %1197 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %82) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %81) #11
  br label %1201

1062:                                             ; preds = %.lr.ph1913, %1197
  %.27581906 = phi double [ %.17571952, %.lr.ph1913 ], [ %.3759, %1197 ]
  %.27651905 = phi double [ %.17641951, %.lr.ph1913 ], [ %.4767, %1197 ]
  %.27731904 = phi double [ %.17721950, %.lr.ph1913 ], [ %.4775, %1197 ]
  %.27811903 = phi double [ %.17801949, %.lr.ph1913 ], [ %.4783, %1197 ]
  %.27891902 = phi double [ %.17881948, %.lr.ph1913 ], [ %.4791, %1197 ]
  %.27971901 = phi double [ %.17961947, %.lr.ph1913 ], [ %.4799, %1197 ]
  %.28051900 = phi double [ %.18041946, %.lr.ph1913 ], [ %.4807, %1197 ]
  %1063 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS4_11FunctionDAG4NodeEESt6vectorIS9_SaIS9_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %81) #11
  %1064 = getelementptr inbounds i8, ptr %1063, i64 32
  %1065 = load ptr, ptr %1064, align 8, !tbaa !182
  %1066 = load ptr, ptr %902, align 8, !tbaa !166
  %.not860 = icmp eq ptr %1065, %1066
  br i1 %.not860, label %1067, label %1197

1067:                                             ; preds = %1062
  %1068 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler12LoadJacobian5countEv(ptr noundef nonnull align 8 dereferenceable(32) %1063)
  %1069 = sitofp i64 %1068 to double
  %1070 = load ptr, ptr %902, align 8, !tbaa !166
  %1071 = getelementptr inbounds i8, ptr %1070, i64 185
  %1072 = load i8, ptr %1071, align 1, !tbaa !61, !range !52, !noundef !53
  %1073 = trunc nuw i8 %1072 to i1
  %brmerge918 = select i1 %1073, i1 true, i1 %.not917
  %not. = xor i1 %1073, true
  %.mux = sext i1 %not. to i32
  br i1 %brmerge918, label %1078, label %1074

1074:                                             ; preds = %1067
  %1075 = load ptr, ptr %930, align 8, !tbaa !98
  %1076 = getelementptr inbounds i8, ptr %1075, i64 188
  %1077 = load i32, ptr %1076, align 4, !tbaa !126
  br label %1078

1078:                                             ; preds = %1067, %1074
  %1079 = phi i32 [ %.mux, %1067 ], [ %1077, %1074 ]
  %1080 = load i32, ptr %887, align 8, !tbaa !100
  %1081 = icmp sgt i32 %1080, -1
  br i1 %1081, label %1082, label %.loopexit972

1082:                                             ; preds = %1078
  %1083 = getelementptr inbounds i8, ptr %1070, i64 180
  %1084 = load i32, ptr %1083, align 4, !tbaa !125
  %1085 = icmp sgt i32 %1084, 0
  br i1 %933, label %.preheader971, label %.preheader973

.preheader973:                                    ; preds = %1082
  br i1 %1085, label %.lr.ph1873, label %._crit_edge1874

.preheader971:                                    ; preds = %1082
  br i1 %1085, label %.lr.ph1887, label %.loopexit972

._crit_edge1874:                                  ; preds = %1119, %.preheader973
  %.sroa.070.3.lcssa = phi i32 [ 0, %.preheader973 ], [ %.sroa.070.4, %1119 ]
  %.sroa.11.3.lcssa = phi i32 [ 0, %.preheader973 ], [ %.sroa.11.4, %1119 ]
  %.sroa.14.3.lcssa = phi i32 [ 0, %.preheader973 ], [ %.sroa.14.4, %1119 ]
  %.sroa.17.3.lcssa = phi i32 [ 0, %.preheader973 ], [ %.sroa.17.4, %1119 ]
  %.sroa.20.3.lcssa = phi i32 [ 0, %.preheader973 ], [ %.sroa.20.4, %1119 ]
  %.lcssa976 = phi i32 [ %1084, %.preheader973 ], [ %1123, %1119 ]
  %1086 = icmp eq i32 %.sroa.070.3.lcssa, %.lcssa976
  %1087 = add nsw i32 %.lcssa976, -1
  %1088 = icmp eq i32 %.sroa.070.3.lcssa, %1087
  %1089 = icmp eq i32 %.sroa.11.3.lcssa, 1
  %1090 = select i1 %1088, i1 %1089, i1 false
  %1091 = icmp eq i32 %.sroa.14.3.lcssa, 1
  %1092 = select i1 %1088, i1 %1091, i1 false
  %1093 = icmp eq i32 %.sroa.17.3.lcssa, 1
  %1094 = select i1 %1088, i1 %1093, i1 false
  %1095 = icmp eq i32 %.sroa.20.3.lcssa, 1
  %1096 = select i1 %1088, i1 %1095, i1 false
  br label %.loopexit972

.lr.ph1873:                                       ; preds = %.preheader973, %1119
  %.06571872 = phi i32 [ %1120, %1119 ], [ 0, %.preheader973 ]
  %.sroa.20.31871 = phi i32 [ %.sroa.20.4, %1119 ], [ 0, %.preheader973 ]
  %.sroa.17.31870 = phi i32 [ %.sroa.17.4, %1119 ], [ 0, %.preheader973 ]
  %.sroa.14.31869 = phi i32 [ %.sroa.14.4, %1119 ], [ 0, %.preheader973 ]
  %.sroa.11.31868 = phi i32 [ %.sroa.11.4, %1119 ], [ 0, %.preheader973 ]
  %.sroa.070.31867 = phi i32 [ %.sroa.070.4, %1119 ], [ 0, %.preheader973 ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %83) #11
  %1097 = load i32, ptr %887, align 8, !tbaa !100
  invoke void @_ZNK6Halide8Internal13Autoscheduler12LoadJacobianclEii(ptr dead_on_unwind nonnull writable sret(%"struct.Halide::Internal::Autoscheduler::OptionalRational") align 8 %83, ptr noundef nonnull align 8 dereferenceable(32) %1063, i32 noundef %.06571872, i32 noundef %1097)
          to label %1098 unwind label %1102

1098:                                             ; preds = %.lr.ph1873
  %1099 = call noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler16OptionalRationaleqEi(ptr noundef nonnull align 8 dereferenceable(24) %83, i32 noundef 0)
  br i1 %1099, label %1100, label %1104

1100:                                             ; preds = %1098
  %1101 = add nsw i32 %.sroa.070.31867, 1
  br label %1119

1102:                                             ; preds = %.lr.ph1873
  %1103 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %83) #11
  br label %1200

1104:                                             ; preds = %1098
  %1105 = call noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler16OptionalRationaleqEi(ptr noundef nonnull align 8 dereferenceable(24) %83, i32 noundef 1)
  br i1 %1105, label %1106, label %1108

1106:                                             ; preds = %1104
  %1107 = add nsw i32 %.sroa.11.31868, 1
  br label %1119

1108:                                             ; preds = %1104
  %1109 = call noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler16OptionalRationaleqEi(ptr noundef nonnull align 8 dereferenceable(24) %83, i32 noundef 2)
  br i1 %1109, label %1110, label %1112

1110:                                             ; preds = %1108
  %1111 = add nsw i32 %.sroa.14.31869, 1
  br label %1119

1112:                                             ; preds = %1108
  %1113 = call noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler16OptionalRationaleqEi(ptr noundef nonnull align 8 dereferenceable(24) %83, i32 noundef 3)
  br i1 %1113, label %1114, label %1116

1114:                                             ; preds = %1112
  %1115 = add nsw i32 %.sroa.17.31870, 1
  br label %1119

1116:                                             ; preds = %1112
  %1117 = call noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler16OptionalRationaleqEi(ptr noundef nonnull align 8 dereferenceable(24) %83, i32 noundef 4)
  %1118 = zext i1 %1117 to i32
  %spec.select919 = add nsw i32 %.sroa.20.31871, %1118
  br label %1119

1119:                                             ; preds = %1116, %1106, %1114, %1110, %1100
  %.sroa.070.4 = phi i32 [ %1101, %1100 ], [ %.sroa.070.31867, %1106 ], [ %.sroa.070.31867, %1110 ], [ %.sroa.070.31867, %1114 ], [ %.sroa.070.31867, %1116 ]
  %.sroa.11.4 = phi i32 [ %.sroa.11.31868, %1100 ], [ %1107, %1106 ], [ %.sroa.11.31868, %1110 ], [ %.sroa.11.31868, %1114 ], [ %.sroa.11.31868, %1116 ]
  %.sroa.14.4 = phi i32 [ %.sroa.14.31869, %1100 ], [ %.sroa.14.31869, %1106 ], [ %1111, %1110 ], [ %.sroa.14.31869, %1114 ], [ %.sroa.14.31869, %1116 ]
  %.sroa.17.4 = phi i32 [ %.sroa.17.31870, %1100 ], [ %.sroa.17.31870, %1106 ], [ %.sroa.17.31870, %1110 ], [ %1115, %1114 ], [ %.sroa.17.31870, %1116 ]
  %.sroa.20.4 = phi i32 [ %.sroa.20.31871, %1100 ], [ %.sroa.20.31871, %1106 ], [ %.sroa.20.31871, %1110 ], [ %.sroa.20.31871, %1114 ], [ %spec.select919, %1116 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %83) #11
  %1120 = add nuw nsw i32 %.06571872, 1
  %1121 = load ptr, ptr %902, align 8, !tbaa !166
  %1122 = getelementptr inbounds i8, ptr %1121, i64 180
  %1123 = load i32, ptr %1122, align 4, !tbaa !125
  %1124 = icmp slt i32 %1120, %1123
  br i1 %1124, label %.lr.ph1873, label %._crit_edge1874, !llvm.loop !191

.lr.ph1887:                                       ; preds = %.preheader971, %1126
  %.06561886 = phi i32 [ %1138, %1126 ], [ 0, %.preheader971 ]
  %.06591885 = phi i1 [ %1137, %1126 ], [ true, %.preheader971 ]
  %.06621884 = phi i1 [ %1135, %1126 ], [ true, %.preheader971 ]
  %.06651883 = phi i1 [ %1133, %1126 ], [ true, %.preheader971 ]
  %.06681882 = phi i1 [ %1131, %1126 ], [ true, %.preheader971 ]
  %.06711881 = phi i1 [ %1128, %1126 ], [ true, %.preheader971 ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %84) #11
  %1125 = load i32, ptr %887, align 8, !tbaa !100
  invoke void @_ZNK6Halide8Internal13Autoscheduler12LoadJacobianclEii(ptr dead_on_unwind nonnull writable sret(%"struct.Halide::Internal::Autoscheduler::OptionalRational") align 8 %84, ptr noundef nonnull align 8 dereferenceable(32) %1063, i32 noundef %.06561886, i32 noundef %1125)
          to label %1126 unwind label %1143

1126:                                             ; preds = %.lr.ph1887
  %1127 = call noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler16OptionalRationaleqEi(ptr noundef nonnull align 8 dereferenceable(24) %84, i32 noundef 0)
  %1128 = select i1 %1127, i1 %.06711881, i1 false
  %1129 = icmp eq i32 %.06561886, %1079
  %. = zext i1 %1129 to i32
  %.2106 = select i1 %1129, i32 2, i32 0
  %.2107 = select i1 %1129, i32 3, i32 0
  %.2108 = select i1 %1129, i32 4, i32 0
  %1130 = call noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler16OptionalRationaleqEi(ptr noundef nonnull align 8 dereferenceable(24) %84, i32 noundef %.)
  %1131 = select i1 %1130, i1 %.06681882, i1 false
  %1132 = call noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler16OptionalRationaleqEi(ptr noundef nonnull align 8 dereferenceable(24) %84, i32 noundef %.2106)
  %1133 = select i1 %1132, i1 %.06651883, i1 false
  %1134 = call noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler16OptionalRationaleqEi(ptr noundef nonnull align 8 dereferenceable(24) %84, i32 noundef %.2107)
  %1135 = select i1 %1134, i1 %.06621884, i1 false
  %1136 = call noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler16OptionalRationaleqEi(ptr noundef nonnull align 8 dereferenceable(24) %84, i32 noundef %.2108)
  %1137 = select i1 %1136, i1 %.06591885, i1 false
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %84) #11
  %1138 = add nuw nsw i32 %.06561886, 1
  %1139 = load ptr, ptr %902, align 8, !tbaa !166
  %1140 = getelementptr inbounds i8, ptr %1139, i64 180
  %1141 = load i32, ptr %1140, align 4, !tbaa !125
  %1142 = icmp slt i32 %1138, %1141
  br i1 %1142, label %.lr.ph1887, label %.loopexit972, !llvm.loop !192

1143:                                             ; preds = %.lr.ph1887
  %1144 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %84) #11
  br label %1200

.loopexit972:                                     ; preds = %1126, %.preheader971, %._crit_edge1874, %1078
  %.1672.shrunk = phi i1 [ %1086, %._crit_edge1874 ], [ true, %1078 ], [ true, %.preheader971 ], [ %1128, %1126 ]
  %.2670.shrunk = phi i1 [ %1090, %._crit_edge1874 ], [ true, %1078 ], [ true, %.preheader971 ], [ %1131, %1126 ]
  %.2667.shrunk = phi i1 [ %1092, %._crit_edge1874 ], [ true, %1078 ], [ true, %.preheader971 ], [ %1133, %1126 ]
  %.2664.shrunk = phi i1 [ %1094, %._crit_edge1874 ], [ true, %1078 ], [ true, %.preheader971 ], [ %1135, %1126 ]
  %.2661.shrunk = phi i1 [ %1096, %._crit_edge1874 ], [ true, %1078 ], [ true, %.preheader971 ], [ %1137, %1126 ]
  %1145 = load double, ptr %888, align 8, !tbaa !179
  %1146 = fcmp ogt double %1145, 1.000000e+00
  br i1 %1146, label %.preheader969, label %.loopexit970

.preheader969:                                    ; preds = %.loopexit972
  %1147 = load ptr, ptr %451, align 8, !tbaa !9
  %1148 = getelementptr inbounds i8, ptr %1147, i64 16
  %1149 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1148) #11
  %.not2042 = icmp eq i64 %1149, 0
  br i1 %.not2042, label %.loopexit970, label %.lr.ph1898

.lr.ph1898:                                       ; preds = %.preheader969, %.loopexit
  %.06521897 = phi i64 [ %1173, %.loopexit ], [ 0, %.preheader969 ]
  %.06531896 = phi i64 [ %.2655, %.loopexit ], [ 1, %.preheader969 ]
  %1150 = load ptr, ptr %451, align 8, !tbaa !9
  %1151 = getelementptr inbounds i8, ptr %1150, i64 16
  %1152 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1151, i64 noundef %.06521897) #11
  %1153 = getelementptr inbounds i8, ptr %1152, i64 33
  %1154 = load i8, ptr %1153, align 1, !tbaa !161, !range !52, !noundef !53
  %1155 = trunc nuw i8 %1154 to i1
  br i1 %1155, label %.loopexit, label %.preheader

.preheader:                                       ; preds = %.lr.ph1898
  %1156 = load ptr, ptr %902, align 8, !tbaa !166
  %1157 = getelementptr inbounds i8, ptr %1156, i64 180
  %1158 = load i32, ptr %1157, align 4, !tbaa !125
  %.not8611893 = icmp sgt i32 %1158, 0
  br i1 %.not8611893, label %.lr.ph1895, label %.critedge921

.lr.ph1895:                                       ; preds = %.preheader
  %1159 = trunc i64 %.06521897 to i32
  br label %1165

1160:                                             ; preds = %1166
  %1161 = add nuw nsw i32 %.06501894, 1
  %1162 = load ptr, ptr %902, align 8, !tbaa !166
  %1163 = getelementptr inbounds i8, ptr %1162, i64 180
  %1164 = load i32, ptr %1163, align 4, !tbaa !125
  %.not861 = icmp slt i32 %1161, %1164
  br i1 %.not861, label %1165, label %.critedge921, !llvm.loop !193

1165:                                             ; preds = %.lr.ph1895, %1160
  %.06501894 = phi i32 [ 0, %.lr.ph1895 ], [ %1161, %1160 ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %85) #11
  invoke void @_ZNK6Halide8Internal13Autoscheduler12LoadJacobianclEii(ptr dead_on_unwind nonnull writable sret(%"struct.Halide::Internal::Autoscheduler::OptionalRational") align 8 %85, ptr noundef nonnull align 8 dereferenceable(32) %1063, i32 noundef %.06501894, i32 noundef %1159)
          to label %1166 unwind label %1168

1166:                                             ; preds = %1165
  %1167 = call noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler16OptionalRationaleqEi(ptr noundef nonnull align 8 dereferenceable(24) %85, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %85) #11
  br i1 %1167, label %1160, label %.loopexit

1168:                                             ; preds = %1165
  %1169 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %85) #11
  br label %1200

.critedge921:                                     ; preds = %1160, %.preheader
  %1170 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %889, i64 noundef %.06521897) #11
  %1171 = load i64, ptr %1170, align 8, !tbaa !5
  %1172 = mul nsw i64 %1171, %.06531896
  br label %.loopexit

.loopexit:                                        ; preds = %1166, %.critedge921, %.lr.ph1898
  %.2655 = phi i64 [ %.06531896, %.lr.ph1898 ], [ %1172, %.critedge921 ], [ %.06531896, %1166 ]
  %1173 = add nuw i64 %.06521897, 1
  %1174 = load ptr, ptr %451, align 8, !tbaa !9
  %1175 = getelementptr inbounds i8, ptr %1174, i64 16
  %1176 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1175) #11
  %1177 = icmp ult i64 %1173, %1176
  br i1 %1177, label %.lr.ph1898, label %.loopexit970, !llvm.loop !194

.loopexit970:                                     ; preds = %.loopexit, %.preheader969, %.loopexit972
  %.3 = phi i64 [ 1, %.loopexit972 ], [ 1, %.preheader969 ], [ %.2655, %.loopexit ]
  %1178 = sitofp i64 %.3 to double
  %1179 = fdiv double %1069, %1178
  %1180 = fadd double %.27581906, %1179
  br i1 %.1672.shrunk, label %1181, label %1183

1181:                                             ; preds = %.loopexit970
  %1182 = fadd double %.27971901, %1179
  br label %1197

1183:                                             ; preds = %.loopexit970
  br i1 %.2670.shrunk, label %1184, label %1186

1184:                                             ; preds = %1183
  %1185 = fadd double %.28051900, %1179
  br label %1197

1186:                                             ; preds = %1183
  br i1 %.2667.shrunk, label %1187, label %1189

1187:                                             ; preds = %1186
  %1188 = fadd double %.27811903, %1179
  br label %1197

1189:                                             ; preds = %1186
  br i1 %.2664.shrunk, label %1190, label %1192

1190:                                             ; preds = %1189
  %1191 = fadd double %.27731904, %1179
  br label %1197

1192:                                             ; preds = %1189
  br i1 %.2661.shrunk, label %1193, label %1195

1193:                                             ; preds = %1192
  %1194 = fadd double %.27651905, %1179
  br label %1197

1195:                                             ; preds = %1192
  %1196 = fadd double %.27891902, %1179
  br label %1197

1197:                                             ; preds = %1181, %1187, %1193, %1195, %1190, %1184, %1062
  %.4807 = phi double [ %.28051900, %1062 ], [ %.28051900, %1181 ], [ %1185, %1184 ], [ %.28051900, %1187 ], [ %.28051900, %1190 ], [ %.28051900, %1193 ], [ %.28051900, %1195 ]
  %.4799 = phi double [ %.27971901, %1062 ], [ %1182, %1181 ], [ %.27971901, %1184 ], [ %.27971901, %1187 ], [ %.27971901, %1190 ], [ %.27971901, %1193 ], [ %.27971901, %1195 ]
  %.4791 = phi double [ %.27891902, %1062 ], [ %.27891902, %1181 ], [ %.27891902, %1184 ], [ %.27891902, %1187 ], [ %.27891902, %1190 ], [ %.27891902, %1193 ], [ %1196, %1195 ]
  %.4783 = phi double [ %.27811903, %1062 ], [ %.27811903, %1181 ], [ %.27811903, %1184 ], [ %1188, %1187 ], [ %.27811903, %1190 ], [ %.27811903, %1193 ], [ %.27811903, %1195 ]
  %.4775 = phi double [ %.27731904, %1062 ], [ %.27731904, %1181 ], [ %.27731904, %1184 ], [ %.27731904, %1187 ], [ %1191, %1190 ], [ %.27731904, %1193 ], [ %.27731904, %1195 ]
  %.4767 = phi double [ %.27651905, %1062 ], [ %.27651905, %1181 ], [ %.27651905, %1184 ], [ %.27651905, %1187 ], [ %.27651905, %1190 ], [ %1194, %1193 ], [ %.27651905, %1195 ]
  %.3759 = phi double [ %.27581906, %1062 ], [ %1180, %1181 ], [ %1180, %1184 ], [ %1180, %1187 ], [ %1180, %1190 ], [ %1180, %1193 ], [ %1180, %1195 ]
  %1198 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS4_11FunctionDAG4NodeEESt6vectorIS9_SaIS9_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %81) #11
  %1199 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS4_11FunctionDAG4NodeEESt6vectorIS9_SaIS9_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8) %81, ptr noundef nonnull align 8 dereferenceable(8) %82) #11
  br i1 %1199, label %1062, label %._crit_edge1914

1200:                                             ; preds = %1168, %1143, %1102
  %.pn862 = phi { ptr, i32 } [ %1144, %1143 ], [ %1169, %1168 ], [ %1103, %1102 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %82) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %81) #11
  br label %1371

1201:                                             ; preds = %._crit_edge1914, %1055
  %.5808 = phi double [ %.2805.lcssa, %._crit_edge1914 ], [ %.18041946, %1055 ]
  %.5800 = phi double [ %.2797.lcssa, %._crit_edge1914 ], [ %.17961947, %1055 ]
  %.5792 = phi double [ %.2789.lcssa, %._crit_edge1914 ], [ %.17881948, %1055 ]
  %.5784 = phi double [ %.2781.lcssa, %._crit_edge1914 ], [ %.17801949, %1055 ]
  %.5776 = phi double [ %.2773.lcssa, %._crit_edge1914 ], [ %.17721950, %1055 ]
  %.5768 = phi double [ %.2765.lcssa, %._crit_edge1914 ], [ %.17641951, %1055 ]
  %.4760 = phi double [ %.2758.lcssa, %._crit_edge1914 ], [ %.17571952, %1055 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %86) #11
  %1202 = invoke ptr @_ZNSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE4findERKS6_(ptr noundef nonnull align 8 dereferenceable(48) %63, ptr noundef nonnull align 8 dereferenceable(8) %902)
          to label %1203 unwind label %1206

1203:                                             ; preds = %1201
  store ptr %1202, ptr %86, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %87) #11
  %1204 = call ptr @_ZNKSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %63) #11
  store ptr %1204, ptr %87, align 8
  %1205 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEES9_(ptr noundef nonnull align 8 dereferenceable(8) %86, ptr noundef nonnull align 8 dereferenceable(8) %87) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %87) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %86) #11
  br i1 %1205, label %1367, label %1208

1206:                                             ; preds = %1201
  %1207 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %86) #11
  br label %1371

1208:                                             ; preds = %1203
  %1209 = invoke { ptr, i8 } @_ZNSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE6insertERKS6_(ptr noundef nonnull align 8 dereferenceable(48) %63, ptr noundef nonnull align 8 dereferenceable(8) %902)
          to label %1210 unwind label %1049

1210:                                             ; preds = %1208
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %88) #11
  store i64 1, ptr %88, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %89) #11
  store i64 1, ptr %89, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %90) #11
  store i64 1, ptr %90, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %91) #11
  store i64 1, ptr %91, align 8, !tbaa !5
  %1211 = load ptr, ptr %902, align 8, !tbaa !166
  %1212 = getelementptr inbounds i8, ptr %1211, i64 180
  %1213 = load i32, ptr %1212, align 4, !tbaa !125
  %1214 = icmp sgt i32 %1213, 0
  br i1 %1214, label %.lr.ph1936, label %._crit_edge1937

._crit_edge1937:                                  ; preds = %.critedge935, %1210
  %.0722.lcssa = phi i64 [ %1028, %1210 ], [ %1287, %.critedge935 ]
  %.0721.lcssa = phi i64 [ %1028, %1210 ], [ %1289, %.critedge935 ]
  %.0720.lcssa = phi i64 [ %1028, %1210 ], [ %1291, %.critedge935 ]
  %.0716.lcssa = phi i64 [ 1, %1210 ], [ %.1717, %.critedge935 ]
  %.0711.lcssa = phi i64 [ 1, %1210 ], [ %.1712, %.critedge935 ]
  %.lcssa1025 = phi ptr [ %1211, %1210 ], [ %1292, %.critedge935 ]
  br i1 %933, label %1337, label %1334

.lr.ph1936:                                       ; preds = %1210, %.critedge935
  %.06471934 = phi i32 [ %1329, %.critedge935 ], [ 0, %1210 ]
  %.07111932 = phi i64 [ %.1712, %.critedge935 ], [ 1, %1210 ]
  %.07161930 = phi i64 [ %.1717, %.critedge935 ], [ 1, %1210 ]
  %.07201929 = phi i64 [ %1291, %.critedge935 ], [ %1028, %1210 ]
  %.07211928 = phi i64 [ %1289, %.critedge935 ], [ %1028, %1210 ]
  %.07221927 = phi i64 [ %1287, %.critedge935 ], [ %1028, %1210 ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %92) #11
  %1215 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1014)
  %1216 = call noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents15region_requiredEi(ptr noundef nonnull align 8 dereferenceable(16) %1215, i32 noundef %.06471934)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %92, ptr noundef nonnull align 8 dereferenceable(24) %1216, i64 24, i1 false), !tbaa.struct !195
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %93) #11
  %1217 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1020)
  %1218 = call noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents15region_computedEi(ptr noundef nonnull align 8 dereferenceable(16) %1217, i32 noundef %.06471934)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %93, ptr noundef nonnull align 8 dereferenceable(24) %1218, i64 24, i1 false), !tbaa.struct !195
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %94) #11
  %1219 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1023)
  %1220 = call noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents15region_requiredEi(ptr noundef nonnull align 8 dereferenceable(16) %1219, i32 noundef %.06471934)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %94, ptr noundef nonnull align 8 dereferenceable(24) %1220, i64 24, i1 false), !tbaa.struct !195
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %95) #11
  %1221 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1017)
  %1222 = call noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents15region_requiredEi(ptr noundef nonnull align 8 dereferenceable(16) %1221, i32 noundef %.06471934)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %95, ptr noundef nonnull align 8 dereferenceable(24) %1222, i64 24, i1 false), !tbaa.struct !195
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %96) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %98) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %99) #11
  %1223 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span3minEv(ptr noundef nonnull align 8 dereferenceable(17) %94)
  %1224 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span3maxEv(ptr noundef nonnull align 8 dereferenceable(17) %94)
  %.not842 = icmp sgt i64 %1223, %1224
  br i1 %.not842, label %1225, label %1238

1225:                                             ; preds = %.lr.ph1936
  call void @llvm.lifetime.start.p0(i64 384, ptr nonnull %97) #11
  invoke void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %97, ptr noundef nonnull @.str.3, i32 noundef 796, ptr noundef nonnull @.str.12, i32 noundef 0)
          to label %1226 unwind label %1305

1226:                                             ; preds = %1225
  %1227 = call noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %97)
  %1228 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span3minEv(ptr noundef nonnull align 8 dereferenceable(17) %94)
  store i64 %1228, ptr %98, align 8, !tbaa !5
  %1229 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIlEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %1227, ptr noundef nonnull align 8 dereferenceable(8) %98)
          to label %1230 unwind label %1307

1230:                                             ; preds = %1226
  %1231 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA2_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %1229, ptr noundef nonnull align 1 dereferenceable(2) @.str.13)
          to label %1232 unwind label %1307

1232:                                             ; preds = %1230
  %1233 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span3maxEv(ptr noundef nonnull align 8 dereferenceable(17) %94)
  store i64 %1233, ptr %99, align 8, !tbaa !5
  %1234 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIlEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %1231, ptr noundef nonnull align 8 dereferenceable(8) %99)
          to label %1235 unwind label %1309

1235:                                             ; preds = %1232
  %1236 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA2_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %1234, ptr noundef nonnull align 1 dereferenceable(2) @.str.9)
          to label %1237 unwind label %1309

1237:                                             ; preds = %1235
  call void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %96, ptr noundef nonnull align 8 dereferenceable(380) %1236)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %99) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %98) #11
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %97)
          to label %1239 unwind label %1305

1238:                                             ; preds = %.lr.ph1936
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %99) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %98) #11
  br label %.critedge925

1239:                                             ; preds = %1237
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %97) #11
  br label %.critedge925

.critedge925:                                     ; preds = %1238, %1239
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %96) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %100) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %102) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %103) #11
  %1240 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span3minEv(ptr noundef nonnull align 8 dereferenceable(17) %93)
  %1241 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span3maxEv(ptr noundef nonnull align 8 dereferenceable(17) %93)
  %.not847 = icmp sgt i64 %1240, %1241
  br i1 %.not847, label %1242, label %1255

1242:                                             ; preds = %.critedge925
  call void @llvm.lifetime.start.p0(i64 384, ptr nonnull %101) #11
  invoke void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %101, ptr noundef nonnull @.str.3, i32 noundef 797, ptr noundef nonnull @.str.14, i32 noundef 0)
          to label %1243 unwind label %1313

1243:                                             ; preds = %1242
  %1244 = call noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %101)
  %1245 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span3minEv(ptr noundef nonnull align 8 dereferenceable(17) %93)
  store i64 %1245, ptr %102, align 8, !tbaa !5
  %1246 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIlEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %1244, ptr noundef nonnull align 8 dereferenceable(8) %102)
          to label %1247 unwind label %1315

1247:                                             ; preds = %1243
  %1248 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA2_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %1246, ptr noundef nonnull align 1 dereferenceable(2) @.str.13)
          to label %1249 unwind label %1315

1249:                                             ; preds = %1247
  %1250 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span3maxEv(ptr noundef nonnull align 8 dereferenceable(17) %93)
  store i64 %1250, ptr %103, align 8, !tbaa !5
  %1251 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIlEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %1248, ptr noundef nonnull align 8 dereferenceable(8) %103)
          to label %1252 unwind label %1317

1252:                                             ; preds = %1249
  %1253 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA2_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %1251, ptr noundef nonnull align 1 dereferenceable(2) @.str.9)
          to label %1254 unwind label %1317

1254:                                             ; preds = %1252
  call void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %100, ptr noundef nonnull align 8 dereferenceable(380) %1253)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %103) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %102) #11
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %101)
          to label %1256 unwind label %1313

1255:                                             ; preds = %.critedge925
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %103) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %102) #11
  br label %.critedge929

1256:                                             ; preds = %1254
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %101) #11
  br label %.critedge929

.critedge929:                                     ; preds = %1255, %1256
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %100) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %104) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %106) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %107) #11
  %1257 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span3minEv(ptr noundef nonnull align 8 dereferenceable(17) %95)
  %1258 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span3maxEv(ptr noundef nonnull align 8 dereferenceable(17) %95)
  %.not852 = icmp sgt i64 %1257, %1258
  br i1 %.not852, label %1259, label %1272

1259:                                             ; preds = %.critedge929
  call void @llvm.lifetime.start.p0(i64 384, ptr nonnull %105) #11
  invoke void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %105, ptr noundef nonnull @.str.3, i32 noundef 798, ptr noundef nonnull @.str.15, i32 noundef 0)
          to label %1260 unwind label %1321

1260:                                             ; preds = %1259
  %1261 = call noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %105)
  %1262 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span3minEv(ptr noundef nonnull align 8 dereferenceable(17) %95)
  store i64 %1262, ptr %106, align 8, !tbaa !5
  %1263 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIlEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %1261, ptr noundef nonnull align 8 dereferenceable(8) %106)
          to label %1264 unwind label %1323

1264:                                             ; preds = %1260
  %1265 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA2_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %1263, ptr noundef nonnull align 1 dereferenceable(2) @.str.13)
          to label %1266 unwind label %1323

1266:                                             ; preds = %1264
  %1267 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span3maxEv(ptr noundef nonnull align 8 dereferenceable(17) %95)
  store i64 %1267, ptr %107, align 8, !tbaa !5
  %1268 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIlEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %1265, ptr noundef nonnull align 8 dereferenceable(8) %107)
          to label %1269 unwind label %1325

1269:                                             ; preds = %1266
  %1270 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA2_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %1268, ptr noundef nonnull align 1 dereferenceable(2) @.str.9)
          to label %1271 unwind label %1325

1271:                                             ; preds = %1269
  call void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %104, ptr noundef nonnull align 8 dereferenceable(380) %1270)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %107) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %106) #11
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %105)
          to label %1273 unwind label %1321

1272:                                             ; preds = %.critedge929
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %107) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %106) #11
  br label %.critedge933

1273:                                             ; preds = %1271
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %105) #11
  br label %.critedge933

.critedge933:                                     ; preds = %1272, %1273
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %104) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %108) #11
  %1274 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17) %92)
  store i64 %1274, ptr %108, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %109) #11
  %1275 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17) %93)
  store i64 %1275, ptr %109, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %110) #11
  %1276 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17) %94)
  store i64 %1276, ptr %110, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %111) #11
  %1277 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17) %95)
  store i64 %1277, ptr %111, align 8, !tbaa !5
  %1278 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIlERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %108, ptr noundef nonnull align 8 dereferenceable(8) %88)
  %1279 = load i64, ptr %1278, align 8, !tbaa !5
  store i64 %1279, ptr %88, align 8, !tbaa !5
  %1280 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIlERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %109, ptr noundef nonnull align 8 dereferenceable(8) %89)
  %1281 = load i64, ptr %1280, align 8, !tbaa !5
  store i64 %1281, ptr %89, align 8, !tbaa !5
  %1282 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIlERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %110, ptr noundef nonnull align 8 dereferenceable(8) %90)
  %1283 = load i64, ptr %1282, align 8, !tbaa !5
  store i64 %1283, ptr %90, align 8, !tbaa !5
  %1284 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIlERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %111, ptr noundef nonnull align 8 dereferenceable(8) %91)
  %1285 = load i64, ptr %1284, align 8, !tbaa !5
  store i64 %1285, ptr %91, align 8, !tbaa !5
  %1286 = load i64, ptr %108, align 8, !tbaa !5
  %1287 = mul nsw i64 %1286, %.07221927
  %1288 = load i64, ptr %109, align 8, !tbaa !5
  %1289 = mul nsw i64 %1288, %.07211928
  %1290 = load i64, ptr %110, align 8, !tbaa !5
  %1291 = mul nsw i64 %1290, %.07201929
  %1292 = load ptr, ptr %902, align 8, !tbaa !166
  %1293 = getelementptr inbounds i8, ptr %1292, i64 185
  %1294 = load i8, ptr %1293, align 1, !tbaa !61, !range !52, !noundef !53
  %1295 = trunc nuw i8 %1294 to i1
  %1296 = icmp eq i32 %.06471934, 0
  %or.cond = and i1 %1296, %1295
  br i1 %or.cond, label %.critedge935, label %1297

1297:                                             ; preds = %.critedge933
  %1298 = load ptr, ptr %930, align 8, !tbaa !98
  %.not859 = icmp eq ptr %1298, null
  br i1 %.not859, label %.critedge937, label %1299

1299:                                             ; preds = %1297
  %1300 = getelementptr inbounds i8, ptr %1298, i64 188
  %1301 = load i32, ptr %1300, align 4, !tbaa !126
  %1302 = icmp eq i32 %.06471934, %1301
  br i1 %1302, label %.critedge935, label %.critedge937

.critedge937:                                     ; preds = %1297, %1299
  %1303 = mul nsw i64 %1286, %.07161930
  %1304 = mul nsw i64 %1290, %.07111932
  br label %.critedge935

1305:                                             ; preds = %1237, %1225
  %1306 = landingpad { ptr, i32 }
          cleanup
  br label %1312

1307:                                             ; preds = %1230, %1226
  %1308 = landingpad { ptr, i32 }
          cleanup
  br label %1311

1309:                                             ; preds = %1235, %1232
  %1310 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %99) #11
  br label %1311

1311:                                             ; preds = %1309, %1307
  %.pn843 = phi { ptr, i32 } [ %1310, %1309 ], [ %1308, %1307 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %98) #11
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %97)
          to label %1312 unwind label %1524

1312:                                             ; preds = %1311, %1305
  %.pn845 = phi { ptr, i32 } [ %1306, %1305 ], [ %.pn843, %1311 ]
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %97) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %96) #11
  br label %1333

1313:                                             ; preds = %1254, %1242
  %1314 = landingpad { ptr, i32 }
          cleanup
  br label %1320

1315:                                             ; preds = %1247, %1243
  %1316 = landingpad { ptr, i32 }
          cleanup
  br label %1319

1317:                                             ; preds = %1252, %1249
  %1318 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %103) #11
  br label %1319

1319:                                             ; preds = %1317, %1315
  %.pn848 = phi { ptr, i32 } [ %1318, %1317 ], [ %1316, %1315 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %102) #11
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %101)
          to label %1320 unwind label %1524

1320:                                             ; preds = %1319, %1313
  %.pn850 = phi { ptr, i32 } [ %1314, %1313 ], [ %.pn848, %1319 ]
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %101) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %100) #11
  br label %1333

1321:                                             ; preds = %1271, %1259
  %1322 = landingpad { ptr, i32 }
          cleanup
  br label %1328

1323:                                             ; preds = %1264, %1260
  %1324 = landingpad { ptr, i32 }
          cleanup
  br label %1327

1325:                                             ; preds = %1269, %1266
  %1326 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %107) #11
  br label %1327

1327:                                             ; preds = %1325, %1323
  %.pn853 = phi { ptr, i32 } [ %1326, %1325 ], [ %1324, %1323 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %106) #11
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %105)
          to label %1328 unwind label %1524

1328:                                             ; preds = %1327, %1321
  %.pn855 = phi { ptr, i32 } [ %1322, %1321 ], [ %.pn853, %1327 ]
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %105) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %104) #11
  br label %1333

.critedge935:                                     ; preds = %.critedge933, %.critedge937, %1299
  %.1717 = phi i64 [ %.07161930, %1299 ], [ %1303, %.critedge937 ], [ %.07161930, %.critedge933 ]
  %.1712 = phi i64 [ %.07111932, %1299 ], [ %1304, %.critedge937 ], [ %.07111932, %.critedge933 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %111) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %110) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %109) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %108) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %95) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %94) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %93) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %92) #11
  %1329 = add nuw nsw i32 %.06471934, 1
  %1330 = getelementptr inbounds i8, ptr %1292, i64 180
  %1331 = load i32, ptr %1330, align 4, !tbaa !125
  %1332 = icmp slt i32 %1329, %1331
  br i1 %1332, label %.lr.ph1936, label %._crit_edge1937, !llvm.loop !197

1333:                                             ; preds = %1328, %1320, %1312
  %.pn855.pn = phi { ptr, i32 } [ %.pn855, %1328 ], [ %.pn850, %1320 ], [ %.pn845, %1312 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %95) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %94) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %93) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %92) #11
  br label %1370

1334:                                             ; preds = %._crit_edge1937
  %1335 = load i64, ptr %88, align 8, !tbaa !5
  %1336 = sdiv i64 %.0716.lcssa, %1335
  br label %.thread960

1337:                                             ; preds = %._crit_edge1937
  %1338 = getelementptr inbounds i8, ptr %.lcssa1025, i64 185
  %1339 = load i8, ptr %1338, align 1, !tbaa !61, !range !52, !noundef !53
  %1340 = trunc nuw i8 %1339 to i1
  br i1 %1340, label %.thread960, label %1341

1341:                                             ; preds = %1337
  %1342 = getelementptr inbounds i8, ptr %.lcssa1025, i64 120
  %1343 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1342, i64 noundef 0) #11
  %1344 = invoke noundef nonnull align 8 dereferenceable(312) ptr @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE13get_or_createEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull %1343)
          to label %1345 unwind label %1351

1345:                                             ; preds = %1341
  %1346 = load double, ptr %1344, align 8, !tbaa !93
  %1347 = fcmp une double %1346, 0.000000e+00
  br i1 %1347, label %1348, label %.thread960

1348:                                             ; preds = %1345
  %1349 = fptosi double %1346 to i64
  %1350 = icmp sgt i64 %1349, %882
  br i1 %1350, label %1354, label %.thread960

1351:                                             ; preds = %1341
  %1352 = landingpad { ptr, i32 }
          cleanup
  br label %1370

.thread960:                                       ; preds = %1337, %1334, %1345, %1348
  %.2718955.ph = phi i64 [ %.0716.lcssa, %1348 ], [ %.0716.lcssa, %1345 ], [ %1336, %1334 ], [ %.0716.lcssa, %1337 ]
  %1353 = add nsw i64 %.0721.lcssa, %.18121945
  br label %1361

1354:                                             ; preds = %1348
  %1355 = sdiv i64 %1349, %882
  %1356 = add nsw i64 %.0721.lcssa, %.18121945
  %1357 = icmp sgt i64 %1355, 1
  br i1 %1357, label %1358, label %1361

1358:                                             ; preds = %1354
  %1359 = load i64, ptr %58, align 8, !tbaa !5
  %1360 = add nsw i64 %1359, %.0720.lcssa
  br label %1365

1361:                                             ; preds = %.thread960, %1354
  %1362 = phi i64 [ %1353, %.thread960 ], [ %1356, %1354 ]
  %.2718955964 = phi i64 [ %.2718955.ph, %.thread960 ], [ %.0716.lcssa, %1354 ]
  %1363 = load i64, ptr %58, align 8, !tbaa !5
  %1364 = add nsw i64 %1363, %.0722.lcssa
  br label %1365

1365:                                             ; preds = %1361, %1358
  %storemerge966 = phi i64 [ %1360, %1358 ], [ %1364, %1361 ]
  %1366 = phi i64 [ %1356, %1358 ], [ %1362, %1361 ]
  %.2713.pn = phi i64 [ %.0711.lcssa, %1358 ], [ %.2718955964, %1361 ]
  store i64 %storemerge966, ptr %58, align 8, !tbaa !5
  %.2818 = add nsw i64 %.2713.pn, %.18171944
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %91) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %90) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %89) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %88) #11
  br label %1367

1367:                                             ; preds = %1365, %1203, %1006
  %.4820 = phi i64 [ %.18171944, %1006 ], [ %.2818, %1365 ], [ %.18171944, %1203 ]
  %.3814 = phi i64 [ %.18121945, %1006 ], [ %1366, %1365 ], [ %.18121945, %1203 ]
  %.6809 = phi double [ %.18041946, %1006 ], [ %.5808, %1365 ], [ %.5808, %1203 ]
  %.6801 = phi double [ %.17961947, %1006 ], [ %.5800, %1365 ], [ %.5800, %1203 ]
  %.6793 = phi double [ %.17881948, %1006 ], [ %.5792, %1365 ], [ %.5792, %1203 ]
  %.6785 = phi double [ %.17801949, %1006 ], [ %.5784, %1365 ], [ %.5784, %1203 ]
  %.6777 = phi double [ %.17721950, %1006 ], [ %.5776, %1365 ], [ %.5776, %1203 ]
  %.6769 = phi double [ %.17641951, %1006 ], [ %.5768, %1365 ], [ %.5768, %1203 ]
  %.5761 = phi double [ %.17571952, %1006 ], [ %.4760, %1365 ], [ %.4760, %1203 ]
  %1368 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %64) #11
  %1369 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %64, ptr noundef nonnull align 8 dereferenceable(8) %65) #11
  br i1 %1369, label %.lr.ph1959, label %._crit_edge1960

1370:                                             ; preds = %1351, %1333
  %.pn855.pn.pn = phi { ptr, i32 } [ %.pn855.pn, %1333 ], [ %1352, %1351 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %91) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %90) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %89) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %88) #11
  br label %1371

1371:                                             ; preds = %953, %1041, %1045, %1049, %1051, %1053, %1200, %1206, %1370, %1047, %1043, %1007, %996, %960, %952, %946
  %.pn869.pn.pn = phi { ptr, i32 } [ %.pn, %952 ], [ %947, %946 ], [ %954, %953 ], [ %961, %960 ], [ %1008, %1007 ], [ %.pn839.pn, %996 ], [ %1042, %1041 ], [ %1044, %1043 ], [ %1046, %1045 ], [ %1048, %1047 ], [ %.pn862, %1200 ], [ %.pn855.pn.pn, %1370 ], [ %1050, %1049 ], [ %1207, %1206 ], [ %1054, %1053 ], [ %1052, %1051 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %65) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %64) #11
  call void @_ZNSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %63) #11
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %63) #11
  call void @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %62) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %62) #11
  br label %1374

._crit_edge1991.loopexit:                         ; preds = %._crit_edge1960
  %1372 = sitofp i64 %.1812.lcssa to double
  %1373 = sitofp i64 %.1817.lcssa to double
  br label %._crit_edge1991

._crit_edge1991:                                  ; preds = %._crit_edge1991.loopexit, %885
  %.0816.lcssa = phi double [ 0.000000e+00, %885 ], [ %1373, %._crit_edge1991.loopexit ]
  %.0811.lcssa = phi double [ 0.000000e+00, %885 ], [ %1372, %._crit_edge1991.loopexit ]
  %.0803.lcssa = phi double [ 0.000000e+00, %885 ], [ %.1804.lcssa, %._crit_edge1991.loopexit ]
  %.0795.lcssa = phi double [ 0.000000e+00, %885 ], [ %.1796.lcssa, %._crit_edge1991.loopexit ]
  %.0787.lcssa = phi double [ 0.000000e+00, %885 ], [ %.1788.lcssa, %._crit_edge1991.loopexit ]
  %.0779.lcssa = phi double [ 0.000000e+00, %885 ], [ %.1780.lcssa, %._crit_edge1991.loopexit ]
  %.0771.lcssa = phi double [ 0.000000e+00, %885 ], [ %.1772.lcssa, %._crit_edge1991.loopexit ]
  %.0763.lcssa = phi double [ 0.000000e+00, %885 ], [ %.1764.lcssa, %._crit_edge1991.loopexit ]
  %.0756.lcssa = phi double [ 0.000000e+00, %885 ], [ %.1757.lcssa, %._crit_edge1991.loopexit ]
  call void @_ZNSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %63) #11
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %63) #11
  call void @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %62) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %62) #11
  call void @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS7_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %61) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %61) #11
  br label %1375

1374:                                             ; preds = %1371, %898
  %.pn869.pn.pn.pn = phi { ptr, i32 } [ %.pn869.pn.pn, %1371 ], [ %899, %898 ]
  call void @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS7_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %61) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %61) #11
  br label %1522

1375:                                             ; preds = %864, %._crit_edge1991
  %.5821 = phi double [ %.0816.lcssa, %._crit_edge1991 ], [ 0.000000e+00, %864 ]
  %.4815 = phi double [ %.0811.lcssa, %._crit_edge1991 ], [ 0.000000e+00, %864 ]
  %.7810 = phi double [ %.0803.lcssa, %._crit_edge1991 ], [ 0.000000e+00, %864 ]
  %.7802 = phi double [ %.0795.lcssa, %._crit_edge1991 ], [ 0.000000e+00, %864 ]
  %.7794 = phi double [ %.0787.lcssa, %._crit_edge1991 ], [ 0.000000e+00, %864 ]
  %.7786 = phi double [ %.0779.lcssa, %._crit_edge1991 ], [ 0.000000e+00, %864 ]
  %.7778 = phi double [ %.0771.lcssa, %._crit_edge1991 ], [ 0.000000e+00, %864 ]
  %.7770 = phi double [ %.0763.lcssa, %._crit_edge1991 ], [ 0.000000e+00, %864 ]
  %.6762 = phi double [ %.0756.lcssa, %._crit_edge1991 ], [ 0.000000e+00, %864 ]
  br i1 %.not, label %1376, label %1421

1376:                                             ; preds = %1375
  %1377 = load i64, ptr %58, align 8, !tbaa !5
  %1378 = icmp slt i64 %1377, 0
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %112) #11
  br i1 %1378, label %1379, label %.critedge940

1379:                                             ; preds = %1376
  call void @llvm.lifetime.start.p0(i64 384, ptr nonnull %113) #11
  call void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %113, ptr noundef nonnull @.str.3, i32 noundef 875, ptr noundef nonnull @.str.16, i32 noundef 0)
  %1380 = call noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %113)
  %1381 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA24_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %1380, ptr noundef nonnull align 1 dereferenceable(24) @.str.17)
          to label %1382 unwind label %1415

1382:                                             ; preds = %1379
  %1383 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIlEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %1381, ptr noundef nonnull align 8 dereferenceable(8) %58)
          to label %1384 unwind label %1415

1384:                                             ; preds = %1382
  %1385 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA2_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %1383, ptr noundef nonnull align 1 dereferenceable(2) @.str.9)
          to label %.critedge939 unwind label %1415

.critedge939:                                     ; preds = %1384
  call void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %112, ptr noundef nonnull align 8 dereferenceable(380) %1385)
  call void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %113)
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %113) #11
  %.pr = load i64, ptr %58, align 8, !tbaa !5
  br label %.critedge940

.critedge940:                                     ; preds = %1376, %.critedge939
  %1386 = phi i64 [ %1377, %1376 ], [ %.pr, %.critedge939 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %112) #11
  %1387 = getelementptr inbounds i8, ptr %459, i64 160
  store double %.4815, ptr %1387, align 8, !tbaa !198
  %1388 = sitofp i64 %1386 to double
  %1389 = getelementptr inbounds i8, ptr %459, i64 144
  store double %1388, ptr %1389, align 8, !tbaa !199
  %1390 = getelementptr inbounds i8, ptr %459, i64 152
  store double %.5821, ptr %1390, align 8, !tbaa !200
  br i1 %525, label %1421, label %1391

1391:                                             ; preds = %.critedge940
  %1392 = icmp slt i64 %1386, 0
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %114) #11
  %1393 = insertelement <2 x double> poison, double %1388, i64 0
  %1394 = insertelement <2 x double> %1393, double %.5821, i64 1
  br i1 %1392, label %1395, label %.critedge943

1395:                                             ; preds = %1391
  call void @llvm.lifetime.start.p0(i64 384, ptr nonnull %115) #11
  call void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %115, ptr noundef nonnull @.str.3, i32 noundef 883, ptr noundef nonnull @.str.16, i32 noundef 0)
  %1396 = call noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %115)
  %1397 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA31_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %1396, ptr noundef nonnull align 1 dereferenceable(31) @.str.18)
          to label %1398 unwind label %1418

1398:                                             ; preds = %1395
  %1399 = getelementptr inbounds i8, ptr %459, i64 96
  %1400 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIdEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %1397, ptr noundef nonnull align 8 dereferenceable(8) %1399)
          to label %1401 unwind label %1418

1401:                                             ; preds = %1398
  %1402 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA2_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380) %1400, ptr noundef nonnull align 1 dereferenceable(2) @.str.9)
          to label %.critedge942 unwind label %1418

.critedge942:                                     ; preds = %1401
  call void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %114, ptr noundef nonnull align 8 dereferenceable(380) %1402)
  call void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %115)
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %115) #11
  %1403 = load <2 x double>, ptr %1389, align 8, !tbaa !145
  %.pre2069 = load double, ptr %1387, align 8, !tbaa !198
  br label %.critedge943

.critedge943:                                     ; preds = %1391, %.critedge942
  %1404 = phi double [ %.4815, %1391 ], [ %.pre2069, %.critedge942 ]
  %1405 = phi <2 x double> [ %1394, %1391 ], [ %1403, %.critedge942 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %114) #11
  %1406 = getelementptr inbounds i8, ptr %459, i64 96
  %1407 = load double, ptr %1406, align 8, !tbaa !132
  %1408 = getelementptr inbounds i8, ptr %459, i64 120
  %1409 = load double, ptr %1408, align 8, !tbaa !176
  %1410 = fdiv double %1407, %1409
  %1411 = insertelement <2 x double> poison, double %1407, i64 0
  %1412 = insertelement <2 x double> %1411, double %1410, i64 1
  %1413 = fadd <2 x double> %1412, %1405
  store <2 x double> %1413, ptr %1389, align 8, !tbaa !145
  %1414 = fadd double %1407, %1404
  store double %1414, ptr %1387, align 8, !tbaa !198
  br label %1421

1415:                                             ; preds = %1384, %1382, %1379
  %1416 = landingpad { ptr, i32 }
          cleanup
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %113)
          to label %1417 unwind label %1524

1417:                                             ; preds = %1415
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %113) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %112) #11
  br label %1522

1418:                                             ; preds = %1401, %1398, %1395
  %1419 = landingpad { ptr, i32 }
          cleanup
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %115)
          to label %1420 unwind label %1524

1420:                                             ; preds = %1418
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %115) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %114) #11
  br label %1522

1421:                                             ; preds = %.critedge940, %.critedge943, %1375
  %1422 = load i8, ptr %460, align 8, !tbaa !158, !range !52, !noundef !53
  %1423 = trunc nuw i8 %1422 to i1
  br i1 %1423, label %1424, label %1452

1424:                                             ; preds = %1421
  %1425 = sitofp i64 %128 to double
  %1426 = getelementptr inbounds i8, ptr %459, i64 8
  %1427 = load double, ptr %1426, align 8, !tbaa !171
  %1428 = fdiv double %1425, %1427
  %1429 = getelementptr inbounds i8, ptr %459, i64 24
  store double %1428, ptr %1429, align 8, !tbaa !201
  %1430 = call double @llvm.fmuladd.f64(double %.7786, double 2.000000e+00, double %.7810)
  %1431 = call double @llvm.fmuladd.f64(double %.7778, double 3.000000e+00, double %1430)
  %1432 = call double @llvm.fmuladd.f64(double %.7770, double 4.000000e+00, double %1431)
  %1433 = getelementptr inbounds i8, ptr %459, i64 216
  store double %1432, ptr %1433, align 8, !tbaa !202
  %1434 = getelementptr inbounds i8, ptr %459, i64 176
  %1435 = load double, ptr %1434, align 8, !tbaa !159
  %1436 = call double @llvm.fmuladd.f64(double %1435, double %.7794, double %.7802)
  %1437 = getelementptr inbounds i8, ptr %459, i64 208
  store double %1436, ptr %1437, align 8, !tbaa !203
  %1438 = getelementptr inbounds i8, ptr %459, i64 224
  store double %.6762, ptr %1438, align 8, !tbaa !204
  %1439 = load ptr, ptr %451, align 8, !tbaa !9
  %1440 = getelementptr inbounds i8, ptr %1439, i64 8
  %1441 = load i32, ptr %1440, align 8, !tbaa !142
  %1442 = icmp sgt i32 %1441, 0
  br i1 %1442, label %1443, label %1447

1443:                                             ; preds = %1424
  %1444 = insertelement <2 x double> poison, double %1432, i64 0
  %1445 = insertelement <2 x double> %1444, double %.6762, i64 1
  %1446 = fadd <2 x double> %1445, <double 1.000000e+00, double 1.000000e+00>
  store <2 x double> %1446, ptr %1433, align 8, !tbaa !145
  br label %1447

1447:                                             ; preds = %1443, %1424
  %1448 = load i64, ptr %58, align 8, !tbaa !5
  %1449 = sitofp i64 %1448 to double
  %1450 = getelementptr inbounds i8, ptr %459, i64 248
  store double %1449, ptr %1450, align 8, !tbaa !205
  %1451 = getelementptr inbounds i8, ptr %459, i64 256
  store double %.5821, ptr %1451, align 8, !tbaa !206
  br label %1452

1452:                                             ; preds = %1447, %1421
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %116) #11
  %1453 = getelementptr inbounds i8, ptr %0, i64 56
  %1454 = call { ptr, ptr } @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterE5beginEv(ptr noundef nonnull align 8 dereferenceable(32) %1453)
  %1455 = extractvalue { ptr, ptr } %1454, 0
  store ptr %1455, ptr %116, align 8
  %1456 = getelementptr inbounds i8, ptr %116, i64 8
  %1457 = extractvalue { ptr, ptr } %1454, 1
  store ptr %1457, ptr %1456, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %117) #11
  %1458 = call { ptr, ptr } @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterE3endEv(ptr noundef nonnull align 8 dereferenceable(32) %1453)
  %1459 = extractvalue { ptr, ptr } %1458, 0
  store ptr %1459, ptr %117, align 8
  %1460 = getelementptr inbounds i8, ptr %117, i64 8
  %1461 = extractvalue { ptr, ptr } %1458, 1
  store ptr %1461, ptr %1460, align 8
  %1462 = call noundef zeroext i1 @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterE14const_iteratorneERKS7_(ptr noundef nonnull align 8 dereferenceable(16) %116, ptr noundef nonnull align 8 dereferenceable(16) %117)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %117) #11
  br i1 %1462, label %.lr.ph2002, label %._crit_edge2003

.lr.ph2002:                                       ; preds = %1452
  %1463 = getelementptr inbounds i8, ptr %459, i64 192
  %1464 = getelementptr inbounds i8, ptr %459, i64 200
  %1465 = getelementptr inbounds i8, ptr %459, i64 176
  %1466 = getelementptr inbounds i8, ptr %459, i64 56
  %1467 = sitofp i64 %5 to double
  br label %1468

._crit_edge2003:                                  ; preds = %1514, %1452
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %116) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %58) #11
  br label %1521

1468:                                             ; preds = %.lr.ph2002, %1514
  %1469 = call noundef ptr @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterE14const_iterator3keyEv(ptr noundef nonnull align 8 dereferenceable(16) %116)
  %.not837 = icmp eq ptr %1469, null
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %118) #11
  br i1 %.not837, label %.critedge945, label %.critedge946

.critedge945:                                     ; preds = %1468
  call void @llvm.lifetime.start.p0(i64 384, ptr nonnull %119) #11
  call void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %119, ptr noundef nonnull @.str.3, i32 noundef 914, ptr noundef nonnull @.str.19, i32 noundef 0)
  %1470 = call noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %119)
  call void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %118, ptr noundef nonnull align 8 dereferenceable(380) %1470)
  call void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %119)
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %119) #11
  br label %.critedge946

.critedge946:                                     ; preds = %1468, %.critedge945
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %118) #11
  %1471 = getelementptr inbounds i8, ptr %1469, i64 120
  %1472 = call noundef nonnull align 8 dereferenceable(1368) ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1471, i64 noundef 0) #11
  %1473 = call noundef nonnull align 8 dereferenceable(312) ptr @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE13get_or_createEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull %1472)
  %1474 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterE14const_iterator5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %116)
  %1475 = load i64, ptr %1474, align 8, !tbaa !5
  %1476 = mul nsw i64 %1475, %128
  %1477 = sitofp i64 %1476 to double
  %1478 = getelementptr inbounds i8, ptr %1473, i64 136
  %1479 = load double, ptr %1478, align 8, !tbaa !207
  %1480 = fadd double %1479, %1477
  store double %1480, ptr %1478, align 8, !tbaa !207
  %1481 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterE14const_iterator5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %116)
  %1482 = load i64, ptr %1481, align 8, !tbaa !5
  %1483 = sitofp i64 %1482 to double
  %1484 = load double, ptr %1463, align 8, !tbaa !96
  %1485 = getelementptr inbounds i8, ptr %1473, i64 192
  %1486 = load double, ptr %1485, align 8, !tbaa !96
  %1487 = call double @llvm.fmuladd.f64(double %1483, double %1484, double %1486)
  store double %1487, ptr %1485, align 8, !tbaa !96
  %1488 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterE14const_iterator5valueEv(ptr noundef nonnull align 8 dereferenceable(16) %116)
  %1489 = load i64, ptr %1488, align 8, !tbaa !5
  %1490 = sitofp i64 %1489 to double
  %1491 = load double, ptr %1464, align 8, !tbaa !97
  %1492 = getelementptr inbounds i8, ptr %1473, i64 200
  %1493 = load double, ptr %1492, align 8, !tbaa !97
  %1494 = call double @llvm.fmuladd.f64(double %1490, double %1491, double %1493)
  store double %1494, ptr %1492, align 8, !tbaa !97
  %1495 = load ptr, ptr %451, align 8, !tbaa !9
  %1496 = getelementptr inbounds i8, ptr %1495, i64 44
  %1497 = load i32, ptr %1496, align 4, !tbaa !101
  %1498 = sitofp i32 %1497 to double
  %1499 = getelementptr inbounds i8, ptr %1473, i64 184
  store double %1498, ptr %1499, align 8, !tbaa !174
  %1500 = getelementptr inbounds i8, ptr %1473, i64 176
  %1501 = load double, ptr %1500, align 8, !tbaa !159
  %1502 = fcmp ogt double %1501, 0.000000e+00
  br i1 %1502, label %1503, label %1506

1503:                                             ; preds = %.critedge946
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %120) #11
  store double %1498, ptr %120, align 8, !tbaa !145
  %1504 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %1500, ptr noundef nonnull align 8 dereferenceable(8) %120)
  %1505 = load double, ptr %1504, align 8, !tbaa !145
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %120) #11
  br label %1508

1506:                                             ; preds = %.critedge946
  %1507 = load double, ptr %1465, align 8, !tbaa !159
  br label %1508

1508:                                             ; preds = %1506, %1503
  %.sink = phi double [ %1505, %1503 ], [ %1507, %1506 ]
  store double %.sink, ptr %1500, align 8
  %1509 = getelementptr inbounds i8, ptr %1473, i64 56
  %1510 = load double, ptr %1509, align 8, !tbaa !162
  %1511 = fcmp ogt double %1510, 0.000000e+00
  br i1 %1511, label %1512, label %1514

1512:                                             ; preds = %1508
  %1513 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %1509, ptr noundef nonnull align 8 dereferenceable(8) %1466)
  br label %1514

1514:                                             ; preds = %1508, %1512
  %storemerge.in = phi ptr [ %1513, %1512 ], [ %1466, %1508 ]
  %storemerge = load double, ptr %storemerge.in, align 8, !tbaa !145
  store double %storemerge, ptr %1509, align 8, !tbaa !162
  %1515 = getelementptr inbounds i8, ptr %1473, i64 72
  store double 1.000000e+00, ptr %1515, align 8, !tbaa !172
  %1516 = getelementptr inbounds i8, ptr %1473, i64 80
  store double %1467, ptr %1516, align 8, !tbaa !173
  call void @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterE14const_iteratorppEi(ptr noundef nonnull align 8 dereferenceable(16) %116, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %117) #11
  %1517 = call { ptr, ptr } @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterE3endEv(ptr noundef nonnull align 8 dereferenceable(32) %1453)
  %1518 = extractvalue { ptr, ptr } %1517, 0
  store ptr %1518, ptr %117, align 8
  %1519 = extractvalue { ptr, ptr } %1517, 1
  store ptr %1519, ptr %1460, align 8
  %1520 = call noundef zeroext i1 @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterE14const_iteratorneERKS7_(ptr noundef nonnull align 8 dereferenceable(16) %116, ptr noundef nonnull align 8 dereferenceable(16) %117)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %117) #11
  br i1 %1520, label %1468, label %._crit_edge2003, !llvm.loop !208

1521:                                             ; preds = %._crit_edge2003, %._crit_edge2037
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #11
  ret void

1522:                                             ; preds = %1420, %1417, %1374
  %.pn869.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn869.pn.pn.pn, %1374 ], [ %1419, %1420 ], [ %1416, %1417 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %58) #11
  br label %1523

1523:                                             ; preds = %1522, %705
  %.pn883.pn = phi { ptr, i32 } [ %.pn883, %705 ], [ %.pn869.pn.pn.pn.pn, %1522 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #11
  resume { ptr, i32 } %.pn883.pn

1524:                                             ; preds = %1418, %1415, %1327, %1319, %1311, %950
  %1525 = landingpad { ptr, i32 }
          catch ptr null
  %1526 = extractvalue { ptr, i32 } %1525, 0
  call void @__clang_call_terminate(ptr %1526) #12
  unreachable
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(120) ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Halide8Internal13Autoscheduler8LoopNest10get_boundsEPKNS1_11FunctionDAG4NodeE(ptr noundef nonnull align 8 dereferenceable(196), ptr noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 8 dereferenceable(380)) local_unnamed_addr #4 align 2

declare void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380), ptr noundef, i32 noundef, ptr noundef, i32 noundef) unnamed_addr #5

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380)) local_unnamed_addr #4 align 2

declare void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380)) unnamed_addr #5

; Function Attrs: noinline noreturn nounwind uwtable
declare hidden void @__clang_call_terminate(ptr noundef) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(312) ptr @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE13get_or_createEPKS5_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents5loopsEii(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef, i32 noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(41) ptr @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS2_8LoopNest5SitesELi4E22PerfectHashMapAsserterE3getEPKS5_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents15region_computedEi(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(312) ptr @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE3getEPKS5_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, ptr } @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE5beginEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE8iteratorneERKS9_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { ptr, ptr } @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE3endEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE8iterator3keyEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(312) ptr @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE8iterator5valueEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt6vectorIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt6vectorIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #7

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS1_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE8iteratorppEi(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(120) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Halide8Internal8Function4argsB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS6_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS6_EE9push_backERKS6_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS6_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS6_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS6_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZNKSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE5countERKS6_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZNSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE6insertERKS6_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(1368) ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents15region_requiredEi(ptr noundef nonnull align 8 dereferenceable(16), i32 noundef) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIlERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(1368) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK6Halide8Internal13Autoscheduler8LoopNest31set_working_set_at_task_featureElP14PerfectHashMapINS1_11FunctionDAG4Node5StageENS0_16ScheduleFeaturesELi4E22PerfectHashMapAsserterE(ptr noundef nonnull align 8 dereferenceable(196), i64 noundef, ptr noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler4Span15constant_extentEv(ptr noundef nonnull align 8 dereferenceable(17)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS7_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS7_EE12emplace_backIJRKS7_EEERS7_DpOT_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS7_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS7_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS7_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageENS2_8LoopNest5SitesELi4E22PerfectHashMapAsserterE8containsEPKS5_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA19_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380), ptr noundef nonnull align 1 dereferenceable(19)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3 align 2

declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Halide8Internal8Function4nameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA2_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380), ptr noundef nonnull align 1 dereferenceable(2)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler12LoadJacobianESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler12LoadJacobianESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKN6Halide8Internal13Autoscheduler12LoadJacobianESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal13Autoscheduler12LoadJacobianESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EE12emplace_backIJRKS4_RKS7_EEERS8_DpOT_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN6Halide8Internal13Autoscheduler12LoadJacobianESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS4_11FunctionDAG4NodeEESt6vectorIS9_SaIS9_EEEEbRKNS_17__normal_iteratorIT_T0_EESJ_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS4_11FunctionDAG4NodeEESt6vectorIS9_SaIS9_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK6Halide8Internal13Autoscheduler12LoadJacobianmlERKS2_(ptr dead_on_unwind noalias writable sret(%"class.Halide::Internal::Autoscheduler::LoadJacobian") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EE12emplace_backIJRS4_RKS7_EEERS8_DpOT_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN6Halide8Internal13Autoscheduler12LoadJacobianD2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EE12emplace_backIJS8_EEERS8_DpOT_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS4_11FunctionDAG4NodeEESt6vectorIS9_SaIS9_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EE4swapERSA_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorISt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS3_11FunctionDAG4NodeEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS7_EE12emplace_backIJPS5_EEERS7_DpOT_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK6Halide8Internal13Autoscheduler12LoadJacobian5countEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK6Halide8Internal13Autoscheduler12LoadJacobianclEii(ptr dead_on_unwind noalias writable sret(%"struct.Halide::Internal::Autoscheduler::OptionalRational") align 8, ptr noundef nonnull align 8 dereferenceable(32), i32 noundef, i32 noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler16OptionalRationaleqEi(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZNSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE4findERKS6_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #8

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span3minEv(ptr noundef nonnull align 8 dereferenceable(17)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span3maxEv(ptr noundef nonnull align 8 dereferenceable(17)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIlEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIPKN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS7_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA24_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380), ptr noundef nonnull align 1 dereferenceable(24)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIA31_cEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380), ptr noundef nonnull align 1 dereferenceable(31)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReportlsIdEERS1_RKT_(ptr noundef nonnull align 8 dereferenceable(380), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNK14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterE14const_iterator5valueEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1 align 2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.smin.i64(i64, i64) #9

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #10

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { alwaysinline mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { noinline noreturn nounwind uwtable "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #8 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #9 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #10 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #11 = { nounwind }
attributes #12 = { noreturn nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !19, i64 176}
!10 = !{!"_ZTSN6Halide8Internal13Autoscheduler8LoopNestE", !11, i64 0, !15, i64 8, !20, i64 32, !24, i64 56, !30, i64 88, !38, i64 136, !19, i64 168, !19, i64 176, !44, i64 184, !44, i64 185, !44, i64 186, !14, i64 188, !14, i64 192}
!11 = !{!"_ZTSN6Halide8Internal8RefCountE", !12, i64 0}
!12 = !{!"_ZTSSt6atomicIiE", !13, i64 0}
!13 = !{!"_ZTSSt13__atomic_baseIiE", !14, i64 0}
!14 = !{!"int", !7, i64 0}
!15 = !{!"_ZTSSt6vectorIlSaIlEE", !16, i64 0}
!16 = !{!"_ZTSSt12_Vector_baseIlSaIlEE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIlSaIlEE12_Vector_implE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIlSaIlEE17_Vector_impl_dataE", !19, i64 0, !19, i64 8, !19, i64 16}
!19 = !{!"any pointer", !7, i64 0}
!20 = !{!"_ZTSSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE17_Vector_impl_dataE", !19, i64 0, !19, i64 8, !19, i64 16}
!24 = !{!"_ZTS14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterE", !25, i64 0, !14, i64 24, !29, i64 28}
!25 = !{!"_ZTSSt6vectorISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElESaIS8_EE", !26, i64 0}
!26 = !{!"_ZTSSt12_Vector_baseISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElESaIS8_EE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElESaIS8_EE12_Vector_implE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElESaIS8_EE17_Vector_impl_dataE", !19, i64 0, !19, i64 8, !19, i64 16}
!29 = !{!"_ZTSN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterEUt_E", !7, i64 0}
!30 = !{!"_ZTSSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE", !31, i64 0}
!31 = !{!"_ZTSSt8_Rb_treeIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeES6_St9_IdentityIS6_ESt4lessIS6_ESaIS6_EE", !32, i64 0}
!32 = !{!"_ZTSNSt8_Rb_treeIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeES6_St9_IdentityIS6_ESt4lessIS6_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !33, i64 0, !35, i64 8}
!33 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEEE", !34, i64 0}
!34 = !{!"_ZTSSt4lessIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEE"}
!35 = !{!"_ZTSSt15_Rb_tree_header", !36, i64 0, !6, i64 32}
!36 = !{!"_ZTSSt18_Rb_tree_node_base", !37, i64 0, !19, i64 8, !19, i64 16, !19, i64 24}
!37 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!38 = !{!"_ZTS14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeENS1_12IntrusivePtrIKNS2_13BoundContentsEEELi4E22PerfectHashMapAsserterE", !39, i64 0, !14, i64 24, !43, i64 28}
!39 = !{!"_ZTSSt6vectorISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeENS2_12IntrusivePtrIKNS3_13BoundContentsEEEESaISC_EE", !40, i64 0}
!40 = !{!"_ZTSSt12_Vector_baseISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeENS2_12IntrusivePtrIKNS3_13BoundContentsEEEESaISC_EE", !41, i64 0}
!41 = !{!"_ZTSNSt12_Vector_baseISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeENS2_12IntrusivePtrIKNS3_13BoundContentsEEEESaISC_EE12_Vector_implE", !42, i64 0}
!42 = !{!"_ZTSNSt12_Vector_baseISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeENS2_12IntrusivePtrIKNS3_13BoundContentsEEEESaISC_EE17_Vector_impl_dataE", !19, i64 0, !19, i64 8, !19, i64 16}
!43 = !{!"_ZTSN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeENS1_12IntrusivePtrIKNS2_13BoundContentsEEELi4E22PerfectHashMapAsserterEUt_E", !7, i64 0}
!44 = !{!"bool", !7, i64 0}
!45 = !{!46, !44, i64 32}
!46 = !{!"_ZTSN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopE", !47, i64 0, !44, i64 32, !44, i64 33, !49, i64 40, !49, i64 48, !14, i64 56, !44, i64 60, !14, i64 64, !44, i64 68, !6, i64 72, !6, i64 80, !47, i64 88}
!47 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !48, i64 0, !6, i64 8, !7, i64 16}
!48 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !19, i64 0}
!49 = !{!"_ZTSN6Halide4ExprE", !50, i64 0}
!50 = !{!"_ZTSN6Halide8Internal8IRHandleE", !51, i64 0}
!51 = !{!"_ZTSN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEEE", !19, i64 0}
!52 = !{i8 0, i8 2}
!53 = !{}
!54 = !{!55, !14, i64 0}
!55 = !{!"_ZTSN6Halide13MachineParamsE", !14, i64 0, !6, i64 8, !56, i64 16}
!56 = !{!"float", !7, i64 0}
!57 = !{!10, !44, i64 186}
!58 = distinct !{!58, !59}
!59 = !{!"llvm.loop.mustprogress"}
!60 = !{!19, !19, i64 0}
!61 = !{!62, !44, i64 185}
!62 = !{!"_ZTSN6Halide8Internal13Autoscheduler11FunctionDAG4NodeE", !19, i64 0, !63, i64 8, !66, i64 32, !67, i64 40, !71, i64 64, !75, i64 88, !44, i64 112, !79, i64 120, !83, i64 144, !14, i64 168, !14, i64 172, !14, i64 176, !14, i64 180, !44, i64 184, !44, i64 185, !44, i64 186, !44, i64 187, !44, i64 188, !87, i64 192}
!63 = !{!"_ZTSN6Halide8Internal8FunctionE", !64, i64 0}
!64 = !{!"_ZTSN6Halide8Internal11FunctionPtrE", !65, i64 0, !19, i64 8, !14, i64 16}
!65 = !{!"_ZTSN6Halide8Internal12IntrusivePtrINS0_13FunctionGroupEEE", !19, i64 0}
!66 = !{!"double", !7, i64 0}
!67 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG16SymbolicIntervalESaIS4_EE", !68, i64 0}
!68 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG16SymbolicIntervalESaIS4_EE", !69, i64 0}
!69 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG16SymbolicIntervalESaIS4_EE12_Vector_implE", !70, i64 0}
!70 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG16SymbolicIntervalESaIS4_EE17_Vector_impl_dataE", !19, i64 0, !19, i64 8, !19, i64 16}
!71 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler4SpanESaIS3_EE", !72, i64 0}
!72 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler4SpanESaIS3_EE", !73, i64 0}
!73 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler4SpanESaIS3_EE12_Vector_implE", !74, i64 0}
!74 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler4SpanESaIS3_EE17_Vector_impl_dataE", !19, i64 0, !19, i64 8, !19, i64 16}
!75 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoESaIS5_EE", !76, i64 0}
!76 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoESaIS5_EE", !77, i64 0}
!77 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoESaIS5_EE12_Vector_implE", !78, i64 0}
!78 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoESaIS5_EE17_Vector_impl_dataE", !19, i64 0, !19, i64 8, !19, i64 16}
!79 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE", !80, i64 0}
!80 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE", !81, i64 0}
!81 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE12_Vector_implE", !82, i64 0}
!82 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE17_Vector_impl_dataE", !19, i64 0, !19, i64 8, !19, i64 16}
!83 = !{!"_ZTSSt6vectorIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE", !84, i64 0}
!84 = !{!"_ZTSSt12_Vector_baseIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE", !85, i64 0}
!85 = !{!"_ZTSNSt12_Vector_baseIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE12_Vector_implE", !86, i64 0}
!86 = !{!"_ZTSNSt12_Vector_baseIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE17_Vector_impl_dataE", !19, i64 0, !19, i64 8, !19, i64 16}
!87 = !{!"_ZTSSt10unique_ptrIN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_EE", !88, i64 0}
!88 = !{!"_ZTSSt15__uniq_ptr_dataIN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_ELb1ELb1EE", !89, i64 0}
!89 = !{!"_ZTSSt15__uniq_ptr_implIN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_EE", !90, i64 0}
!90 = !{!"_ZTSSt5tupleIJPN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_EEE", !91, i64 0}
!91 = !{!"_ZTSSt11_Tuple_implILm0EJPN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_EEE", !92, i64 0}
!92 = !{!"_ZTSSt10_Head_baseILm0EPN6Halide8Internal13Autoscheduler13BoundContents6LayoutELb0EE", !19, i64 0}
!93 = !{!94, !66, i64 0}
!94 = !{!"_ZTSN6Halide8Internal16ScheduleFeaturesE", !66, i64 0, !66, i64 8, !66, i64 16, !66, i64 24, !66, i64 32, !66, i64 40, !66, i64 48, !66, i64 56, !66, i64 64, !66, i64 72, !66, i64 80, !66, i64 88, !66, i64 96, !66, i64 104, !66, i64 112, !66, i64 120, !66, i64 128, !66, i64 136, !66, i64 144, !66, i64 152, !66, i64 160, !66, i64 168, !66, i64 176, !66, i64 184, !66, i64 192, !66, i64 200, !66, i64 208, !66, i64 216, !66, i64 224, !66, i64 232, !66, i64 240, !66, i64 248, !66, i64 256, !66, i64 264, !66, i64 272, !66, i64 280, !66, i64 288, !66, i64 296, !66, i64 304}
!95 = !{!94, !66, i64 16}
!96 = !{!94, !66, i64 192}
!97 = !{!94, !66, i64 200}
!98 = !{!99, !19, i64 16}
!99 = !{!"_ZTSN6Halide8Internal13Autoscheduler8LoopNest5SitesE", !19, i64 0, !19, i64 8, !19, i64 16, !19, i64 24, !19, i64 32, !44, i64 40}
!100 = !{!10, !14, i64 192}
!101 = !{!102, !14, i64 44}
!102 = !{!"_ZTSN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageE", !19, i64 0, !14, i64 8, !103, i64 16, !44, i64 40, !14, i64 44, !107, i64 48, !108, i64 1200, !47, i64 1264, !14, i64 1296, !14, i64 1300, !83, i64 1304, !115, i64 1328}
!103 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE", !104, i64 0}
!104 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE", !105, i64 0}
!105 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE12_Vector_implE", !106, i64 0}
!106 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE17_Vector_impl_dataE", !19, i64 0, !19, i64 8, !19, i64 16}
!107 = !{!"_ZTSN6Halide8Internal16PipelineFeaturesE", !7, i64 0, !7, i64 28, !7, i64 700, !7, i64 812, !7, i64 924, !7, i64 1036}
!108 = !{!"_ZTSN6Halide5StageE", !63, i64 0, !109, i64 24, !6, i64 32, !111, i64 40}
!109 = !{!"_ZTSN6Halide8Internal10DefinitionE", !110, i64 0}
!110 = !{!"_ZTSN6Halide8Internal12IntrusivePtrINS0_18DefinitionContentsEEE", !19, i64 0}
!111 = !{!"_ZTSSt6vectorIN6Halide3VarESaIS1_EE", !112, i64 0}
!112 = !{!"_ZTSSt12_Vector_baseIN6Halide3VarESaIS1_EE", !113, i64 0}
!113 = !{!"_ZTSNSt12_Vector_baseIN6Halide3VarESaIS1_EE12_Vector_implE", !114, i64 0}
!114 = !{!"_ZTSNSt12_Vector_baseIN6Halide3VarESaIS1_EE17_Vector_impl_dataE", !19, i64 0, !19, i64 8, !19, i64 16}
!115 = !{!"_ZTSSt6vectorIbSaIbEE", !116, i64 0}
!116 = !{!"_ZTSSt13_Bvector_baseISaIbEE", !117, i64 0}
!117 = !{!"_ZTSNSt13_Bvector_baseISaIbEE13_Bvector_implE", !118, i64 0}
!118 = !{!"_ZTSNSt13_Bvector_baseISaIbEE18_Bvector_impl_dataE", !119, i64 0, !119, i64 16, !19, i64 32}
!119 = !{!"_ZTSSt13_Bit_iterator", !120, i64 0}
!120 = !{!"_ZTSSt18_Bit_iterator_base", !19, i64 0, !14, i64 8}
!121 = distinct !{!121, !59}
!122 = !{!94, !66, i64 32}
!123 = !{!62, !66, i64 32}
!124 = !{!94, !66, i64 88}
!125 = !{!62, !14, i64 180}
!126 = !{!10, !14, i64 188}
!127 = distinct !{!127, !59}
!128 = !{!94, !66, i64 112}
!129 = !{!94, !66, i64 232}
!130 = !{!94, !66, i64 240}
!131 = distinct !{!131, !59}
!132 = !{!94, !66, i64 96}
!133 = !{!94, !66, i64 296}
!134 = !{!10, !19, i64 168}
!135 = !{!94, !66, i64 288}
!136 = !{!102, !19, i64 0}
!137 = !{!94, !66, i64 104}
!138 = !{!94, !66, i64 304}
!139 = distinct !{!139, !59}
!140 = !{!94, !66, i64 128}
!141 = !{!94, !66, i64 40}
!142 = !{!102, !14, i64 8}
!143 = distinct !{!143, !59}
!144 = !{!62, !44, i64 186}
!145 = !{!66, !66, i64 0}
!146 = !{!147, !19, i64 32}
!147 = !{!"_ZTSN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeE", !148, i64 0, !19, i64 24, !19, i64 32, !14, i64 40, !44, i64 44, !152, i64 48}
!148 = !{!"_ZTSSt6vectorISt4pairIN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoES6_ESaIS7_EE", !149, i64 0}
!149 = !{!"_ZTSSt12_Vector_baseISt4pairIN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoES6_ESaIS7_EE", !150, i64 0}
!150 = !{!"_ZTSNSt12_Vector_baseISt4pairIN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoES6_ESaIS7_EE12_Vector_implE", !151, i64 0}
!151 = !{!"_ZTSNSt12_Vector_baseISt4pairIN6Halide8Internal13Autoscheduler11FunctionDAG4Edge9BoundInfoES6_ESaIS7_EE17_Vector_impl_dataE", !19, i64 0, !19, i64 8, !19, i64 16}
!152 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler12LoadJacobianESaIS3_EE", !153, i64 0}
!153 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler12LoadJacobianESaIS3_EE", !154, i64 0}
!154 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler12LoadJacobianESaIS3_EE12_Vector_implE", !155, i64 0}
!155 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler12LoadJacobianESaIS3_EE17_Vector_impl_dataE", !19, i64 0, !19, i64 8, !19, i64 16}
!156 = !{!147, !14, i64 40}
!157 = distinct !{!157, !59}
!158 = !{!10, !44, i64 184}
!159 = !{!94, !66, i64 176}
!160 = !{!94, !66, i64 48}
!161 = !{!46, !44, i64 33}
!162 = !{!94, !66, i64 56}
!163 = distinct !{!163, !59}
!164 = distinct !{!164, !59}
!165 = distinct !{!165, !59}
!166 = !{!147, !19, i64 24}
!167 = !{!99, !19, i64 8}
!168 = distinct !{!168, !59}
!169 = !{!94, !66, i64 264}
!170 = !{!94, !66, i64 272}
!171 = !{!94, !66, i64 8}
!172 = !{!94, !66, i64 72}
!173 = !{!94, !66, i64 80}
!174 = !{!94, !66, i64 184}
!175 = distinct !{!175, !59}
!176 = !{!94, !66, i64 120}
!177 = !{!94, !66, i64 168}
!178 = distinct !{!178, !59}
!179 = !{!94, !66, i64 64}
!180 = !{!99, !19, i64 32}
!181 = distinct !{!181, !59}
!182 = !{!183, !19, i64 32}
!183 = !{!"_ZTSSt4pairIN6Halide8Internal13Autoscheduler12LoadJacobianEPNS2_11FunctionDAG4NodeEE", !184, i64 0, !19, i64 32}
!184 = !{!"_ZTSN6Halide8Internal13Autoscheduler12LoadJacobianE", !185, i64 0, !6, i64 24}
!185 = !{!"_ZTSSt6vectorIS_IN6Halide8Internal13Autoscheduler16OptionalRationalESaIS3_EESaIS5_EE", !186, i64 0}
!186 = !{!"_ZTSSt12_Vector_baseISt6vectorIN6Halide8Internal13Autoscheduler16OptionalRationalESaIS4_EESaIS6_EE", !187, i64 0}
!187 = !{!"_ZTSNSt12_Vector_baseISt6vectorIN6Halide8Internal13Autoscheduler16OptionalRationalESaIS4_EESaIS6_EE12_Vector_implE", !188, i64 0}
!188 = !{!"_ZTSNSt12_Vector_baseISt6vectorIN6Halide8Internal13Autoscheduler16OptionalRationalESaIS4_EESaIS6_EE17_Vector_impl_dataE", !19, i64 0, !19, i64 8, !19, i64 16}
!189 = !{!99, !44, i64 40}
!190 = !{!99, !19, i64 0}
!191 = distinct !{!191, !59}
!192 = distinct !{!192, !59}
!193 = distinct !{!193, !59}
!194 = distinct !{!194, !59}
!195 = !{i64 0, i64 8, !5, i64 8, i64 8, !5, i64 16, i64 1, !196}
!196 = !{!44, !44, i64 0}
!197 = distinct !{!197, !59}
!198 = !{!94, !66, i64 160}
!199 = !{!94, !66, i64 144}
!200 = !{!94, !66, i64 152}
!201 = !{!94, !66, i64 24}
!202 = !{!94, !66, i64 216}
!203 = !{!94, !66, i64 208}
!204 = !{!94, !66, i64 224}
!205 = !{!94, !66, i64 248}
!206 = !{!94, !66, i64 256}
!207 = !{!94, !66, i64 136}
!208 = distinct !{!208, !59}


; Effective O3 passes: AggressiveInstCombinePass,BDCEPass,CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,MemCpyOptPass,MergedLoadStoreMotionPass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass