; 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"

%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::vector<long>, std::allocator<std::vector<long>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<long>, std::allocator<std::vector<long>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<long>, std::allocator<std::vector<long>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<long>, std::allocator<std::vector<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.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.std::unique_ptr.139" = type { %"struct.std::__uniq_ptr_data.140" }
%"struct.std::__uniq_ptr_data.140" = type { %"class.std::__uniq_ptr_impl.141" }
%"class.std::__uniq_ptr_impl.141" = type { %"class.std::tuple.142" }
%"class.std::tuple.142" = type { %"struct.std::_Tuple_impl.143" }
%"struct.std::_Tuple_impl.143" = type { %"struct.std::_Head_base.146" }
%"struct.std::_Head_base.146" = type { ptr }
%"struct.std::pair" = type <{ %"struct.std::_Rb_tree_const_iterator", i8, [7 x i8] }>
%"struct.std::_Rb_tree_const_iterator" = type { ptr }
%"class.Halide::Internal::aslog" = type { i8 }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"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.__gnu_cxx::__normal_iterator.147" = type { ptr }
%"struct.Halide::Internal::IntrusivePtr.80" = type { ptr }
%"class.Halide::Internal::Autoscheduler::Span" = type <{ i64, i64, i8, [7 x i8] }>
%"class.__gnu_cxx::__normal_iterator.148" = type { ptr }
%"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.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.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::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::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::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.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.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.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::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.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] }>

@.str.3 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [27 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: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN6Halide8Internal13Autoscheduler11may_subtileEv() #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Halide8Internal13Autoscheduler16generate_tilingsERKSt6vectorIlSaIlEEiib(ptr dead_on_unwind noalias writable sret(%"class.std::vector") align 8, ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef, i1 noundef zeroext) #1

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorIS_IlSaIlEESaIS1_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_cxxneIPSt6vectorIlSaIlEES1_IS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(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(24) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt6vectorIlSaIlEES1_IS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) #2 align 2

; 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 @_ZNSt6vectorIlSaIlEEixEm(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(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(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(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt6vectorIlSaIlEES1_IS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) #2 align 2

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterEaSERKS6_(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(48) ptr @_ZNSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EEaSERKSA_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(48)) #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeENS1_12IntrusivePtrIKNS2_13BoundContentsEEELi4E22PerfectHashMapAsserterEaSERKSA_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #4 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 zeroext i1 @_ZNK6Halide8Internal13Autoscheduler8LoopNest7is_rootEv(ptr noundef nonnull align 8 dereferenceable(196)) #2 align 2

; 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) #1 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 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) #1 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 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 { ptr, i8 } @_ZNSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE6insertERKS6_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(8)) #1 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: 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)) #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Halide8Internal5aslogC2Ei(ptr noundef nonnull align 1 dereferenceable(1), i32 noundef) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRA2_KcEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(2)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE4sizeEv(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 @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #2 align 2

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

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

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) #9

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN6Halide8Internal13Autoscheduler8LoopNestC2Ev(ptr noundef nonnull align 8 dereferenceable(196)) unnamed_addr #3 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Halide8Internal13Autoscheduler8LoopNest12compute_hereEPKNS1_11FunctionDAG4NodeEbi(ptr noundef nonnull align 8 dereferenceable(196), ptr noundef, i1 noundef zeroext, i32 noundef) #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6Halide8Internal13Autoscheduler4SpanC2Ellb(ptr noundef nonnull align 8 dereferenceable(17), i64 noundef, i64 noundef, i1 noundef zeroext) unnamed_addr #2 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZNK6Halide8Internal13Autoscheduler8LoopNest16compute_in_tilesEPKNS1_11FunctionDAG4NodeEPKS2_RKNS_13MachineParamsEib(ptr dead_on_unwind noalias writable sret(%"class.std::vector.8") align 8 %0, ptr noundef nonnull align 8 dereferenceable(196) %1, ptr noundef %2, ptr noundef %3, ptr noundef nonnull align 8 dereferenceable(20) %4, i32 noundef %5, i1 noundef zeroext %6) #1 align 2 personality ptr @__gxx_personality_v0 {
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca i8, align 1
  %15 = alloca %"class.Halide::Internal::Voidifier", align 1
  %16 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %17 = alloca i1, align 1
  %18 = alloca i1, align 1
  %19 = alloca ptr, align 8
  %20 = alloca i32, align 4
  %21 = alloca i1, align 1
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca i64, align 8
  %27 = alloca i64, align 8
  %28 = alloca i32, align 4
  %29 = alloca i64, align 8
  %30 = alloca i64, align 8
  %31 = alloca i32, align 4
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca i32, align 4
  %35 = alloca i8, align 1
  %36 = alloca i32, align 4
  %37 = alloca %"class.std::unique_ptr.139", align 8
  %38 = alloca %"struct.std::pair", align 8
  %39 = alloca ptr, align 8
  %40 = alloca %"class.Halide::Internal::Voidifier", align 1
  %41 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %42 = alloca i1, align 1
  %43 = alloca i1, align 1
  %44 = alloca %"class.std::vector", align 8
  %45 = alloca %"class.Halide::Internal::aslog", align 1
  %46 = alloca i64, align 8
  %47 = alloca ptr, align 8
  %48 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %49 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %50 = alloca %"class.std::vector.3", align 8
  %51 = alloca ptr, align 8
  %52 = alloca i32, align 4
  %53 = alloca i64, align 8
  %54 = alloca ptr, align 8
  %55 = alloca %"class.__gnu_cxx::__normal_iterator.147", align 8
  %56 = alloca %"class.__gnu_cxx::__normal_iterator.147", align 8
  %57 = alloca i64, align 8
  %58 = alloca double, align 8
  %59 = alloca double, align 8
  %60 = alloca ptr, align 8
  %61 = alloca ptr, align 8
  %62 = alloca i64, align 8
  %63 = alloca ptr, align 8
  %64 = alloca %"struct.Halide::Internal::IntrusivePtr.80", align 8
  %65 = alloca i64, align 8
  %66 = alloca i64, align 8
  %67 = alloca ptr, align 8
  %68 = alloca i64, align 8
  %69 = alloca i64, align 8
  %70 = alloca i64, align 8
  %71 = alloca i8, align 1
  %72 = alloca %"class.Halide::Internal::Autoscheduler::Span", align 8
  %73 = alloca %"struct.std::pair", align 8
  %74 = alloca i8, align 1
  %75 = alloca %"class.std::vector.8", align 8
  %76 = alloca ptr, align 8
  %77 = alloca %"class.__gnu_cxx::__normal_iterator.148", align 8
  %78 = alloca %"class.__gnu_cxx::__normal_iterator.148", align 8
  %79 = alloca ptr, align 8
  %80 = alloca ptr, align 8
  %81 = alloca i8, align 1
  %82 = alloca ptr, align 8
  %83 = alloca i32, align 4
  %84 = alloca i64, align 8
  %85 = alloca i64, align 8
  %86 = alloca i32, align 4
  %87 = alloca %"class.std::vector.8", align 8
  %88 = alloca ptr, align 8
  %89 = alloca %"class.__gnu_cxx::__normal_iterator.148", align 8
  %90 = alloca %"class.__gnu_cxx::__normal_iterator.148", align 8
  %91 = alloca ptr, align 8
  %92 = alloca ptr, align 8
  %93 = alloca %"struct.std::pair", align 8
  store ptr %0, ptr %8, align 8
  store ptr %1, ptr %9, align 8, !tbaa !5
  store ptr %2, ptr %10, align 8, !tbaa !5
  store ptr %3, ptr %11, align 8, !tbaa !5
  store ptr %4, ptr %12, align 8, !tbaa !5
  store i32 %5, ptr %13, align 4, !tbaa !9
  %94 = zext i1 %6 to i8
  store i8 %94, ptr %14, align 1, !tbaa !11
  %95 = load ptr, ptr %9, align 8
  %96 = load ptr, ptr %10, align 8, !tbaa !5
  %97 = icmp ne ptr %96, null
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #11
  store i1 false, ptr %17, align 1
  store i1 false, ptr %18, align 1
  br i1 %97, label %98, label %99

98:                                               ; preds = %7
  br label %103

99:                                               ; preds = %7
  call void @llvm.lifetime.start.p0(i64 384, ptr %16) #11
  store i1 true, ptr %17, align 1
  call void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %16, ptr noundef @.str.3, i32 noundef 1325, ptr noundef @.str.19, i32 noundef 0)
  store i1 true, ptr %18, align 1
  %100 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %16)
          to label %101 unwind label %152

101:                                              ; preds = %99
  invoke void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %15, ptr noundef nonnull align 8 dereferenceable(380) %100)
          to label %102 unwind label %152

102:                                              ; preds = %101
  br label %103

103:                                              ; preds = %102, %98
  %104 = load i1, ptr %18, align 1
  br i1 %104, label %105, label %106

105:                                              ; preds = %103
  call void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %16)
  br label %106

106:                                              ; preds = %105, %103
  %107 = load i1, ptr %17, align 1
  br i1 %107, label %108, label %109

108:                                              ; preds = %106
  call void @llvm.lifetime.end.p0(i64 384, ptr %16) #11
  br label %109

109:                                              ; preds = %108, %106
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #11
  store i1 false, ptr %21, align 1
  call void @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #11
  %110 = load ptr, ptr %11, align 8, !tbaa !5
  %111 = icmp ne ptr %110, null
  br i1 %111, label %112, label %246

112:                                              ; preds = %109
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #11
  %113 = load ptr, ptr %10, align 8, !tbaa !5
  %114 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Halide8Internal13Autoscheduler8LoopNest10get_boundsEPKNS1_11FunctionDAG4NodeE(ptr noundef nonnull align 8 dereferenceable(196) %95, ptr noundef %113)
          to label %115 unwind label %163

115:                                              ; preds = %112
  store ptr %114, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #11
  %116 = load ptr, ptr %11, align 8, !tbaa !5
  %117 = load ptr, ptr %10, align 8, !tbaa !5
  %118 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Halide8Internal13Autoscheduler8LoopNest10get_boundsEPKNS1_11FunctionDAG4NodeE(ptr noundef nonnull align 8 dereferenceable(196) %116, ptr noundef %117)
          to label %119 unwind label %167

119:                                              ; preds = %115
  store ptr %118, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #11
  %120 = load ptr, ptr %22, align 8, !tbaa !5
  %121 = invoke noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %120)
          to label %122 unwind label %171

122:                                              ; preds = %119
  %123 = load i32, ptr %13, align 4, !tbaa !9
  %124 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents15region_computedEi(ptr noundef nonnull align 8 dereferenceable(16) %121, i32 noundef %123)
          to label %125 unwind label %171

125:                                              ; preds = %122
  store ptr %124, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #11
  %126 = load ptr, ptr %23, align 8, !tbaa !5
  %127 = invoke noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %126)
          to label %128 unwind label %175

128:                                              ; preds = %125
  %129 = load i32, ptr %13, align 4, !tbaa !9
  %130 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents15region_computedEi(ptr noundef nonnull align 8 dereferenceable(16) %127, i32 noundef %129)
          to label %131 unwind label %175

131:                                              ; preds = %128
  store ptr %130, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #11
  %132 = load ptr, ptr %24, align 8, !tbaa !5
  %133 = invoke noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17) %132)
          to label %134 unwind label %179

134:                                              ; preds = %131
  store i64 %133, ptr %26, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #11
  %135 = load ptr, ptr %25, align 8, !tbaa !5
  %136 = invoke noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17) %135)
          to label %137 unwind label %183

137:                                              ; preds = %134
  store i64 %136, ptr %27, align 8, !tbaa !13
  %138 = load i64, ptr %27, align 8, !tbaa !13
  %139 = load ptr, ptr %10, align 8, !tbaa !5
  %140 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %139, i32 0, i32 9
  %141 = load i32, ptr %140, align 8, !tbaa !15
  %142 = sext i32 %141 to i64
  %143 = icmp sge i64 %138, %142
  br i1 %143, label %144, label %187

144:                                              ; preds = %137
  %145 = load i64, ptr %26, align 8, !tbaa !13
  %146 = load ptr, ptr %10, align 8, !tbaa !5
  %147 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %146, i32 0, i32 9
  %148 = load i32, ptr %147, align 8, !tbaa !15
  %149 = sext i32 %148 to i64
  %150 = icmp slt i64 %145, %149
  br i1 %150, label %151, label %187

151:                                              ; preds = %144
  store i1 true, ptr %21, align 1
  store i32 1, ptr %28, align 4
  br label %237

152:                                              ; preds = %101, %99
  %153 = landingpad { ptr, i32 }
          cleanup
  %154 = extractvalue { ptr, i32 } %153, 0
  store ptr %154, ptr %19, align 8
  %155 = extractvalue { ptr, i32 } %153, 1
  store i32 %155, ptr %20, align 4
  %156 = load i1, ptr %18, align 1
  br i1 %156, label %157, label %159

157:                                              ; preds = %152
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %16)
          to label %158 unwind label %1106

158:                                              ; preds = %157
  br label %159

159:                                              ; preds = %158, %152
  %160 = load i1, ptr %17, align 1
  br i1 %160, label %161, label %162

161:                                              ; preds = %159
  call void @llvm.lifetime.end.p0(i64 384, ptr %16) #11
  br label %162

162:                                              ; preds = %161, %159
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #11
  br label %1101

163:                                              ; preds = %112
  %164 = landingpad { ptr, i32 }
          cleanup
  %165 = extractvalue { ptr, i32 } %164, 0
  store ptr %165, ptr %19, align 8
  %166 = extractvalue { ptr, i32 } %164, 1
  store i32 %166, ptr %20, align 4
  br label %245

167:                                              ; preds = %115
  %168 = landingpad { ptr, i32 }
          cleanup
  %169 = extractvalue { ptr, i32 } %168, 0
  store ptr %169, ptr %19, align 8
  %170 = extractvalue { ptr, i32 } %168, 1
  store i32 %170, ptr %20, align 4
  br label %244

171:                                              ; preds = %122, %119
  %172 = landingpad { ptr, i32 }
          cleanup
  %173 = extractvalue { ptr, i32 } %172, 0
  store ptr %173, ptr %19, align 8
  %174 = extractvalue { ptr, i32 } %172, 1
  store i32 %174, ptr %20, align 4
  br label %243

175:                                              ; preds = %128, %125
  %176 = landingpad { ptr, i32 }
          cleanup
  %177 = extractvalue { ptr, i32 } %176, 0
  store ptr %177, ptr %19, align 8
  %178 = extractvalue { ptr, i32 } %176, 1
  store i32 %178, ptr %20, align 4
  br label %242

179:                                              ; preds = %131
  %180 = landingpad { ptr, i32 }
          cleanup
  %181 = extractvalue { ptr, i32 } %180, 0
  store ptr %181, ptr %19, align 8
  %182 = extractvalue { ptr, i32 } %180, 1
  store i32 %182, ptr %20, align 4
  br label %241

183:                                              ; preds = %134
  %184 = landingpad { ptr, i32 }
          cleanup
  %185 = extractvalue { ptr, i32 } %184, 0
  store ptr %185, ptr %19, align 8
  %186 = extractvalue { ptr, i32 } %184, 1
  store i32 %186, ptr %20, align 4
  br label %240

187:                                              ; preds = %144, %137
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #11
  store i64 1, ptr %29, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #11
  store i64 1, ptr %30, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #11
  store i32 0, ptr %31, align 4, !tbaa !9
  br label %188

188:                                              ; preds = %218, %187
  %189 = load i32, ptr %31, align 4, !tbaa !9
  %190 = load ptr, ptr %10, align 8, !tbaa !5
  %191 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %190, i32 0, i32 12
  %192 = load i32, ptr %191, align 4, !tbaa !47
  %193 = icmp slt i32 %189, %192
  br i1 %193, label %195, label %194

194:                                              ; preds = %188
  store i32 2, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #11
  br label %230

195:                                              ; preds = %188
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #11
  %196 = load ptr, ptr %22, align 8, !tbaa !5
  %197 = invoke noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %196)
          to label %198 unwind label %221

198:                                              ; preds = %195
  %199 = load i32, ptr %31, align 4, !tbaa !9
  %200 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents15region_computedEi(ptr noundef nonnull align 8 dereferenceable(16) %197, i32 noundef %199)
          to label %201 unwind label %221

201:                                              ; preds = %198
  store ptr %200, ptr %32, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #11
  %202 = load ptr, ptr %23, align 8, !tbaa !5
  %203 = invoke noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %202)
          to label %204 unwind label %225

204:                                              ; preds = %201
  %205 = load i32, ptr %31, align 4, !tbaa !9
  %206 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents15region_computedEi(ptr noundef nonnull align 8 dereferenceable(16) %203, i32 noundef %205)
          to label %207 unwind label %225

207:                                              ; preds = %204
  store ptr %206, ptr %33, align 8, !tbaa !5
  %208 = load ptr, ptr %32, align 8, !tbaa !5
  %209 = invoke noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17) %208)
          to label %210 unwind label %225

210:                                              ; preds = %207
  %211 = load i64, ptr %29, align 8, !tbaa !13
  %212 = mul nsw i64 %211, %209
  store i64 %212, ptr %29, align 8, !tbaa !13
  %213 = load ptr, ptr %33, align 8, !tbaa !5
  %214 = invoke noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17) %213)
          to label %215 unwind label %225

215:                                              ; preds = %210
  %216 = load i64, ptr %30, align 8, !tbaa !13
  %217 = mul nsw i64 %216, %214
  store i64 %217, ptr %30, align 8, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #11
  br label %218

218:                                              ; preds = %215
  %219 = load i32, ptr %31, align 4, !tbaa !9
  %220 = add nsw i32 %219, 1
  store i32 %220, ptr %31, align 4, !tbaa !9
  br label %188, !llvm.loop !48

221:                                              ; preds = %198, %195
  %222 = landingpad { ptr, i32 }
          cleanup
  %223 = extractvalue { ptr, i32 } %222, 0
  store ptr %223, ptr %19, align 8
  %224 = extractvalue { ptr, i32 } %222, 1
  store i32 %224, ptr %20, align 4
  br label %229

225:                                              ; preds = %210, %207, %204, %201
  %226 = landingpad { ptr, i32 }
          cleanup
  %227 = extractvalue { ptr, i32 } %226, 0
  store ptr %227, ptr %19, align 8
  %228 = extractvalue { ptr, i32 } %226, 1
  store i32 %228, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #11
  br label %229

229:                                              ; preds = %225, %221
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #11
  br label %240

230:                                              ; preds = %194
  %231 = load i64, ptr %29, align 8, !tbaa !13
  %232 = load i64, ptr %30, align 8, !tbaa !13
  %233 = icmp sge i64 %231, %232
  br i1 %233, label %234, label %235

234:                                              ; preds = %230
  store i1 true, ptr %21, align 1
  store i32 1, ptr %28, align 4
  br label %236

235:                                              ; preds = %230
  store i32 0, ptr %28, align 4
  br label %236

236:                                              ; preds = %235, %234
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #11
  br label %237

237:                                              ; preds = %236, %151
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #11
  %238 = load i32, ptr %28, align 4
  switch i32 %238, label %1096 [
    i32 0, label %239
  ]

239:                                              ; preds = %237
  br label %246

240:                                              ; preds = %229, %183
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #11
  br label %241

241:                                              ; preds = %240, %179
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #11
  br label %242

242:                                              ; preds = %241, %175
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #11
  br label %243

243:                                              ; preds = %242, %171
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #11
  br label %244

244:                                              ; preds = %243, %167
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #11
  br label %245

245:                                              ; preds = %244, %163
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #11
  br label %1100

246:                                              ; preds = %239, %109
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #11
  store i32 -1, ptr %34, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #11
  store i8 0, ptr %35, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #11
  store i32 0, ptr %36, align 4, !tbaa !9
  br label %247

247:                                              ; preds = %275, %246
  %248 = load i32, ptr %36, align 4, !tbaa !9
  %249 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %95, i32 0, i32 3
  %250 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %249) #11
  %251 = trunc i64 %250 to i32
  %252 = icmp slt i32 %248, %251
  br i1 %252, label %254, label %253

253:                                              ; preds = %247
  store i32 5, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #11
  br label %278

254:                                              ; preds = %247
  %255 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %95, i32 0, i32 3
  %256 = load i32, ptr %36, align 4, !tbaa !9
  %257 = sext i32 %256 to i64
  %258 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %255, i64 noundef %257) #11
  %259 = invoke noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %258)
          to label %260 unwind label %268

260:                                              ; preds = %254
  %261 = load ptr, ptr %10, align 8, !tbaa !5
  %262 = invoke noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler8LoopNest5callsEPKNS1_11FunctionDAG4NodeE(ptr noundef nonnull align 8 dereferenceable(196) %259, ptr noundef %261)
          to label %263 unwind label %268

263:                                              ; preds = %260
  br i1 %262, label %264, label %274

264:                                              ; preds = %263
  %265 = load i32, ptr %34, align 4, !tbaa !9
  %266 = icmp ne i32 %265, -1
  br i1 %266, label %267, label %272

267:                                              ; preds = %264
  store i8 1, ptr %35, align 1, !tbaa !11
  br label %272

268:                                              ; preds = %260, %254
  %269 = landingpad { ptr, i32 }
          cleanup
  %270 = extractvalue { ptr, i32 } %269, 0
  store ptr %270, ptr %19, align 8
  %271 = extractvalue { ptr, i32 } %269, 1
  store i32 %271, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #11
  br label %1095

272:                                              ; preds = %267, %264
  %273 = load i32, ptr %36, align 4, !tbaa !9
  store i32 %273, ptr %34, align 4, !tbaa !9
  br label %274

274:                                              ; preds = %272, %263
  br label %275

275:                                              ; preds = %274
  %276 = load i32, ptr %36, align 4, !tbaa !9
  %277 = add nsw i32 %276, 1
  store i32 %277, ptr %36, align 4, !tbaa !9
  br label %247, !llvm.loop !50

278:                                              ; preds = %253
  %279 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %95, i32 0, i32 9
  %280 = load i8, ptr %279, align 8, !tbaa !51, !range !84, !noundef !85
  %281 = trunc i8 %280 to i1
  br i1 %281, label %341, label %282

282:                                              ; preds = %278
  %283 = load i8, ptr %14, align 1, !tbaa !11, !range !84, !noundef !85
  %284 = trunc i8 %283 to i1
  br i1 %284, label %285, label %300

285:                                              ; preds = %282
  %286 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %95, i32 0, i32 2
  %287 = call noundef zeroext i1 @_ZNKSt6vectorIlSaIlEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %286) #11
  br i1 %287, label %300, label %288

288:                                              ; preds = %285
  %289 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %95, i32 0, i32 13
  %290 = load i32, ptr %289, align 4, !tbaa !86
  %291 = icmp eq i32 %290, -1
  br i1 %291, label %300, label %292

292:                                              ; preds = %288
  %293 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %95, i32 0, i32 2
  %294 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %95, i32 0, i32 13
  %295 = load i32, ptr %294, align 4, !tbaa !86
  %296 = sext i32 %295 to i64
  %297 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %293, i64 noundef %296) #11
  %298 = load i64, ptr %297, align 8, !tbaa !13
  %299 = icmp eq i64 %298, 1
  br i1 %299, label %300, label %341

300:                                              ; preds = %292, %288, %285, %282
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #11
  %301 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 200) #12
          to label %302 unwind label %320

302:                                              ; preds = %300
  call void @_ZN6Halide8Internal13Autoscheduler8LoopNestC2Ev(ptr noundef nonnull align 8 dereferenceable(196) %301) #11
  call void @_ZNSt10unique_ptrIN6Halide8Internal13Autoscheduler8LoopNestESt14default_deleteIS3_EEC2IS5_vEEPS3_(ptr noundef nonnull align 8 dereferenceable(8) %37, ptr noundef %301) #11
  %303 = call noundef ptr @_ZNKSt10unique_ptrIN6Halide8Internal13Autoscheduler8LoopNestESt14default_deleteIS3_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %37) #11
  invoke void @_ZN6Halide8Internal13Autoscheduler8LoopNest9copy_fromERKS2_(ptr noundef nonnull align 8 dereferenceable(196) %303, ptr noundef nonnull align 8 dereferenceable(196) %95)
          to label %304 unwind label %324

304:                                              ; preds = %302
  %305 = call noundef ptr @_ZNKSt10unique_ptrIN6Halide8Internal13Autoscheduler8LoopNestESt14default_deleteIS3_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %37) #11
  %306 = load ptr, ptr %10, align 8, !tbaa !5
  %307 = load i32, ptr %13, align 4, !tbaa !9
  invoke void @_ZN6Halide8Internal13Autoscheduler8LoopNest12compute_hereEPKNS1_11FunctionDAG4NodeEbi(ptr noundef nonnull align 8 dereferenceable(196) %305, ptr noundef %306, i1 noundef zeroext true, i32 noundef %307)
          to label %308 unwind label %324

308:                                              ; preds = %304
  %309 = load i8, ptr %14, align 1, !tbaa !11, !range !84, !noundef !85
  %310 = trunc i8 %309 to i1
  br i1 %310, label %328, label %311

311:                                              ; preds = %308
  %312 = call noundef ptr @_ZNKSt10unique_ptrIN6Halide8Internal13Autoscheduler8LoopNestESt14default_deleteIS3_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %37) #11
  %313 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %312, i32 0, i32 5
  %314 = invoke { ptr, i8 } @_ZNSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE6insertERKS6_(ptr noundef nonnull align 8 dereferenceable(48) %313, ptr noundef nonnull align 8 dereferenceable(8) %10)
          to label %315 unwind label %324

315:                                              ; preds = %311
  %316 = getelementptr inbounds { ptr, i8 }, ptr %38, i32 0, i32 0
  %317 = extractvalue { ptr, i8 } %314, 0
  store ptr %317, ptr %316, align 8
  %318 = getelementptr inbounds { ptr, i8 }, ptr %38, i32 0, i32 1
  %319 = extractvalue { ptr, i8 } %314, 1
  store i8 %319, ptr %318, align 8
  br label %331

320:                                              ; preds = %300
  %321 = landingpad { ptr, i32 }
          cleanup
  %322 = extractvalue { ptr, i32 } %321, 0
  store ptr %322, ptr %19, align 8
  %323 = extractvalue { ptr, i32 } %321, 1
  store i32 %323, ptr %20, align 4
  br label %340

324:                                              ; preds = %311, %304, %302
  %325 = landingpad { ptr, i32 }
          cleanup
  %326 = extractvalue { ptr, i32 } %325, 0
  store ptr %326, ptr %19, align 8
  %327 = extractvalue { ptr, i32 } %325, 1
  store i32 %327, ptr %20, align 4
  br label %339

328:                                              ; preds = %308
  %329 = call noundef ptr @_ZNKSt10unique_ptrIN6Halide8Internal13Autoscheduler8LoopNestESt14default_deleteIS3_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %37) #11
  %330 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %329, i32 0, i32 10
  store i8 0, ptr %330, align 1, !tbaa !87
  br label %331

331:                                              ; preds = %328, %315
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #11
  %332 = call noundef ptr @_ZNSt10unique_ptrIN6Halide8Internal13Autoscheduler8LoopNestESt14default_deleteIS3_EE7releaseEv(ptr noundef nonnull align 8 dereferenceable(8) %37) #11
  store ptr %332, ptr %39, align 8, !tbaa !5
  %333 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE12emplace_backIJPS4_EEERS6_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(8) %39)
          to label %334 unwind label %335

334:                                              ; preds = %331
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #11
  call void @_ZNSt10unique_ptrIN6Halide8Internal13Autoscheduler8LoopNestESt14default_deleteIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #11
  br label %341

335:                                              ; preds = %331
  %336 = landingpad { ptr, i32 }
          cleanup
  %337 = extractvalue { ptr, i32 } %336, 0
  store ptr %337, ptr %19, align 8
  %338 = extractvalue { ptr, i32 } %336, 1
  store i32 %338, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #11
  br label %339

339:                                              ; preds = %335, %324
  call void @_ZNSt10unique_ptrIN6Halide8Internal13Autoscheduler8LoopNestESt14default_deleteIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #11
  br label %340

340:                                              ; preds = %339, %320
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #11
  br label %1095

341:                                              ; preds = %334, %292, %278
  %342 = load ptr, ptr %10, align 8, !tbaa !5
  %343 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %342, i32 0, i32 15
  %344 = load i8, ptr %343, align 2, !tbaa !88, !range !84, !noundef !85
  %345 = trunc i8 %344 to i1
  br i1 %345, label %346, label %347

346:                                              ; preds = %341
  store i1 true, ptr %21, align 1
  store i32 1, ptr %28, align 4
  br label %1094

347:                                              ; preds = %341
  %348 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %95, i32 0, i32 10
  %349 = load i8, ptr %348, align 1, !tbaa !87, !range !84, !noundef !85
  %350 = trunc i8 %349 to i1
  br i1 %350, label %351, label %856

351:                                              ; preds = %347
  %352 = load ptr, ptr %11, align 8, !tbaa !5
  %353 = icmp ne ptr %352, null
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #11
  store i1 false, ptr %42, align 1
  store i1 false, ptr %43, align 1
  br i1 %353, label %354, label %355

354:                                              ; preds = %351
  br label %360

355:                                              ; preds = %351
  call void @llvm.lifetime.start.p0(i64 384, ptr %41) #11
  store i1 true, ptr %42, align 1
  invoke void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %41, ptr noundef @.str.3, i32 noundef 1391, ptr noundef @.str.26, i32 noundef 0)
          to label %356 unwind label %388

356:                                              ; preds = %355
  store i1 true, ptr %43, align 1
  %357 = invoke noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %41)
          to label %358 unwind label %392

358:                                              ; preds = %356
  invoke void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %40, ptr noundef nonnull align 8 dereferenceable(380) %357)
          to label %359 unwind label %392

359:                                              ; preds = %358
  br label %360

360:                                              ; preds = %359, %354
  %361 = load i1, ptr %43, align 1
  br i1 %361, label %362, label %364

362:                                              ; preds = %360
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %41)
          to label %363 unwind label %388

363:                                              ; preds = %362
  br label %364

364:                                              ; preds = %363, %360
  %365 = load i1, ptr %42, align 1
  br i1 %365, label %366, label %367

366:                                              ; preds = %364
  call void @llvm.lifetime.end.p0(i64 384, ptr %41) #11
  br label %367

367:                                              ; preds = %366, %364
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #11
  call void @llvm.lifetime.start.p0(i64 24, ptr %44) #11
  %368 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %95, i32 0, i32 2
  %369 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %95, i32 0, i32 2
  %370 = call noundef i64 @_ZNKSt6vectorIlSaIlEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %369) #11
  %371 = sub i64 %370, 1
  %372 = trunc i64 %371 to i32
  %373 = load i8, ptr %14, align 1, !tbaa !11, !range !84, !noundef !85
  %374 = trunc i8 %373 to i1
  %375 = xor i1 %374, true
  invoke void @_ZN6Halide8Internal13Autoscheduler16generate_tilingsERKSt6vectorIlSaIlEEiib(ptr dead_on_unwind writable sret(%"class.std::vector") align 8 %44, ptr noundef nonnull align 8 dereferenceable(24) %368, i32 noundef %372, i32 noundef 2, i1 noundef zeroext %375)
          to label %376 unwind label %404

376:                                              ; preds = %367
  %377 = call noundef i64 @_ZNKSt6vectorIS_IlSaIlEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %44) #11
  %378 = icmp ugt i64 %377, 10000
  br i1 %378, label %379, label %417

379:                                              ; preds = %376
  call void @llvm.lifetime.start.p0(i64 1, ptr %45) #11
  invoke void @_ZN6Halide8Internal5aslogC2Ei(ptr noundef nonnull align 1 dereferenceable(1) %45, i32 noundef 0)
          to label %380 unwind label %408

380:                                              ; preds = %379
  %381 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRA27_KcEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1) %45, ptr noundef nonnull align 1 dereferenceable(27) @.str.39)
          to label %382 unwind label %408

382:                                              ; preds = %380
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #11
  %383 = call noundef i64 @_ZNKSt6vectorIS_IlSaIlEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %44) #11
  store i64 %383, ptr %46, align 8, !tbaa !13
  %384 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsImEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1) %381, ptr noundef nonnull align 8 dereferenceable(8) %46)
          to label %385 unwind label %412

385:                                              ; preds = %382
  %386 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRA2_KcEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1) %384, ptr noundef nonnull align 1 dereferenceable(2) @.str.9)
          to label %387 unwind label %412

387:                                              ; preds = %385
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #11
  br label %417

388:                                              ; preds = %362, %355
  %389 = landingpad { ptr, i32 }
          cleanup
  %390 = extractvalue { ptr, i32 } %389, 0
  store ptr %390, ptr %19, align 8
  %391 = extractvalue { ptr, i32 } %389, 1
  store i32 %391, ptr %20, align 4
  br label %400

392:                                              ; preds = %358, %356
  %393 = landingpad { ptr, i32 }
          cleanup
  %394 = extractvalue { ptr, i32 } %393, 0
  store ptr %394, ptr %19, align 8
  %395 = extractvalue { ptr, i32 } %393, 1
  store i32 %395, ptr %20, align 4
  %396 = load i1, ptr %43, align 1
  br i1 %396, label %397, label %399

397:                                              ; preds = %392
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %41)
          to label %398 unwind label %1106

398:                                              ; preds = %397
  br label %399

399:                                              ; preds = %398, %392
  br label %400

400:                                              ; preds = %399, %388
  %401 = load i1, ptr %42, align 1
  br i1 %401, label %402, label %403

402:                                              ; preds = %400
  call void @llvm.lifetime.end.p0(i64 384, ptr %41) #11
  br label %403

403:                                              ; preds = %402, %400
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #11
  br label %1095

404:                                              ; preds = %367
  %405 = landingpad { ptr, i32 }
          cleanup
  %406 = extractvalue { ptr, i32 } %405, 0
  store ptr %406, ptr %19, align 8
  %407 = extractvalue { ptr, i32 } %405, 1
  store i32 %407, ptr %20, align 4
  br label %855

408:                                              ; preds = %380, %379
  %409 = landingpad { ptr, i32 }
          cleanup
  %410 = extractvalue { ptr, i32 } %409, 0
  store ptr %410, ptr %19, align 8
  %411 = extractvalue { ptr, i32 } %409, 1
  store i32 %411, ptr %20, align 4
  br label %416

412:                                              ; preds = %385, %382
  %413 = landingpad { ptr, i32 }
          cleanup
  %414 = extractvalue { ptr, i32 } %413, 0
  store ptr %414, ptr %19, align 8
  %415 = extractvalue { ptr, i32 } %413, 1
  store i32 %415, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #11
  br label %416

416:                                              ; preds = %412, %408
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #11
  br label %854

417:                                              ; preds = %387, %376
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #11
  store ptr %44, ptr %47, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #11
  %418 = load ptr, ptr %47, align 8, !tbaa !5
  %419 = call ptr @_ZNSt6vectorIS_IlSaIlEESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %418) #11
  %420 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %48, i32 0, i32 0
  store ptr %419, ptr %420, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #11
  %421 = load ptr, ptr %47, align 8, !tbaa !5
  %422 = call ptr @_ZNSt6vectorIS_IlSaIlEESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %421) #11
  %423 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %49, i32 0, i32 0
  store ptr %422, ptr %423, align 8
  br label %424

424:                                              ; preds = %843, %417
  %425 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt6vectorIlSaIlEES1_IS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull align 8 dereferenceable(8) %49) #11
  br i1 %425, label %427, label %426

426:                                              ; preds = %424
  store i32 8, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #11
  br label %853

427:                                              ; preds = %424
  call void @llvm.lifetime.start.p0(i64 24, ptr %50) #11
  %428 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt6vectorIlSaIlEES1_IS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %48) #11
  invoke void @_ZNSt6vectorIlSaIlEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %50, ptr noundef nonnull align 8 dereferenceable(24) %428)
          to label %429 unwind label %446

429:                                              ; preds = %427
  %430 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %95, i32 0, i32 11
  %431 = load i8, ptr %430, align 2, !tbaa !89, !range !84, !noundef !85
  %432 = trunc i8 %431 to i1
  br i1 %432, label %433, label %489

433:                                              ; preds = %429
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #11
  %434 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %95, i32 0, i32 8
  %435 = load ptr, ptr %434, align 8, !tbaa !90
  %436 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %435, i32 0, i32 2
  store ptr %436, ptr %51, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #11
  store i32 1, ptr %52, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #11
  store i64 0, ptr %53, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #11
  store ptr %50, ptr %54, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #11
  %437 = load ptr, ptr %54, align 8, !tbaa !5
  %438 = call ptr @_ZNSt6vectorIlSaIlEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %437) #11
  %439 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.147", ptr %55, i32 0, i32 0
  store ptr %438, ptr %439, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #11
  %440 = load ptr, ptr %54, align 8, !tbaa !5
  %441 = call ptr @_ZNSt6vectorIlSaIlEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %440) #11
  %442 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.147", ptr %56, i32 0, i32 0
  store ptr %441, ptr %442, align 8
  br label %443

443:                                              ; preds = %468, %433
  %444 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPlSt6vectorIlSaIlEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %55, ptr noundef nonnull align 8 dereferenceable(8) %56) #11
  br i1 %444, label %450, label %445

445:                                              ; preds = %443
  store i32 10, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #11
  br label %470

446:                                              ; preds = %427
  %447 = landingpad { ptr, i32 }
          cleanup
  %448 = extractvalue { ptr, i32 } %447, 0
  store ptr %448, ptr %19, align 8
  %449 = extractvalue { ptr, i32 } %447, 1
  store i32 %449, ptr %20, align 4
  br label %852

450:                                              ; preds = %443
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #11
  %451 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPlSt6vectorIlSaIlEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %55) #11
  %452 = load i64, ptr %451, align 8, !tbaa !13
  store i64 %452, ptr %57, align 8, !tbaa !13
  %453 = load ptr, ptr %51, align 8, !tbaa !5
  %454 = load i64, ptr %53, align 8, !tbaa !13
  %455 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %453, i64 noundef %454) #11
  %456 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Loop", ptr %455, i32 0, i32 1
  %457 = load i8, ptr %456, align 8, !tbaa !91, !range !84, !noundef !85
  %458 = trunc i8 %457 to i1
  br i1 %458, label %459, label %465

459:                                              ; preds = %450
  %460 = load i64, ptr %57, align 8, !tbaa !13
  %461 = load i32, ptr %52, align 4, !tbaa !9
  %462 = sext i32 %461 to i64
  %463 = mul nsw i64 %462, %460
  %464 = trunc i64 %463 to i32
  store i32 %464, ptr %52, align 4, !tbaa !9
  br label %465

465:                                              ; preds = %459, %450
  %466 = load i64, ptr %53, align 8, !tbaa !13
  %467 = add i64 %466, 1
  store i64 %467, ptr %53, align 8, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #11
  br label %468

468:                                              ; preds = %465
  %469 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPlSt6vectorIlSaIlEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %55) #11
  br label %443

470:                                              ; preds = %445
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #11
  %471 = load i32, ptr %52, align 4, !tbaa !9
  %472 = sitofp i32 %471 to double
  %473 = load ptr, ptr %12, align 8, !tbaa !5
  %474 = getelementptr inbounds %"struct.Halide::MachineParams", ptr %473, i32 0, i32 0
  %475 = load i32, ptr %474, align 8, !tbaa !98
  %476 = sitofp i32 %475 to double
  %477 = fdiv double %472, %476
  store double %477, ptr %58, align 8, !tbaa !101
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #11
  %478 = load double, ptr %58, align 8, !tbaa !101
  %479 = call double @llvm.ceil.f64(double %478)
  %480 = load double, ptr %58, align 8, !tbaa !101
  %481 = fdiv double %479, %480
  store double %481, ptr %59, align 8, !tbaa !101
  %482 = load double, ptr %59, align 8, !tbaa !101
  %483 = fcmp ogt double %482, 1.100000e+00
  br i1 %483, label %484, label %485

484:                                              ; preds = %470
  store i32 9, ptr %28, align 4
  br label %486

485:                                              ; preds = %470
  store i32 0, ptr %28, align 4
  br label %486

486:                                              ; preds = %485, %484
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #11
  %487 = load i32, ptr %28, align 4
  switch i32 %487, label %840 [
    i32 0, label %488
  ]

488:                                              ; preds = %486
  br label %489

489:                                              ; preds = %488, %429
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #11
  %490 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 200) #12
          to label %491 unwind label %597

491:                                              ; preds = %489
  call void @_ZN6Halide8Internal13Autoscheduler8LoopNestC2Ev(ptr noundef nonnull align 8 dereferenceable(196) %490) #11
  store ptr %490, ptr %60, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #11
  %492 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 200) #12
          to label %493 unwind label %601

493:                                              ; preds = %491
  call void @_ZN6Halide8Internal13Autoscheduler8LoopNestC2Ev(ptr noundef nonnull align 8 dereferenceable(196) %492) #11
  store ptr %492, ptr %61, align 8, !tbaa !5
  %494 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %95, i32 0, i32 7
  %495 = load ptr, ptr %494, align 8, !tbaa !102
  %496 = load ptr, ptr %61, align 8, !tbaa !5
  %497 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %496, i32 0, i32 7
  store ptr %495, ptr %497, align 8, !tbaa !102
  %498 = load ptr, ptr %60, align 8, !tbaa !5
  %499 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %498, i32 0, i32 7
  store ptr %495, ptr %499, align 8, !tbaa !102
  %500 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %95, i32 0, i32 8
  %501 = load ptr, ptr %500, align 8, !tbaa !90
  %502 = load ptr, ptr %61, align 8, !tbaa !5
  %503 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %502, i32 0, i32 8
  store ptr %501, ptr %503, align 8, !tbaa !90
  %504 = load ptr, ptr %60, align 8, !tbaa !5
  %505 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %504, i32 0, i32 8
  store ptr %501, ptr %505, align 8, !tbaa !90
  %506 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %95, i32 0, i32 10
  %507 = load i8, ptr %506, align 1, !tbaa !87, !range !84, !noundef !85
  %508 = trunc i8 %507 to i1
  br i1 %508, label %509, label %512

509:                                              ; preds = %493
  %510 = invoke noundef zeroext i1 @_ZN6Halide8Internal13Autoscheduler11may_subtileEv()
          to label %511 unwind label %601

511:                                              ; preds = %509
  br label %512

512:                                              ; preds = %511, %493
  %513 = phi i1 [ false, %493 ], [ %510, %511 ]
  %514 = load ptr, ptr %61, align 8, !tbaa !5
  %515 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %514, i32 0, i32 10
  %516 = zext i1 %513 to i8
  store i8 %516, ptr %515, align 1, !tbaa !87
  %517 = load ptr, ptr %60, align 8, !tbaa !5
  %518 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %517, i32 0, i32 10
  %519 = zext i1 %513 to i8
  store i8 %519, ptr %518, align 1, !tbaa !87
  %520 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %95, i32 0, i32 13
  %521 = load i32, ptr %520, align 4, !tbaa !86
  %522 = load ptr, ptr %61, align 8, !tbaa !5
  %523 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %522, i32 0, i32 13
  store i32 %521, ptr %523, align 4, !tbaa !86
  %524 = load ptr, ptr %60, align 8, !tbaa !5
  %525 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %524, i32 0, i32 13
  store i32 %521, ptr %525, align 4, !tbaa !86
  %526 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %95, i32 0, i32 14
  %527 = load i32, ptr %526, align 8, !tbaa !103
  %528 = load ptr, ptr %61, align 8, !tbaa !5
  %529 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %528, i32 0, i32 14
  store i32 %527, ptr %529, align 8, !tbaa !103
  %530 = load ptr, ptr %60, align 8, !tbaa !5
  %531 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %530, i32 0, i32 14
  store i32 %527, ptr %531, align 8, !tbaa !103
  %532 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %95, i32 0, i32 2
  %533 = load ptr, ptr %61, align 8, !tbaa !5
  %534 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %533, i32 0, i32 2
  %535 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIlSaIlEEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %534, ptr noundef nonnull align 8 dereferenceable(24) %532)
          to label %536 unwind label %601

536:                                              ; preds = %512
  %537 = load ptr, ptr %61, align 8, !tbaa !5
  %538 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %537, i32 0, i32 9
  store i8 0, ptr %538, align 8, !tbaa !51
  %539 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %95, i32 0, i32 11
  %540 = load i8, ptr %539, align 2, !tbaa !89, !range !84, !noundef !85
  %541 = trunc i8 %540 to i1
  %542 = load ptr, ptr %61, align 8, !tbaa !5
  %543 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %542, i32 0, i32 11
  %544 = zext i1 %541 to i8
  store i8 %544, ptr %543, align 2, !tbaa !89
  %545 = load ptr, ptr %60, align 8, !tbaa !5
  %546 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %545, i32 0, i32 11
  store i8 0, ptr %546, align 2, !tbaa !89
  %547 = load ptr, ptr %60, align 8, !tbaa !5
  %548 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %547, i32 0, i32 2
  %549 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %95, i32 0, i32 2
  %550 = call noundef i64 @_ZNKSt6vectorIlSaIlEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %549) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #11
  store i64 1, ptr %62, align 8, !tbaa !13
  invoke void @_ZNSt6vectorIlSaIlEE6resizeEmRKl(ptr noundef nonnull align 8 dereferenceable(24) %548, i64 noundef %550, ptr noundef nonnull align 8 dereferenceable(8) %62)
          to label %551 unwind label %605

551:                                              ; preds = %536
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #11
  %552 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %95, i32 0, i32 9
  %553 = load i8, ptr %552, align 8, !tbaa !51, !range !84, !noundef !85
  %554 = trunc i8 %553 to i1
  %555 = load ptr, ptr %60, align 8, !tbaa !5
  %556 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %555, i32 0, i32 9
  %557 = zext i1 %554 to i8
  store i8 %557, ptr %556, align 8, !tbaa !51
  %558 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %95, i32 0, i32 3
  %559 = load ptr, ptr %60, align 8, !tbaa !5
  %560 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %559, i32 0, i32 3
  %561 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EEaSERKS8_(ptr noundef nonnull align 8 dereferenceable(24) %560, ptr noundef nonnull align 8 dereferenceable(24) %558)
          to label %562 unwind label %601

562:                                              ; preds = %551
  %563 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %95, i32 0, i32 4
  %564 = load ptr, ptr %60, align 8, !tbaa !5
  %565 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %564, i32 0, i32 4
  %566 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterEaSERKS6_(ptr noundef nonnull align 8 dereferenceable(32) %565, ptr noundef nonnull align 8 dereferenceable(32) %563)
          to label %567 unwind label %601

567:                                              ; preds = %562
  %568 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %95, i32 0, i32 6
  %569 = load ptr, ptr %60, align 8, !tbaa !5
  %570 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %569, i32 0, i32 6
  %571 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeENS1_12IntrusivePtrIKNS2_13BoundContentsEEELi4E22PerfectHashMapAsserterEaSERKSA_(ptr noundef nonnull align 8 dereferenceable(32) %570, ptr noundef nonnull align 8 dereferenceable(32) %568)
          to label %572 unwind label %601

572:                                              ; preds = %567
  %573 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %95, i32 0, i32 5
  %574 = load ptr, ptr %60, align 8, !tbaa !5
  %575 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %574, i32 0, i32 5
  %576 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EEaSERKSA_(ptr noundef nonnull align 8 dereferenceable(48) %575, ptr noundef nonnull align 8 dereferenceable(48) %573)
          to label %577 unwind label %601

577:                                              ; preds = %572
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #11
  %578 = load ptr, ptr %60, align 8, !tbaa !5
  %579 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %95, i32 0, i32 7
  %580 = load ptr, ptr %579, align 8, !tbaa !102
  %581 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Halide8Internal13Autoscheduler8LoopNest10get_boundsEPKNS1_11FunctionDAG4NodeE(ptr noundef nonnull align 8 dereferenceable(196) %578, ptr noundef %580)
          to label %582 unwind label %609

582:                                              ; preds = %577
  %583 = invoke noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %581)
          to label %584 unwind label %609

584:                                              ; preds = %582
  %585 = invoke noundef ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents9make_copyEv(ptr noundef nonnull align 8 dereferenceable(16) %583)
          to label %586 unwind label %609

586:                                              ; preds = %584
  store ptr %585, ptr %63, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #11
  %587 = load ptr, ptr %11, align 8, !tbaa !5
  %588 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %95, i32 0, i32 7
  %589 = load ptr, ptr %588, align 8, !tbaa !102
  %590 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Halide8Internal13Autoscheduler8LoopNest10get_boundsEPKNS1_11FunctionDAG4NodeE(ptr noundef nonnull align 8 dereferenceable(196) %587, ptr noundef %589)
          to label %591 unwind label %613

591:                                              ; preds = %586
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(8) %64, ptr noundef nonnull align 8 dereferenceable(8) %590) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #11
  store i64 0, ptr %65, align 8, !tbaa !13
  br label %592

592:                                              ; preds = %708, %591
  %593 = load i64, ptr %65, align 8, !tbaa !13
  %594 = call noundef i64 @_ZNKSt6vectorIlSaIlEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %50) #11
  %595 = icmp ult i64 %593, %594
  br i1 %595, label %617, label %596

596:                                              ; preds = %592
  store i32 12, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #11
  br label %735

597:                                              ; preds = %489
  %598 = landingpad { ptr, i32 }
          cleanup
  %599 = extractvalue { ptr, i32 } %598, 0
  store ptr %599, ptr %19, align 8
  %600 = extractvalue { ptr, i32 } %598, 1
  store i32 %600, ptr %20, align 4
  br label %851

601:                                              ; preds = %760, %744, %572, %567, %562, %551, %512, %509, %491
  %602 = landingpad { ptr, i32 }
          cleanup
  %603 = extractvalue { ptr, i32 } %602, 0
  store ptr %603, ptr %19, align 8
  %604 = extractvalue { ptr, i32 } %602, 1
  store i32 %604, ptr %20, align 4
  br label %850

605:                                              ; preds = %536
  %606 = landingpad { ptr, i32 }
          cleanup
  %607 = extractvalue { ptr, i32 } %606, 0
  store ptr %607, ptr %19, align 8
  %608 = extractvalue { ptr, i32 } %606, 1
  store i32 %608, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #11
  br label %850

609:                                              ; preds = %584, %582, %577
  %610 = landingpad { ptr, i32 }
          cleanup
  %611 = extractvalue { ptr, i32 } %610, 0
  store ptr %611, ptr %19, align 8
  %612 = extractvalue { ptr, i32 } %610, 1
  store i32 %612, ptr %20, align 4
  br label %759

613:                                              ; preds = %586
  %614 = landingpad { ptr, i32 }
          cleanup
  %615 = extractvalue { ptr, i32 } %614, 0
  store ptr %615, ptr %19, align 8
  %616 = extractvalue { ptr, i32 } %614, 1
  store i32 %616, ptr %20, align 4
  br label %758

617:                                              ; preds = %592
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #11
  %618 = load i64, ptr %65, align 8, !tbaa !13
  %619 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %50, i64 noundef %618) #11
  %620 = load i64, ptr %619, align 8, !tbaa !13
  store i64 %620, ptr %66, align 8, !tbaa !13
  %621 = load ptr, ptr %61, align 8, !tbaa !5
  %622 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %621, i32 0, i32 2
  %623 = load i64, ptr %65, align 8, !tbaa !13
  %624 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %622, i64 noundef %623) #11
  %625 = load i64, ptr %624, align 8, !tbaa !13
  %626 = load i64, ptr %66, align 8, !tbaa !13
  %627 = add nsw i64 %625, %626
  %628 = sub nsw i64 %627, 1
  %629 = load i64, ptr %66, align 8, !tbaa !13
  %630 = sdiv i64 %628, %629
  %631 = load ptr, ptr %60, align 8, !tbaa !5
  %632 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %631, i32 0, i32 2
  %633 = load i64, ptr %65, align 8, !tbaa !13
  %634 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %632, i64 noundef %633) #11
  store i64 %630, ptr %634, align 8, !tbaa !13
  %635 = load i64, ptr %66, align 8, !tbaa !13
  %636 = load ptr, ptr %61, align 8, !tbaa !5
  %637 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %636, i32 0, i32 2
  %638 = load i64, ptr %65, align 8, !tbaa !13
  %639 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %637, i64 noundef %638) #11
  store i64 %635, ptr %639, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #11
  %640 = invoke noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %64)
          to label %641 unwind label %711

641:                                              ; preds = %617
  %642 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %95, i32 0, i32 8
  %643 = load ptr, ptr %642, align 8, !tbaa !90
  %644 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %643, i32 0, i32 1
  %645 = load i32, ptr %644, align 8, !tbaa !104
  %646 = load i64, ptr %65, align 8, !tbaa !13
  %647 = trunc i64 %646 to i32
  %648 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents5loopsEii(ptr noundef nonnull align 8 dereferenceable(16) %640, i32 noundef %645, i32 noundef %647)
          to label %649 unwind label %711

649:                                              ; preds = %641
  store ptr %648, ptr %67, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #11
  %650 = load ptr, ptr %67, align 8, !tbaa !5
  %651 = invoke noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span3minEv(ptr noundef nonnull align 8 dereferenceable(17) %650)
          to label %652 unwind label %715

652:                                              ; preds = %649
  store i64 %651, ptr %68, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #11
  %653 = load ptr, ptr %67, align 8, !tbaa !5
  %654 = invoke noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17) %653)
          to label %655 unwind label %719

655:                                              ; preds = %652
  store i64 %654, ptr %69, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #11
  %656 = load i64, ptr %69, align 8, !tbaa !13
  %657 = load i64, ptr %66, align 8, !tbaa !13
  %658 = add nsw i64 %656, %657
  %659 = sub nsw i64 %658, 1
  %660 = load i64, ptr %66, align 8, !tbaa !13
  %661 = sdiv i64 %659, %660
  store i64 %661, ptr %70, align 8, !tbaa !13
  %662 = load i64, ptr %66, align 8, !tbaa !13
  %663 = sdiv i64 %662, 2
  %664 = load i64, ptr %70, align 8, !tbaa !13
  %665 = mul nsw i64 %663, %664
  %666 = load i64, ptr %68, align 8, !tbaa !13
  %667 = add nsw i64 %666, %665
  store i64 %667, ptr %68, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 1, ptr %71) #11
  %668 = load ptr, ptr %67, align 8, !tbaa !5
  %669 = invoke noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler4Span15constant_extentEv(ptr noundef nonnull align 8 dereferenceable(17) %668)
          to label %670 unwind label %723

670:                                              ; preds = %655
  br i1 %669, label %674, label %671

671:                                              ; preds = %670
  %672 = load i64, ptr %66, align 8, !tbaa !13
  %673 = icmp sgt i64 %672, 1
  br i1 %673, label %674, label %688

674:                                              ; preds = %671, %670
  %675 = load i64, ptr %70, align 8, !tbaa !13
  %676 = icmp eq i64 %675, 1
  br i1 %676, label %686, label %677

677:                                              ; preds = %674
  %678 = load i64, ptr %66, align 8, !tbaa !13
  %679 = icmp eq i64 %678, 1
  br i1 %679, label %686, label %680

680:                                              ; preds = %677
  %681 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %95, i32 0, i32 8
  %682 = load ptr, ptr %681, align 8, !tbaa !90
  %683 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %682, i32 0, i32 1
  %684 = load i32, ptr %683, align 8, !tbaa !104
  %685 = icmp eq i32 %684, 0
  br label %686

686:                                              ; preds = %680, %677, %674
  %687 = phi i1 [ true, %677 ], [ true, %674 ], [ %685, %680 ]
  br label %688

688:                                              ; preds = %686, %671
  %689 = phi i1 [ false, %671 ], [ %687, %686 ]
  %690 = zext i1 %689 to i8
  store i8 %690, ptr %71, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 24, ptr %72) #11
  %691 = load i64, ptr %68, align 8, !tbaa !13
  %692 = load i64, ptr %68, align 8, !tbaa !13
  %693 = load i64, ptr %70, align 8, !tbaa !13
  %694 = add nsw i64 %692, %693
  %695 = sub nsw i64 %694, 1
  %696 = load i8, ptr %71, align 1, !tbaa !11, !range !84, !noundef !85
  %697 = trunc i8 %696 to i1
  invoke void @_ZN6Halide8Internal13Autoscheduler4SpanC2Ellb(ptr noundef nonnull align 8 dereferenceable(17) %72, i64 noundef %691, i64 noundef %695, i1 noundef zeroext %697)
          to label %698 unwind label %727

698:                                              ; preds = %688
  %699 = load ptr, ptr %63, align 8, !tbaa !5
  %700 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %95, i32 0, i32 8
  %701 = load ptr, ptr %700, align 8, !tbaa !90
  %702 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node::Stage", ptr %701, i32 0, i32 1
  %703 = load i32, ptr %702, align 8, !tbaa !104
  %704 = load i64, ptr %65, align 8, !tbaa !13
  %705 = trunc i64 %704 to i32
  %706 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZN6Halide8Internal13Autoscheduler13BoundContents5loopsEii(ptr noundef nonnull align 8 dereferenceable(16) %699, i32 noundef %703, i32 noundef %705)
          to label %707 unwind label %727

707:                                              ; preds = %698
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %706, ptr align 8 %72, i64 17, i1 false), !tbaa.struct !124
  call void @llvm.lifetime.end.p0(i64 24, ptr %72) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #11
  br label %708

708:                                              ; preds = %707
  %709 = load i64, ptr %65, align 8, !tbaa !13
  %710 = add i64 %709, 1
  store i64 %710, ptr %65, align 8, !tbaa !13
  br label %592, !llvm.loop !125

711:                                              ; preds = %641, %617
  %712 = landingpad { ptr, i32 }
          cleanup
  %713 = extractvalue { ptr, i32 } %712, 0
  store ptr %713, ptr %19, align 8
  %714 = extractvalue { ptr, i32 } %712, 1
  store i32 %714, ptr %20, align 4
  br label %734

715:                                              ; preds = %649
  %716 = landingpad { ptr, i32 }
          cleanup
  %717 = extractvalue { ptr, i32 } %716, 0
  store ptr %717, ptr %19, align 8
  %718 = extractvalue { ptr, i32 } %716, 1
  store i32 %718, ptr %20, align 4
  br label %733

719:                                              ; preds = %652
  %720 = landingpad { ptr, i32 }
          cleanup
  %721 = extractvalue { ptr, i32 } %720, 0
  store ptr %721, ptr %19, align 8
  %722 = extractvalue { ptr, i32 } %720, 1
  store i32 %722, ptr %20, align 4
  br label %732

723:                                              ; preds = %655
  %724 = landingpad { ptr, i32 }
          cleanup
  %725 = extractvalue { ptr, i32 } %724, 0
  store ptr %725, ptr %19, align 8
  %726 = extractvalue { ptr, i32 } %724, 1
  store i32 %726, ptr %20, align 4
  br label %731

727:                                              ; preds = %698, %688
  %728 = landingpad { ptr, i32 }
          cleanup
  %729 = extractvalue { ptr, i32 } %728, 0
  store ptr %729, ptr %19, align 8
  %730 = extractvalue { ptr, i32 } %728, 1
  store i32 %730, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %72) #11
  br label %731

731:                                              ; preds = %727, %723
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #11
  br label %732

732:                                              ; preds = %731, %719
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #11
  br label %733

733:                                              ; preds = %732, %715
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #11
  br label %734

734:                                              ; preds = %733, %711
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #11
  br label %757

735:                                              ; preds = %596
  %736 = load ptr, ptr %61, align 8, !tbaa !5
  %737 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %95, i32 0, i32 7
  %738 = load ptr, ptr %737, align 8, !tbaa !102
  %739 = load ptr, ptr %63, align 8, !tbaa !5
  %740 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Halide8Internal13Autoscheduler8LoopNest10set_boundsEPKNS1_11FunctionDAG4NodeEPNS1_13BoundContentsE(ptr noundef nonnull align 8 dereferenceable(196) %736, ptr noundef %738, ptr noundef %739)
          to label %741 unwind label %753

741:                                              ; preds = %735
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #11
  %742 = load i8, ptr %14, align 1, !tbaa !11, !range !84, !noundef !85
  %743 = trunc i8 %742 to i1
  br i1 %743, label %760, label %744

744:                                              ; preds = %741
  %745 = load ptr, ptr %61, align 8, !tbaa !5
  %746 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %745, i32 0, i32 5
  %747 = invoke { ptr, i8 } @_ZNSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE6insertERKS6_(ptr noundef nonnull align 8 dereferenceable(48) %746, ptr noundef nonnull align 8 dereferenceable(8) %10)
          to label %748 unwind label %601

748:                                              ; preds = %744
  %749 = getelementptr inbounds { ptr, i8 }, ptr %73, i32 0, i32 0
  %750 = extractvalue { ptr, i8 } %747, 0
  store ptr %750, ptr %749, align 8
  %751 = getelementptr inbounds { ptr, i8 }, ptr %73, i32 0, i32 1
  %752 = extractvalue { ptr, i8 } %747, 1
  store i8 %752, ptr %751, align 8
  br label %760

753:                                              ; preds = %735
  %754 = landingpad { ptr, i32 }
          cleanup
  %755 = extractvalue { ptr, i32 } %754, 0
  store ptr %755, ptr %19, align 8
  %756 = extractvalue { ptr, i32 } %754, 1
  store i32 %756, ptr %20, align 4
  br label %757

757:                                              ; preds = %753, %734
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #11
  br label %758

758:                                              ; preds = %757, %613
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #11
  br label %759

759:                                              ; preds = %758, %609
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #11
  br label %850

760:                                              ; preds = %748, %741
  %761 = load ptr, ptr %61, align 8, !tbaa !5
  %762 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %761, i32 0, i32 3
  %763 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE12emplace_backIJRPS4_EEERS6_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %762, ptr noundef nonnull align 8 dereferenceable(8) %60)
          to label %764 unwind label %601

764:                                              ; preds = %760
  call void @llvm.lifetime.start.p0(i64 1, ptr %74) #11
  %765 = load i8, ptr %14, align 1, !tbaa !11, !range !84, !noundef !85
  %766 = trunc i8 %765 to i1
  br i1 %766, label %772, label %767

767:                                              ; preds = %764
  %768 = load ptr, ptr %10, align 8, !tbaa !5
  %769 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %768, i32 0, i32 7
  %770 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %769) #11
  %771 = icmp eq i64 %770, 1
  br label %772

772:                                              ; preds = %767, %764
  %773 = phi i1 [ false, %764 ], [ %771, %767 ]
  %774 = zext i1 %773 to i8
  store i8 %774, ptr %74, align 1, !tbaa !11
  %775 = load i8, ptr %74, align 1, !tbaa !11, !range !84, !noundef !85
  %776 = trunc i8 %775 to i1
  br i1 %776, label %777, label %821

777:                                              ; preds = %772
  call void @llvm.lifetime.start.p0(i64 24, ptr %75) #11
  %778 = load ptr, ptr %60, align 8, !tbaa !5
  %779 = load ptr, ptr %10, align 8, !tbaa !5
  %780 = load ptr, ptr %61, align 8, !tbaa !5
  %781 = load ptr, ptr %12, align 8, !tbaa !5
  %782 = load i32, ptr %13, align 4, !tbaa !9
  invoke void @_ZNK6Halide8Internal13Autoscheduler8LoopNest16compute_in_tilesEPKNS1_11FunctionDAG4NodeEPKS2_RKNS_13MachineParamsEib(ptr dead_on_unwind writable sret(%"class.std::vector.8") align 8 %75, ptr noundef nonnull align 8 dereferenceable(196) %778, ptr noundef %779, ptr noundef %780, ptr noundef nonnull align 8 dereferenceable(20) %781, i32 noundef %782, i1 noundef zeroext true)
          to label %783 unwind label %793

783:                                              ; preds = %777
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #11
  store ptr %75, ptr %76, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #11
  %784 = load ptr, ptr %76, align 8, !tbaa !5
  %785 = call ptr @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %784) #11
  %786 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.148", ptr %77, i32 0, i32 0
  store ptr %785, ptr %786, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #11
  %787 = load ptr, ptr %76, align 8, !tbaa !5
  %788 = call ptr @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %787) #11
  %789 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.148", ptr %78, i32 0, i32 0
  store ptr %788, ptr %789, align 8
  br label %790

790:                                              ; preds = %813, %783
  %791 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %77, ptr noundef nonnull align 8 dereferenceable(8) %78) #11
  br i1 %791, label %797, label %792

792:                                              ; preds = %790
  store i32 15, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #11
  br label %819

793:                                              ; preds = %777
  %794 = landingpad { ptr, i32 }
          cleanup
  %795 = extractvalue { ptr, i32 } %794, 0
  store ptr %795, ptr %19, align 8
  %796 = extractvalue { ptr, i32 } %794, 1
  store i32 %796, ptr %20, align 4
  br label %820

797:                                              ; preds = %790
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #11
  %798 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %77) #11
  store ptr %798, ptr %79, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #11
  %799 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 200) #12
          to label %800 unwind label %815

800:                                              ; preds = %797
  call void @_ZN6Halide8Internal13Autoscheduler8LoopNestC2Ev(ptr noundef nonnull align 8 dereferenceable(196) %799) #11
  store ptr %799, ptr %80, align 8, !tbaa !5
  %801 = load ptr, ptr %80, align 8, !tbaa !5
  %802 = load ptr, ptr %61, align 8, !tbaa !5
  invoke void @_ZN6Halide8Internal13Autoscheduler8LoopNest9copy_fromERKS2_(ptr noundef nonnull align 8 dereferenceable(196) %801, ptr noundef nonnull align 8 dereferenceable(196) %802)
          to label %803 unwind label %815

803:                                              ; preds = %800
  %804 = load ptr, ptr %80, align 8, !tbaa !5
  %805 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %804, i32 0, i32 3
  call void @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %805) #11
  %806 = load ptr, ptr %80, align 8, !tbaa !5
  %807 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %806, i32 0, i32 3
  %808 = load ptr, ptr %79, align 8, !tbaa !5
  %809 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE12emplace_backIJS6_EEERS6_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %807, ptr noundef nonnull align 8 dereferenceable(8) %808)
          to label %810 unwind label %815

810:                                              ; preds = %803
  %811 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE12emplace_backIJRPS4_EEERS6_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(8) %80)
          to label %812 unwind label %815

812:                                              ; preds = %810
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #11
  br label %813

813:                                              ; preds = %812
  %814 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %77) #11
  br label %790

815:                                              ; preds = %810, %803, %800, %797
  %816 = landingpad { ptr, i32 }
          cleanup
  %817 = extractvalue { ptr, i32 } %816, 0
  store ptr %817, ptr %19, align 8
  %818 = extractvalue { ptr, i32 } %816, 1
  store i32 %818, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #11
  call void @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %75) #11
  br label %820

819:                                              ; preds = %792
  call void @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %75) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %75) #11
  br label %821

820:                                              ; preds = %815, %793
  call void @llvm.lifetime.end.p0(i64 24, ptr %75) #11
  br label %849

821:                                              ; preds = %819, %772
  %822 = load ptr, ptr %61, align 8, !tbaa !5
  %823 = load ptr, ptr %10, align 8, !tbaa !5
  %824 = load i32, ptr %13, align 4, !tbaa !9
  invoke void @_ZN6Halide8Internal13Autoscheduler8LoopNest12compute_hereEPKNS1_11FunctionDAG4NodeEbi(ptr noundef nonnull align 8 dereferenceable(196) %822, ptr noundef %823, i1 noundef zeroext true, i32 noundef %824)
          to label %825 unwind label %845

825:                                              ; preds = %821
  %826 = load i8, ptr %14, align 1, !tbaa !11, !range !84, !noundef !85
  %827 = trunc i8 %826 to i1
  %828 = xor i1 %827, true
  %829 = zext i1 %828 to i32
  %830 = load ptr, ptr %61, align 8, !tbaa !5
  %831 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %830, i32 0, i32 10
  %832 = load i8, ptr %831, align 1, !tbaa !87, !range !84, !noundef !85
  %833 = trunc i8 %832 to i1
  %834 = zext i1 %833 to i32
  %835 = and i32 %834, %829
  %836 = icmp ne i32 %835, 0
  %837 = zext i1 %836 to i8
  store i8 %837, ptr %831, align 1, !tbaa !87
  %838 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE12emplace_backIJRPS4_EEERS6_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(8) %61)
          to label %839 unwind label %845

839:                                              ; preds = %825
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #11
  store i32 0, ptr %28, align 4
  br label %840

840:                                              ; preds = %839, %486
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %50) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %50) #11
  %841 = load i32, ptr %28, align 4
  switch i32 %841, label %1109 [
    i32 0, label %842
    i32 9, label %843
  ]

842:                                              ; preds = %840
  br label %843

843:                                              ; preds = %842, %840
  %844 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt6vectorIlSaIlEES1_IS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %48) #11
  br label %424

845:                                              ; preds = %825, %821
  %846 = landingpad { ptr, i32 }
          cleanup
  %847 = extractvalue { ptr, i32 } %846, 0
  store ptr %847, ptr %19, align 8
  %848 = extractvalue { ptr, i32 } %846, 1
  store i32 %848, ptr %20, align 4
  br label %849

849:                                              ; preds = %845, %820
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #11
  br label %850

850:                                              ; preds = %849, %759, %605, %601
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #11
  br label %851

851:                                              ; preds = %850, %597
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #11
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %50) #11
  br label %852

852:                                              ; preds = %851, %446
  call void @llvm.lifetime.end.p0(i64 24, ptr %50) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #11
  br label %854

853:                                              ; preds = %426
  call void @_ZNSt6vectorIS_IlSaIlEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %44) #11
  br label %856

854:                                              ; preds = %852, %416
  call void @_ZNSt6vectorIS_IlSaIlEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #11
  br label %855

855:                                              ; preds = %854, %404
  call void @llvm.lifetime.end.p0(i64 24, ptr %44) #11
  br label %1095

856:                                              ; preds = %853, %347
  %857 = load i32, ptr %34, align 4, !tbaa !9
  %858 = icmp sge i32 %857, 0
  br i1 %858, label %859, label %1093

859:                                              ; preds = %856
  %860 = load i8, ptr %35, align 1, !tbaa !11, !range !84, !noundef !85
  %861 = trunc i8 %860 to i1
  br i1 %861, label %1093, label %862

862:                                              ; preds = %859
  %863 = load i8, ptr %14, align 1, !tbaa !11, !range !84, !noundef !85
  %864 = trunc i8 %863 to i1
  br i1 %864, label %1093, label %865

865:                                              ; preds = %862
  %866 = invoke noundef zeroext i1 @_ZN6Halide8Internal13Autoscheduler11may_subtileEv()
          to label %867 unwind label %896

867:                                              ; preds = %865
  br i1 %866, label %871, label %868

868:                                              ; preds = %867
  %869 = invoke noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler8LoopNest7is_rootEv(ptr noundef nonnull align 8 dereferenceable(196) %95)
          to label %870 unwind label %896

870:                                              ; preds = %868
  br i1 %869, label %871, label %1093

871:                                              ; preds = %870, %867
  call void @llvm.lifetime.start.p0(i64 1, ptr %81) #11
  %872 = load ptr, ptr %12, align 8, !tbaa !5
  %873 = getelementptr inbounds %"struct.Halide::MachineParams", ptr %872, i32 0, i32 0
  %874 = load i32, ptr %873, align 8, !tbaa !98
  %875 = icmp eq i32 %874, 1
  br i1 %875, label %880, label %876

876:                                              ; preds = %871
  %877 = invoke noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler8LoopNest7is_rootEv(ptr noundef nonnull align 8 dereferenceable(196) %95)
          to label %878 unwind label %900

878:                                              ; preds = %876
  %879 = xor i1 %877, true
  br label %880

880:                                              ; preds = %878, %871
  %881 = phi i1 [ true, %871 ], [ %879, %878 ]
  %882 = zext i1 %881 to i8
  store i8 %882, ptr %81, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #11
  %883 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %95, i32 0, i32 3
  %884 = load i32, ptr %34, align 4, !tbaa !9
  %885 = sext i32 %884 to i64
  %886 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %883, i64 noundef %885) #11
  store ptr %886, ptr %82, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #11
  store i32 0, ptr %83, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #11
  store i64 0, ptr %84, align 8, !tbaa !13
  br label %887

887:                                              ; preds = %922, %880
  %888 = load i64, ptr %84, align 8, !tbaa !13
  %889 = load ptr, ptr %82, align 8, !tbaa !5
  %890 = invoke noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %889)
          to label %891 unwind label %904

891:                                              ; preds = %887
  %892 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %890, i32 0, i32 2
  %893 = call noundef i64 @_ZNKSt6vectorIlSaIlEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %892) #11
  %894 = icmp ult i64 %888, %893
  br i1 %894, label %908, label %895

895:                                              ; preds = %891
  store i32 17, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #11
  br label %930

896:                                              ; preds = %868, %865
  %897 = landingpad { ptr, i32 }
          cleanup
  %898 = extractvalue { ptr, i32 } %897, 0
  store ptr %898, ptr %19, align 8
  %899 = extractvalue { ptr, i32 } %897, 1
  store i32 %899, ptr %20, align 4
  br label %1095

900:                                              ; preds = %876
  %901 = landingpad { ptr, i32 }
          cleanup
  %902 = extractvalue { ptr, i32 } %901, 0
  store ptr %902, ptr %19, align 8
  %903 = extractvalue { ptr, i32 } %901, 1
  store i32 %903, ptr %20, align 4
  br label %1092

904:                                              ; preds = %887
  %905 = landingpad { ptr, i32 }
          cleanup
  %906 = extractvalue { ptr, i32 } %905, 0
  store ptr %906, ptr %19, align 8
  %907 = extractvalue { ptr, i32 } %905, 1
  store i32 %907, ptr %20, align 4
  br label %929

908:                                              ; preds = %891
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #11
  %909 = load ptr, ptr %82, align 8, !tbaa !5
  %910 = invoke noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %909)
          to label %911 unwind label %925

911:                                              ; preds = %908
  %912 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %910, i32 0, i32 2
  %913 = load i64, ptr %84, align 8, !tbaa !13
  %914 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %912, i64 noundef %913) #11
  %915 = load i64, ptr %914, align 8, !tbaa !13
  store i64 %915, ptr %85, align 8, !tbaa !13
  %916 = load i64, ptr %85, align 8, !tbaa !13
  %917 = icmp eq i64 %916, 1
  %918 = zext i1 %917 to i64
  %919 = select i1 %917, i32 1, i32 0
  %920 = load i32, ptr %83, align 4, !tbaa !9
  %921 = add nsw i32 %920, %919
  store i32 %921, ptr %83, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #11
  br label %922

922:                                              ; preds = %911
  %923 = load i64, ptr %84, align 8, !tbaa !13
  %924 = add i64 %923, 1
  store i64 %924, ptr %84, align 8, !tbaa !13
  br label %887, !llvm.loop !126

925:                                              ; preds = %908
  %926 = landingpad { ptr, i32 }
          cleanup
  %927 = extractvalue { ptr, i32 } %926, 0
  store ptr %927, ptr %19, align 8
  %928 = extractvalue { ptr, i32 } %926, 1
  store i32 %928, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #11
  br label %929

929:                                              ; preds = %925, %904
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #11
  br label %1091

930:                                              ; preds = %895
  %931 = load i32, ptr %83, align 4, !tbaa !9
  %932 = load ptr, ptr %82, align 8, !tbaa !5
  %933 = invoke noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %932)
          to label %934 unwind label %991

934:                                              ; preds = %930
  %935 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %933, i32 0, i32 2
  %936 = call noundef i64 @_ZNKSt6vectorIlSaIlEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %935) #11
  %937 = trunc i64 %936 to i32
  %938 = sub nsw i32 %937, 1
  %939 = icmp eq i32 %931, %938
  %940 = zext i1 %939 to i32
  %941 = load i8, ptr %81, align 1, !tbaa !11, !range !84, !noundef !85
  %942 = trunc i8 %941 to i1
  %943 = zext i1 %942 to i32
  %944 = and i32 %943, %940
  %945 = icmp ne i32 %944, 0
  %946 = zext i1 %945 to i8
  store i8 %946, ptr %81, align 1, !tbaa !11
  %947 = load ptr, ptr %10, align 8, !tbaa !5
  %948 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::FunctionDAG::Node", ptr %947, i32 0, i32 7
  %949 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %948) #11
  %950 = icmp eq i64 %949, 1
  %951 = zext i1 %950 to i32
  %952 = load i8, ptr %81, align 1, !tbaa !11, !range !84, !noundef !85
  %953 = trunc i8 %952 to i1
  %954 = zext i1 %953 to i32
  %955 = and i32 %954, %951
  %956 = icmp ne i32 %955, 0
  %957 = zext i1 %956 to i8
  store i8 %957, ptr %81, align 1, !tbaa !11
  %958 = load ptr, ptr %82, align 8, !tbaa !5
  %959 = invoke noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %958)
          to label %960 unwind label %991

960:                                              ; preds = %934
  %961 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %959, i32 0, i32 14
  %962 = load i32, ptr %961, align 8, !tbaa !103
  %963 = icmp eq i32 %962, -1
  br i1 %963, label %978, label %964

964:                                              ; preds = %960
  %965 = load ptr, ptr %82, align 8, !tbaa !5
  %966 = invoke noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %965)
          to label %967 unwind label %991

967:                                              ; preds = %964
  %968 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %966, i32 0, i32 2
  %969 = load ptr, ptr %82, align 8, !tbaa !5
  %970 = invoke noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %969)
          to label %971 unwind label %991

971:                                              ; preds = %967
  %972 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %970, i32 0, i32 14
  %973 = load i32, ptr %972, align 8, !tbaa !103
  %974 = sext i32 %973 to i64
  %975 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %968, i64 noundef %974) #11
  %976 = load i64, ptr %975, align 8, !tbaa !13
  %977 = icmp eq i64 %976, 1
  br label %978

978:                                              ; preds = %971, %960
  %979 = phi i1 [ true, %960 ], [ %977, %971 ]
  %980 = zext i1 %979 to i32
  %981 = load i8, ptr %81, align 1, !tbaa !11, !range !84, !noundef !85
  %982 = trunc i8 %981 to i1
  %983 = zext i1 %982 to i32
  %984 = and i32 %983, %980
  %985 = icmp ne i32 %984, 0
  %986 = zext i1 %985 to i8
  store i8 %986, ptr %81, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %86) #11
  store i32 0, ptr %86, align 4, !tbaa !9
  br label %987

987:                                              ; preds = %1085, %978
  %988 = load i32, ptr %86, align 4, !tbaa !9
  %989 = icmp slt i32 %988, 2
  br i1 %989, label %995, label %990

990:                                              ; preds = %987
  store i32 20, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #11
  br label %1090

991:                                              ; preds = %967, %964, %934, %930
  %992 = landingpad { ptr, i32 }
          cleanup
  %993 = extractvalue { ptr, i32 } %992, 0
  store ptr %993, ptr %19, align 8
  %994 = extractvalue { ptr, i32 } %992, 1
  store i32 %994, ptr %20, align 4
  br label %1091

995:                                              ; preds = %987
  %996 = load i32, ptr %86, align 4, !tbaa !9
  %997 = icmp ne i32 %996, 0
  br i1 %997, label %998, label %1002

998:                                              ; preds = %995
  %999 = load i8, ptr %81, align 1, !tbaa !11, !range !84, !noundef !85
  %1000 = trunc i8 %999 to i1
  br i1 %1000, label %1002, label %1001

1001:                                             ; preds = %998
  br label %1085

1002:                                             ; preds = %998, %995
  %1003 = invoke noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler8LoopNest7is_rootEv(ptr noundef nonnull align 8 dereferenceable(196) %95)
          to label %1004 unwind label %1020

1004:                                             ; preds = %1002
  br i1 %1003, label %1005, label %1024

1005:                                             ; preds = %1004
  %1006 = load i32, ptr %83, align 4, !tbaa !9
  %1007 = load ptr, ptr %82, align 8, !tbaa !5
  %1008 = invoke noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1007)
          to label %1009 unwind label %1020

1009:                                             ; preds = %1005
  %1010 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %1008, i32 0, i32 2
  %1011 = call noundef i64 @_ZNKSt6vectorIlSaIlEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1010) #11
  %1012 = trunc i64 %1011 to i32
  %1013 = icmp eq i32 %1006, %1012
  br i1 %1013, label %1014, label %1024

1014:                                             ; preds = %1009
  %1015 = load ptr, ptr %12, align 8, !tbaa !5
  %1016 = getelementptr inbounds %"struct.Halide::MachineParams", ptr %1015, i32 0, i32 0
  %1017 = load i32, ptr %1016, align 8, !tbaa !98
  %1018 = icmp sgt i32 %1017, 1
  br i1 %1018, label %1019, label %1024

1019:                                             ; preds = %1014
  br label %1085

1020:                                             ; preds = %1005, %1002
  %1021 = landingpad { ptr, i32 }
          cleanup
  %1022 = extractvalue { ptr, i32 } %1021, 0
  store ptr %1022, ptr %19, align 8
  %1023 = extractvalue { ptr, i32 } %1021, 1
  store i32 %1023, ptr %20, align 4
  br label %1089

1024:                                             ; preds = %1014, %1009, %1004
  call void @llvm.lifetime.start.p0(i64 24, ptr %87) #11
  %1025 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %95, i32 0, i32 3
  %1026 = load i32, ptr %34, align 4, !tbaa !9
  %1027 = sext i32 %1026 to i64
  %1028 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1025, i64 noundef %1027) #11
  %1029 = invoke noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1028)
          to label %1030 unwind label %1046

1030:                                             ; preds = %1024
  %1031 = load ptr, ptr %10, align 8, !tbaa !5
  %1032 = load ptr, ptr %12, align 8, !tbaa !5
  %1033 = load i32, ptr %13, align 4, !tbaa !9
  %1034 = load i32, ptr %86, align 4, !tbaa !9
  %1035 = icmp ne i32 %1034, 0
  invoke void @_ZNK6Halide8Internal13Autoscheduler8LoopNest16compute_in_tilesEPKNS1_11FunctionDAG4NodeEPKS2_RKNS_13MachineParamsEib(ptr dead_on_unwind writable sret(%"class.std::vector.8") align 8 %87, ptr noundef nonnull align 8 dereferenceable(196) %1029, ptr noundef %1031, ptr noundef %95, ptr noundef nonnull align 8 dereferenceable(20) %1032, i32 noundef %1033, i1 noundef zeroext %1035)
          to label %1036 unwind label %1046

1036:                                             ; preds = %1030
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #11
  store ptr %87, ptr %88, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #11
  %1037 = load ptr, ptr %88, align 8, !tbaa !5
  %1038 = call ptr @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1037) #11
  %1039 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.148", ptr %89, i32 0, i32 0
  store ptr %1038, ptr %1039, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #11
  %1040 = load ptr, ptr %88, align 8, !tbaa !5
  %1041 = call ptr @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1040) #11
  %1042 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.148", ptr %90, i32 0, i32 0
  store ptr %1041, ptr %1042, align 8
  br label %1043

1043:                                             ; preds = %1082, %1036
  %1044 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %89, ptr noundef nonnull align 8 dereferenceable(8) %90) #11
  br i1 %1044, label %1050, label %1045

1045:                                             ; preds = %1043
  store i32 23, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #11
  br label %1084

1046:                                             ; preds = %1030, %1024
  %1047 = landingpad { ptr, i32 }
          cleanup
  %1048 = extractvalue { ptr, i32 } %1047, 0
  store ptr %1048, ptr %19, align 8
  %1049 = extractvalue { ptr, i32 } %1047, 1
  store i32 %1049, ptr %20, align 4
  br label %1088

1050:                                             ; preds = %1043
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #11
  %1051 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %89) #11
  store ptr %1051, ptr %91, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #11
  %1052 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 200) #12
          to label %1053 unwind label %1067

1053:                                             ; preds = %1050
  call void @_ZN6Halide8Internal13Autoscheduler8LoopNestC2Ev(ptr noundef nonnull align 8 dereferenceable(196) %1052) #11
  store ptr %1052, ptr %92, align 8, !tbaa !5
  %1054 = load ptr, ptr %92, align 8, !tbaa !5
  invoke void @_ZN6Halide8Internal13Autoscheduler8LoopNest9copy_fromERKS2_(ptr noundef nonnull align 8 dereferenceable(196) %1054, ptr noundef nonnull align 8 dereferenceable(196) %95)
          to label %1055 unwind label %1067

1055:                                             ; preds = %1053
  %1056 = load i32, ptr %86, align 4, !tbaa !9
  %1057 = icmp ne i32 %1056, 0
  br i1 %1057, label %1058, label %1071

1058:                                             ; preds = %1055
  %1059 = load ptr, ptr %92, align 8, !tbaa !5
  %1060 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %1059, i32 0, i32 5
  %1061 = invoke { ptr, i8 } @_ZNSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE6insertERKS6_(ptr noundef nonnull align 8 dereferenceable(48) %1060, ptr noundef nonnull align 8 dereferenceable(8) %10)
          to label %1062 unwind label %1067

1062:                                             ; preds = %1058
  %1063 = getelementptr inbounds { ptr, i8 }, ptr %93, i32 0, i32 0
  %1064 = extractvalue { ptr, i8 } %1061, 0
  store ptr %1064, ptr %1063, align 8
  %1065 = getelementptr inbounds { ptr, i8 }, ptr %93, i32 0, i32 1
  %1066 = extractvalue { ptr, i8 } %1061, 1
  store i8 %1066, ptr %1065, align 8
  br label %1071

1067:                                             ; preds = %1079, %1071, %1058, %1053, %1050
  %1068 = landingpad { ptr, i32 }
          cleanup
  %1069 = extractvalue { ptr, i32 } %1068, 0
  store ptr %1069, ptr %19, align 8
  %1070 = extractvalue { ptr, i32 } %1068, 1
  store i32 %1070, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #11
  call void @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %87) #11
  br label %1088

1071:                                             ; preds = %1062, %1055
  %1072 = load ptr, ptr %91, align 8, !tbaa !5
  %1073 = load ptr, ptr %92, align 8, !tbaa !5
  %1074 = getelementptr inbounds %"struct.Halide::Internal::Autoscheduler::LoopNest", ptr %1073, i32 0, i32 3
  %1075 = load i32, ptr %34, align 4, !tbaa !9
  %1076 = sext i32 %1075 to i64
  %1077 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1074, i64 noundef %1076) #11
  %1078 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEaSERKS5_(ptr noundef nonnull align 8 dereferenceable(8) %1077, ptr noundef nonnull align 8 dereferenceable(8) %1072)
          to label %1079 unwind label %1067

1079:                                             ; preds = %1071
  %1080 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE12emplace_backIJRPS4_EEERS6_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(8) %92)
          to label %1081 unwind label %1067

1081:                                             ; preds = %1079
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #11
  br label %1082

1082:                                             ; preds = %1081
  %1083 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %89) #11
  br label %1043

1084:                                             ; preds = %1045
  call void @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %87) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %87) #11
  br label %1085

1085:                                             ; preds = %1084, %1019, %1001
  %1086 = load i32, ptr %86, align 4, !tbaa !9
  %1087 = add nsw i32 %1086, 1
  store i32 %1087, ptr %86, align 4, !tbaa !9
  br label %987, !llvm.loop !127

1088:                                             ; preds = %1067, %1046
  call void @llvm.lifetime.end.p0(i64 24, ptr %87) #11
  br label %1089

1089:                                             ; preds = %1088, %1020
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #11
  br label %1091

1090:                                             ; preds = %990
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %81) #11
  br label %1093

1091:                                             ; preds = %1089, %991, %929
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #11
  br label %1092

1092:                                             ; preds = %1091, %900
  call void @llvm.lifetime.end.p0(i64 1, ptr %81) #11
  br label %1095

1093:                                             ; preds = %1090, %870, %862, %859, %856
  store i1 true, ptr %21, align 1
  store i32 1, ptr %28, align 4
  br label %1094

1094:                                             ; preds = %1093, %346
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #11
  br label %1096

1095:                                             ; preds = %1092, %896, %855, %403, %340, %268
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #11
  br label %1100

1096:                                             ; preds = %1094, %237
  %1097 = load i1, ptr %21, align 1
  br i1 %1097, label %1099, label %1098

1098:                                             ; preds = %1096
  call void @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #11
  br label %1099

1099:                                             ; preds = %1098, %1096
  ret void

1100:                                             ; preds = %1095, %245
  call void @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #11
  br label %1101

1101:                                             ; preds = %1100, %162
  %1102 = load ptr, ptr %19, align 8
  %1103 = load i32, ptr %20, align 4
  %1104 = insertvalue { ptr, i32 } poison, ptr %1102, 0
  %1105 = insertvalue { ptr, i32 } %1104, i32 %1103, 1
  resume { ptr, i32 } %1105

1106:                                             ; preds = %397, %157
  %1107 = landingpad { ptr, i32 }
          catch ptr null
  %1108 = extractvalue { ptr, i32 } %1107, 0
  call void @__clang_call_terminate(ptr %1108) #13
  unreachable

1109:                                             ; preds = %840
  unreachable
}

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRA27_KcEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(27)) #1 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIlSaIlEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #1 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPlSt6vectorIlSaIlEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(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_iteratorIPlSt6vectorIlSaIlEEEdeEv(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_iteratorIPlSt6vectorIlSaIlEEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) #2 align 2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.ceil.f64(double) #10

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_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_cxxneIPN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_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_iteratorIPN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) #2 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_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 @_ZN6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEaSERKS5_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #1 align 2

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #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 = { inlinehint 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 nounwind willreturn memory(argmem: readwrite) }
attributes #9 = { nobuiltin allocsize(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 #10 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #11 = { nounwind }
attributes #12 = { builtin allocsize(0) }
attributes #13 = { 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 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"bool", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"long", !7, i64 0}
!15 = !{!16, !10, i64 168}
!16 = !{!"_ZTSN6Halide8Internal13Autoscheduler11FunctionDAG4NodeE", !6, i64 0, !17, i64 8, !20, i64 32, !21, i64 40, !25, i64 64, !29, i64 88, !12, i64 112, !33, i64 120, !37, i64 144, !10, i64 168, !10, i64 172, !10, i64 176, !10, i64 180, !12, i64 184, !12, i64 185, !12, i64 186, !12, i64 187, !12, i64 188, !41, i64 192}
!17 = !{!"_ZTSN6Halide8Internal8FunctionE", !18, i64 0}
!18 = !{!"_ZTSN6Halide8Internal11FunctionPtrE", !19, i64 0, !6, i64 8, !10, i64 16}
!19 = !{!"_ZTSN6Halide8Internal12IntrusivePtrINS0_13FunctionGroupEEE", !6, i64 0}
!20 = !{!"double", !7, i64 0}
!21 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG16SymbolicIntervalESaIS4_EE", !22, i64 0}
!22 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG16SymbolicIntervalESaIS4_EE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG16SymbolicIntervalESaIS4_EE12_Vector_implE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG16SymbolicIntervalESaIS4_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!25 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler4SpanESaIS3_EE", !26, i64 0}
!26 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler4SpanESaIS3_EE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler4SpanESaIS3_EE12_Vector_implE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler4SpanESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!29 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoESaIS5_EE", !30, i64 0}
!30 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoESaIS5_EE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoESaIS5_EE12_Vector_implE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!33 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE", !34, i64 0}
!34 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE12_Vector_implE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!37 = !{!"_ZTSSt6vectorIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE", !38, i64 0}
!38 = !{!"_ZTSSt12_Vector_baseIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE12_Vector_implE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!41 = !{!"_ZTSSt10unique_ptrIN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_EE", !42, i64 0}
!42 = !{!"_ZTSSt15__uniq_ptr_dataIN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_ELb1ELb1EE", !43, i64 0}
!43 = !{!"_ZTSSt15__uniq_ptr_implIN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_EE", !44, i64 0}
!44 = !{!"_ZTSSt5tupleIJPN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_EEE", !45, i64 0}
!45 = !{!"_ZTSSt11_Tuple_implILm0EJPN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_EEE", !46, i64 0}
!46 = !{!"_ZTSSt10_Head_baseILm0EPN6Halide8Internal13Autoscheduler13BoundContents6LayoutELb0EE", !6, i64 0}
!47 = !{!16, !10, i64 180}
!48 = distinct !{!48, !49}
!49 = !{!"llvm.loop.mustprogress"}
!50 = distinct !{!50, !49}
!51 = !{!52, !12, i64 184}
!52 = !{!"_ZTSN6Halide8Internal13Autoscheduler8LoopNestE", !53, i64 0, !56, i64 8, !60, i64 32, !64, i64 56, !70, i64 88, !78, i64 136, !6, i64 168, !6, i64 176, !12, i64 184, !12, i64 185, !12, i64 186, !10, i64 188, !10, i64 192}
!53 = !{!"_ZTSN6Halide8Internal8RefCountE", !54, i64 0}
!54 = !{!"_ZTSSt6atomicIiE", !55, i64 0}
!55 = !{!"_ZTSSt13__atomic_baseIiE", !10, i64 0}
!56 = !{!"_ZTSSt6vectorIlSaIlEE", !57, i64 0}
!57 = !{!"_ZTSSt12_Vector_baseIlSaIlEE", !58, i64 0}
!58 = !{!"_ZTSNSt12_Vector_baseIlSaIlEE12_Vector_implE", !59, i64 0}
!59 = !{!"_ZTSNSt12_Vector_baseIlSaIlEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!60 = !{!"_ZTSSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE", !61, i64 0}
!61 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE", !62, i64 0}
!62 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE12_Vector_implE", !63, i64 0}
!63 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!64 = !{!"_ZTS14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterE", !65, i64 0, !10, i64 24, !69, i64 28}
!65 = !{!"_ZTSSt6vectorISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElESaIS8_EE", !66, i64 0}
!66 = !{!"_ZTSSt12_Vector_baseISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElESaIS8_EE", !67, i64 0}
!67 = !{!"_ZTSNSt12_Vector_baseISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElESaIS8_EE12_Vector_implE", !68, i64 0}
!68 = !{!"_ZTSNSt12_Vector_baseISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElESaIS8_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!69 = !{!"_ZTSN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterEUt_E", !7, i64 0}
!70 = !{!"_ZTSSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE", !71, i64 0}
!71 = !{!"_ZTSSt8_Rb_treeIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeES6_St9_IdentityIS6_ESt4lessIS6_ESaIS6_EE", !72, i64 0}
!72 = !{!"_ZTSNSt8_Rb_treeIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeES6_St9_IdentityIS6_ESt4lessIS6_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !73, i64 0, !75, i64 8}
!73 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEEE", !74, i64 0}
!74 = !{!"_ZTSSt4lessIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEE"}
!75 = !{!"_ZTSSt15_Rb_tree_header", !76, i64 0, !14, i64 32}
!76 = !{!"_ZTSSt18_Rb_tree_node_base", !77, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!77 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!78 = !{!"_ZTS14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeENS1_12IntrusivePtrIKNS2_13BoundContentsEEELi4E22PerfectHashMapAsserterE", !79, i64 0, !10, i64 24, !83, i64 28}
!79 = !{!"_ZTSSt6vectorISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeENS2_12IntrusivePtrIKNS3_13BoundContentsEEEESaISC_EE", !80, i64 0}
!80 = !{!"_ZTSSt12_Vector_baseISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeENS2_12IntrusivePtrIKNS3_13BoundContentsEEEESaISC_EE", !81, i64 0}
!81 = !{!"_ZTSNSt12_Vector_baseISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeENS2_12IntrusivePtrIKNS3_13BoundContentsEEEESaISC_EE12_Vector_implE", !82, i64 0}
!82 = !{!"_ZTSNSt12_Vector_baseISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeENS2_12IntrusivePtrIKNS3_13BoundContentsEEEESaISC_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!83 = !{!"_ZTSN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeENS1_12IntrusivePtrIKNS2_13BoundContentsEEELi4E22PerfectHashMapAsserterEUt_E", !7, i64 0}
!84 = !{i8 0, i8 2}
!85 = !{}
!86 = !{!52, !10, i64 188}
!87 = !{!52, !12, i64 185}
!88 = !{!16, !12, i64 186}
!89 = !{!52, !12, i64 186}
!90 = !{!52, !6, i64 176}
!91 = !{!92, !12, i64 32}
!92 = !{!"_ZTSN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopE", !93, i64 0, !12, i64 32, !12, i64 33, !95, i64 40, !95, i64 48, !10, i64 56, !12, i64 60, !10, i64 64, !12, i64 68, !14, i64 72, !14, i64 80, !93, i64 88}
!93 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !94, i64 0, !14, i64 8, !7, i64 16}
!94 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!95 = !{!"_ZTSN6Halide4ExprE", !96, i64 0}
!96 = !{!"_ZTSN6Halide8Internal8IRHandleE", !97, i64 0}
!97 = !{!"_ZTSN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEEE", !6, i64 0}
!98 = !{!99, !10, i64 0}
!99 = !{!"_ZTSN6Halide13MachineParamsE", !10, i64 0, !14, i64 8, !100, i64 16}
!100 = !{!"float", !7, i64 0}
!101 = !{!20, !20, i64 0}
!102 = !{!52, !6, i64 168}
!103 = !{!52, !10, i64 192}
!104 = !{!105, !10, i64 8}
!105 = !{!"_ZTSN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageE", !6, i64 0, !10, i64 8, !106, i64 16, !12, i64 40, !10, i64 44, !110, i64 48, !111, i64 1200, !93, i64 1264, !10, i64 1296, !10, i64 1300, !37, i64 1304, !118, i64 1328}
!106 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE", !107, i64 0}
!107 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE", !108, i64 0}
!108 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE12_Vector_implE", !109, i64 0}
!109 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!110 = !{!"_ZTSN6Halide8Internal16PipelineFeaturesE", !7, i64 0, !7, i64 28, !7, i64 700, !7, i64 812, !7, i64 924, !7, i64 1036}
!111 = !{!"_ZTSN6Halide5StageE", !17, i64 0, !112, i64 24, !14, i64 32, !114, i64 40}
!112 = !{!"_ZTSN6Halide8Internal10DefinitionE", !113, i64 0}
!113 = !{!"_ZTSN6Halide8Internal12IntrusivePtrINS0_18DefinitionContentsEEE", !6, i64 0}
!114 = !{!"_ZTSSt6vectorIN6Halide3VarESaIS1_EE", !115, i64 0}
!115 = !{!"_ZTSSt12_Vector_baseIN6Halide3VarESaIS1_EE", !116, i64 0}
!116 = !{!"_ZTSNSt12_Vector_baseIN6Halide3VarESaIS1_EE12_Vector_implE", !117, i64 0}
!117 = !{!"_ZTSNSt12_Vector_baseIN6Halide3VarESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!118 = !{!"_ZTSSt6vectorIbSaIbEE", !119, i64 0}
!119 = !{!"_ZTSSt13_Bvector_baseISaIbEE", !120, i64 0}
!120 = !{!"_ZTSNSt13_Bvector_baseISaIbEE13_Bvector_implE", !121, i64 0}
!121 = !{!"_ZTSNSt13_Bvector_baseISaIbEE18_Bvector_impl_dataE", !122, i64 0, !122, i64 16, !6, i64 32}
!122 = !{!"_ZTSSt13_Bit_iterator", !123, i64 0}
!123 = !{!"_ZTSSt18_Bit_iterator_base", !6, i64 0, !10, i64 8}
!124 = !{i64 0, i64 8, !13, i64 8, i64 8, !13, i64 16, i64 1, !11}
!125 = distinct !{!125, !49}
!126 = distinct !{!126, !49}
!127 = distinct !{!127, !49}


; 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"

%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::vector<long>, std::allocator<std::vector<long>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<long>, std::allocator<std::vector<long>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<long>, std::allocator<std::vector<long>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<long>, std::allocator<std::vector<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.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.std::unique_ptr.139" = type { %"struct.std::__uniq_ptr_data.140" }
%"struct.std::__uniq_ptr_data.140" = type { %"class.std::__uniq_ptr_impl.141" }
%"class.std::__uniq_ptr_impl.141" = type { %"class.std::tuple.142" }
%"class.std::tuple.142" = type { %"struct.std::_Tuple_impl.143" }
%"struct.std::_Tuple_impl.143" = type { %"struct.std::_Head_base.146" }
%"struct.std::_Head_base.146" = type { ptr }
%"class.Halide::Internal::aslog" = type { i8 }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"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.__gnu_cxx::__normal_iterator.147" = type { ptr }
%"struct.Halide::Internal::IntrusivePtr.80" = type { ptr }
%"class.Halide::Internal::Autoscheduler::Span" = type <{ i64, i64, i8, [7 x i8] }>
%"class.__gnu_cxx::__normal_iterator.148" = type { ptr }

@.str.3 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [27 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 uwtable
declare dso_local noundef zeroext i1 @_ZN6Halide8Internal13Autoscheduler11may_subtileEv() local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Halide8Internal13Autoscheduler16generate_tilingsERKSt6vectorIlSaIlEEiib(ptr dead_on_unwind noalias writable sret(%"class.std::vector") align 8, ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef, i1 noundef zeroext) local_unnamed_addr #1

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #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) local_unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Halide8Internal13Autoscheduler8LoopNest9copy_fromERKS2_(ptr noundef nonnull align 8 dereferenceable(196), ptr noundef nonnull align 8 dereferenceable(196)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIlSaIlEEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EEaSERKS8_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EEaSERKSA_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2 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 #2 align 2

; 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 #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) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #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)) local_unnamed_addr #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)) local_unnamed_addr #5 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #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) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17)) local_unnamed_addr #2 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 #2 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 #1 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 #2 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) #7

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Halide8Internal5aslogC2Ei(ptr noundef nonnull align 1 dereferenceable(1), i32 noundef) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRA2_KcEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(2)) local_unnamed_addr #1 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler8LoopNest5callsEPKNS1_11FunctionDAG4NodeE(ptr noundef nonnull align 8 dereferenceable(196), ptr noundef) local_unnamed_addr #1 align 2

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

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) local_unnamed_addr #8

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN6Halide8Internal13Autoscheduler8LoopNestC2Ev(ptr noundef nonnull align 8 dereferenceable(196)) unnamed_addr #3 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Halide8Internal13Autoscheduler8LoopNest12compute_hereEPKNS1_11FunctionDAG4NodeEbi(ptr noundef nonnull align 8 dereferenceable(196), ptr noundef, i1 noundef zeroext, i32 noundef) local_unnamed_addr #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN6Halide8Internal13Autoscheduler4SpanC2Ellb(ptr noundef nonnull align 8 dereferenceable(17), i64 noundef, i64 noundef, i1 noundef zeroext) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIlSaIlEE6resizeEmRKl(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, 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(8) ptr @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE12emplace_backIJRPS4_EEERS6_DpOT_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZNK6Halide8Internal13Autoscheduler8LoopNest16compute_in_tilesEPKNS1_11FunctionDAG4NodeEPKS2_RKNS_13MachineParamsEib(ptr dead_on_unwind noalias writable sret(%"class.std::vector.8") align 8 %0, ptr noundef nonnull align 8 dereferenceable(196) %1, ptr noundef %2, ptr noundef %3, ptr noundef nonnull align 8 dereferenceable(20) %4, i32 noundef %5, i1 noundef zeroext %6) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %8 = alloca ptr, align 8
  %9 = alloca %"class.Halide::Internal::Voidifier", align 1
  %10 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %11 = alloca %"class.std::unique_ptr.139", align 8
  %12 = alloca ptr, align 8
  %13 = alloca %"class.Halide::Internal::Voidifier", align 1
  %14 = alloca %"struct.Halide::Internal::ErrorReport", align 8
  %15 = alloca %"class.std::vector", align 8
  %16 = alloca %"class.Halide::Internal::aslog", align 1
  %17 = alloca i64, align 8
  %18 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %19 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %20 = alloca %"class.std::vector.3", align 8
  %21 = alloca %"class.__gnu_cxx::__normal_iterator.147", align 8
  %22 = alloca %"class.__gnu_cxx::__normal_iterator.147", align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca i64, align 8
  %26 = alloca %"struct.Halide::Internal::IntrusivePtr.80", align 8
  %27 = alloca %"class.Halide::Internal::Autoscheduler::Span", align 8
  %28 = alloca %"class.std::vector.8", align 8
  %29 = alloca %"class.__gnu_cxx::__normal_iterator.148", align 8
  %30 = alloca %"class.__gnu_cxx::__normal_iterator.148", align 8
  %31 = alloca ptr, align 8
  %32 = alloca %"class.std::vector.8", align 8
  %33 = alloca %"class.__gnu_cxx::__normal_iterator.148", align 8
  %34 = alloca %"class.__gnu_cxx::__normal_iterator.148", align 8
  %35 = alloca ptr, align 8
  store ptr %2, ptr %8, align 8, !tbaa !5
  %.not = icmp eq ptr %2, null
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %9) #10
  br i1 %.not, label %.critedge, label %.critedge223

.critedge:                                        ; preds = %7
  call void @llvm.lifetime.start.p0(i64 384, ptr nonnull %10) #10
  call void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %10, ptr noundef nonnull @.str.3, i32 noundef 1325, ptr noundef nonnull @.str.19, i32 noundef 0)
  %36 = call noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %10)
  call void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %9, ptr noundef nonnull align 8 dereferenceable(380) %36)
  call void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %10)
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %10) #10
  br label %.critedge223

.critedge223:                                     ; preds = %7, %.critedge
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #10
  call void @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #10
  %.not188 = icmp eq ptr %3, null
  br i1 %.not188, label %75, label %37

37:                                               ; preds = %.critedge223
  %38 = load ptr, ptr %8, align 8, !tbaa !5
  %39 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Halide8Internal13Autoscheduler8LoopNest10get_boundsEPKNS1_11FunctionDAG4NodeE(ptr noundef nonnull align 8 dereferenceable(196) %1, ptr noundef %38)
          to label %40 unwind label %58

40:                                               ; preds = %37
  %41 = load ptr, ptr %8, align 8, !tbaa !5
  %42 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Halide8Internal13Autoscheduler8LoopNest10get_boundsEPKNS1_11FunctionDAG4NodeE(ptr noundef nonnull align 8 dereferenceable(196) %3, ptr noundef %41)
          to label %43 unwind label %60

43:                                               ; preds = %40
  %44 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %39)
  %45 = call noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents15region_computedEi(ptr noundef nonnull align 8 dereferenceable(16) %44, i32 noundef %5)
  %46 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %42)
  %47 = call noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents15region_computedEi(ptr noundef nonnull align 8 dereferenceable(16) %46, i32 noundef %5)
  %48 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17) %45)
  %49 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17) %47)
  %50 = load ptr, ptr %8, align 8, !tbaa !5
  %51 = getelementptr inbounds i8, ptr %50, i64 168
  %52 = load i32, ptr %51, align 8, !tbaa !9
  %53 = sext i32 %52 to i64
  %.not190 = icmp sge i64 %49, %53
  %54 = icmp slt i64 %48, %53
  %or.cond224 = and i1 %.not190, %54
  br i1 %or.cond224, label %.critedge235, label %.preheader

.preheader:                                       ; preds = %43
  %55 = getelementptr inbounds i8, ptr %50, i64 180
  %56 = load i32, ptr %55, align 4, !tbaa !43
  %57 = icmp sgt i32 %56, 0
  br i1 %57, label %.lr.ph, label %.critedge235

58:                                               ; preds = %37
  %59 = landingpad { ptr, i32 }
          cleanup
  br label %546

60:                                               ; preds = %40
  %61 = landingpad { ptr, i32 }
          cleanup
  br label %546

._crit_edge:                                      ; preds = %.lr.ph
  %.not191.not = icmp slt i64 %67, %69
  br i1 %.not191.not, label %75, label %.critedge235

.lr.ph:                                           ; preds = %.preheader, %.lr.ph
  %.0169246 = phi i64 [ %67, %.lr.ph ], [ 1, %.preheader ]
  %.0170245 = phi i64 [ %69, %.lr.ph ], [ 1, %.preheader ]
  %.0171244 = phi i32 [ %70, %.lr.ph ], [ 0, %.preheader ]
  %62 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %39)
  %63 = call noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents15region_computedEi(ptr noundef nonnull align 8 dereferenceable(16) %62, i32 noundef %.0171244)
  %64 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %42)
  %65 = call noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents15region_computedEi(ptr noundef nonnull align 8 dereferenceable(16) %64, i32 noundef %.0171244)
  %66 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17) %63)
  %67 = mul nsw i64 %66, %.0169246
  %68 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17) %65)
  %69 = mul nsw i64 %68, %.0170245
  %70 = add nuw nsw i32 %.0171244, 1
  %71 = load ptr, ptr %8, align 8, !tbaa !5
  %72 = getelementptr inbounds i8, ptr %71, i64 180
  %73 = load i32, ptr %72, align 4, !tbaa !43
  %74 = icmp slt i32 %70, %73
  br i1 %74, label %.lr.ph, label %._crit_edge, !llvm.loop !44

75:                                               ; preds = %._crit_edge, %.critedge223
  %76 = getelementptr inbounds i8, ptr %1, i64 32
  %77 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %76) #10
  %78 = trunc i64 %77 to i32
  %79 = icmp sgt i32 %78, 0
  br i1 %79, label %.lr.ph252, label %._crit_edge253

._crit_edge253:                                   ; preds = %87, %75
  %.0174.lcssa = phi i1 [ false, %75 ], [ %.2176, %87 ]
  %.0172.lcssa = phi i32 [ -1, %75 ], [ %.1173, %87 ]
  %80 = getelementptr inbounds i8, ptr %1, i64 184
  %81 = load i8, ptr %80, align 8, !tbaa !46, !range !80, !noundef !81
  %82 = trunc nuw i8 %81 to i1
  br i1 %82, label %134, label %95

.lr.ph252:                                        ; preds = %75, %87
  %indvars.iv = phi i64 [ %indvars.iv.next, %87 ], [ 0, %75 ]
  %.0172250 = phi i32 [ %.1173, %87 ], [ -1, %75 ]
  %.0174249 = phi i1 [ %.2176, %87 ], [ false, %75 ]
  %83 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %76, i64 noundef %indvars.iv) #10
  %84 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %83)
  %85 = load ptr, ptr %8, align 8, !tbaa !5
  %86 = invoke noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler8LoopNest5callsEPKNS1_11FunctionDAG4NodeE(ptr noundef nonnull align 8 dereferenceable(196) %84, ptr noundef %85)
          to label %87 unwind label %93

87:                                               ; preds = %.lr.ph252
  %.not222 = icmp ne i32 %.0172250, -1
  %88 = select i1 %86, i1 %.not222, i1 false
  %.2176 = select i1 %88, i1 true, i1 %.0174249
  %89 = trunc nuw nsw i64 %indvars.iv to i32
  %.1173 = select i1 %86, i32 %89, i32 %.0172250
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %90 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %76) #10
  %sext = shl i64 %90, 32
  %91 = ashr exact i64 %sext, 32
  %92 = icmp slt i64 %indvars.iv.next, %91
  br i1 %92, label %.lr.ph252, label %._crit_edge253, !llvm.loop !82

93:                                               ; preds = %.lr.ph252
  %94 = landingpad { ptr, i32 }
          cleanup
  br label %546

95:                                               ; preds = %._crit_edge253
  br i1 %6, label %96, label %108

96:                                               ; preds = %95
  %97 = getelementptr inbounds i8, ptr %1, i64 8
  %98 = call noundef zeroext i1 @_ZNKSt6vectorIlSaIlEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %97) #10
  br i1 %98, label %108, label %99

99:                                               ; preds = %96
  %100 = getelementptr inbounds i8, ptr %1, i64 188
  %101 = load i32, ptr %100, align 4, !tbaa !83
  %102 = icmp eq i32 %101, -1
  br i1 %102, label %108, label %103

103:                                              ; preds = %99
  %104 = sext i32 %101 to i64
  %105 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %97, i64 noundef %104) #10
  %106 = load i64, ptr %105, align 8, !tbaa !84
  %107 = icmp eq i64 %106, 1
  br i1 %107, label %108, label %134

108:                                              ; preds = %103, %99, %96, %95
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #10
  %109 = invoke noalias noundef nonnull dereferenceable(200) ptr @_Znwm(i64 noundef 200) #11
          to label %110 unwind label %120

110:                                              ; preds = %108
  call void @_ZN6Halide8Internal13Autoscheduler8LoopNestC2Ev(ptr noundef nonnull align 8 dereferenceable(196) %109) #10
  call void @_ZNSt10unique_ptrIN6Halide8Internal13Autoscheduler8LoopNestESt14default_deleteIS3_EEC2IS5_vEEPS3_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull %109) #10
  %111 = call noundef ptr @_ZNKSt10unique_ptrIN6Halide8Internal13Autoscheduler8LoopNestESt14default_deleteIS3_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #10
  invoke void @_ZN6Halide8Internal13Autoscheduler8LoopNest9copy_fromERKS2_(ptr noundef nonnull align 8 dereferenceable(196) %111, ptr noundef nonnull align 8 dereferenceable(196) %1)
          to label %112 unwind label %122

112:                                              ; preds = %110
  %113 = call noundef ptr @_ZNKSt10unique_ptrIN6Halide8Internal13Autoscheduler8LoopNestESt14default_deleteIS3_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #10
  %114 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN6Halide8Internal13Autoscheduler8LoopNest12compute_hereEPKNS1_11FunctionDAG4NodeEbi(ptr noundef nonnull align 8 dereferenceable(196) %113, ptr noundef %114, i1 noundef zeroext true, i32 noundef %5)
          to label %115 unwind label %122

115:                                              ; preds = %112
  %116 = call noundef ptr @_ZNKSt10unique_ptrIN6Halide8Internal13Autoscheduler8LoopNestESt14default_deleteIS3_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #10
  br i1 %6, label %124, label %117

117:                                              ; preds = %115
  %118 = getelementptr inbounds i8, ptr %116, i64 88
  %119 = invoke { ptr, i8 } @_ZNSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE6insertERKS6_(ptr noundef nonnull align 8 dereferenceable(48) %118, ptr noundef nonnull align 8 dereferenceable(8) %8)
          to label %126 unwind label %122

120:                                              ; preds = %108
  %121 = landingpad { ptr, i32 }
          cleanup
  br label %133

122:                                              ; preds = %117, %112, %110
  %123 = landingpad { ptr, i32 }
          cleanup
  br label %132

124:                                              ; preds = %115
  %125 = getelementptr inbounds i8, ptr %116, i64 185
  store i8 0, ptr %125, align 1, !tbaa !85
  br label %126

126:                                              ; preds = %117, %124
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #10
  %127 = call noundef ptr @_ZNSt10unique_ptrIN6Halide8Internal13Autoscheduler8LoopNestESt14default_deleteIS3_EE7releaseEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #10
  store ptr %127, ptr %12, align 8, !tbaa !5
  %128 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE12emplace_backIJPS4_EEERS6_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %129 unwind label %130

129:                                              ; preds = %126
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #10
  call void @_ZNSt10unique_ptrIN6Halide8Internal13Autoscheduler8LoopNestESt14default_deleteIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #10
  br label %134

130:                                              ; preds = %126
  %131 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #10
  br label %132

132:                                              ; preds = %130, %122
  %.pn192 = phi { ptr, i32 } [ %131, %130 ], [ %123, %122 ]
  call void @_ZNSt10unique_ptrIN6Halide8Internal13Autoscheduler8LoopNestESt14default_deleteIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #10
  br label %133

133:                                              ; preds = %132, %120
  %.pn192.pn = phi { ptr, i32 } [ %.pn192, %132 ], [ %121, %120 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #10
  br label %546

134:                                              ; preds = %129, %103, %._crit_edge253
  %135 = load ptr, ptr %8, align 8, !tbaa !5
  %136 = getelementptr inbounds i8, ptr %135, i64 186
  %137 = load i8, ptr %136, align 2, !tbaa !86, !range !80, !noundef !81
  %138 = trunc nuw i8 %137 to i1
  br i1 %138, label %.critedge235, label %139

139:                                              ; preds = %134
  %140 = getelementptr inbounds i8, ptr %1, i64 185
  %141 = load i8, ptr %140, align 1, !tbaa !85, !range !80, !noundef !81
  %142 = trunc nuw i8 %141 to i1
  br i1 %142, label %143, label %419

143:                                              ; preds = %139
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %13) #10
  br i1 %.not188, label %144, label %.critedge227

144:                                              ; preds = %143
  call void @llvm.lifetime.start.p0(i64 384, ptr nonnull %14) #10
  invoke void @_ZN6Halide8Internal11ErrorReportC1EPKciS3_i(ptr noundef nonnull align 8 dereferenceable(380) %14, ptr noundef nonnull @.str.3, i32 noundef 1391, ptr noundef nonnull @.str.26, i32 noundef 0)
          to label %145 unwind label %164

145:                                              ; preds = %144
  %146 = call noundef nonnull align 8 dereferenceable(380) ptr @_ZN6Halide8Internal11ErrorReport3refEv(ptr noundef nonnull align 8 dereferenceable(380) %14)
  call void @_ZN6Halide8Internal9VoidifieranERNS0_11ErrorReportE(ptr noundef nonnull align 1 dereferenceable(1) %13, ptr noundef nonnull align 8 dereferenceable(380) %146)
  invoke void @_ZN6Halide8Internal11ErrorReportD1Ev(ptr noundef nonnull align 8 dereferenceable(380) %14)
          to label %.critedge226 unwind label %164

.critedge226:                                     ; preds = %145
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %14) #10
  br label %.critedge227

.critedge227:                                     ; preds = %143, %.critedge226
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15) #10
  %147 = getelementptr inbounds i8, ptr %1, i64 8
  %148 = call noundef i64 @_ZNKSt6vectorIlSaIlEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %147) #10
  %149 = trunc i64 %148 to i32
  %150 = add i32 %149, -1
  %151 = xor i1 %6, true
  invoke void @_ZN6Halide8Internal13Autoscheduler16generate_tilingsERKSt6vectorIlSaIlEEiib(ptr dead_on_unwind nonnull writable sret(%"class.std::vector") align 8 %15, ptr noundef nonnull align 8 dereferenceable(24) %147, i32 noundef %150, i32 noundef 2, i1 noundef zeroext %151)
          to label %152 unwind label %166

152:                                              ; preds = %.critedge227
  %153 = call noundef i64 @_ZNKSt6vectorIS_IlSaIlEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %15) #10
  %154 = icmp ugt i64 %153, 10000
  br i1 %154, label %155, label %173

155:                                              ; preds = %152
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %16) #10
  invoke void @_ZN6Halide8Internal5aslogC2Ei(ptr noundef nonnull align 1 dereferenceable(1) %16, i32 noundef 0)
          to label %156 unwind label %168

156:                                              ; preds = %155
  %157 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRA27_KcEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1) %16, ptr noundef nonnull align 1 dereferenceable(27) @.str.39)
          to label %158 unwind label %168

158:                                              ; preds = %156
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #10
  %159 = call noundef i64 @_ZNKSt6vectorIS_IlSaIlEESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %15) #10
  store i64 %159, ptr %17, align 8, !tbaa !84
  %160 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsImEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1) %157, ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %161 unwind label %170

161:                                              ; preds = %158
  %162 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRA2_KcEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1) %160, ptr noundef nonnull align 1 dereferenceable(2) @.str.9)
          to label %163 unwind label %170

163:                                              ; preds = %161
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #10
  br label %173

164:                                              ; preds = %145, %144
  %165 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 384, ptr nonnull %14) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #10
  br label %546

166:                                              ; preds = %.critedge227
  %167 = landingpad { ptr, i32 }
          cleanup
  br label %418

168:                                              ; preds = %156, %155
  %169 = landingpad { ptr, i32 }
          cleanup
  br label %172

170:                                              ; preds = %161, %158
  %171 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #10
  br label %172

172:                                              ; preds = %170, %168
  %.pn195 = phi { ptr, i32 } [ %171, %170 ], [ %169, %168 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #10
  br label %417

173:                                              ; preds = %163, %152
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #10
  %174 = call ptr @_ZNSt6vectorIS_IlSaIlEESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %15) #10
  store ptr %174, ptr %18, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #10
  %175 = call ptr @_ZNSt6vectorIS_IlSaIlEESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %15) #10
  store ptr %175, ptr %19, align 8
  %176 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt6vectorIlSaIlEES1_IS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %19) #10
  br i1 %176, label %.lr.ph271, label %._crit_edge272

.lr.ph271:                                        ; preds = %173
  %177 = getelementptr inbounds i8, ptr %1, i64 186
  %178 = getelementptr inbounds i8, ptr %1, i64 176
  %179 = getelementptr inbounds i8, ptr %1, i64 168
  %180 = getelementptr inbounds i8, ptr %1, i64 188
  %181 = getelementptr inbounds i8, ptr %1, i64 192
  %182 = getelementptr inbounds i8, ptr %1, i64 56
  %183 = getelementptr inbounds i8, ptr %1, i64 136
  %184 = getelementptr inbounds i8, ptr %1, i64 88
  br label %185

._crit_edge272:                                   ; preds = %409, %173
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #10
  call void @_ZNSt6vectorIS_IlSaIlEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #10
  br label %419

185:                                              ; preds = %.lr.ph271, %409
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %20) #10
  %186 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt6vectorIlSaIlEES1_IS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #10
  invoke void @_ZNSt6vectorIlSaIlEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 8 dereferenceable(24) %186)
          to label %187 unwind label %203

187:                                              ; preds = %185
  %188 = load i8, ptr %177, align 2, !tbaa !87, !range !80, !noundef !81
  %189 = trunc nuw i8 %188 to i1
  br i1 %189, label %190, label %216

190:                                              ; preds = %187
  %191 = load ptr, ptr %178, align 8, !tbaa !88
  %192 = getelementptr inbounds i8, ptr %191, i64 16
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #10
  %193 = call ptr @_ZNSt6vectorIlSaIlEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %20) #10
  store ptr %193, ptr %21, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #10
  %194 = call ptr @_ZNSt6vectorIlSaIlEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %20) #10
  store ptr %194, ptr %22, align 8
  %195 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPlSt6vectorIlSaIlEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %22) #10
  br i1 %195, label %.lr.ph260, label %._crit_edge261

._crit_edge261:                                   ; preds = %.lr.ph260, %190
  %.0181.lcssa = phi i32 [ 1, %190 ], [ %.1182, %.lr.ph260 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #10
  %196 = sitofp i32 %.0181.lcssa to double
  %197 = load i32, ptr %4, align 8, !tbaa !89
  %198 = sitofp i32 %197 to double
  %199 = fdiv double %196, %198
  %200 = call double @llvm.ceil.f64(double %199)
  %201 = fdiv double %200, %199
  %202 = fcmp ule double %201, 1.100000e+00
  br i1 %202, label %216, label %409

203:                                              ; preds = %185
  %204 = landingpad { ptr, i32 }
          cleanup
  br label %416

.lr.ph260:                                        ; preds = %190, %.lr.ph260
  %.0181258 = phi i32 [ %.1182, %.lr.ph260 ], [ 1, %190 ]
  %.0183257 = phi i64 [ %213, %.lr.ph260 ], [ 0, %190 ]
  %205 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPlSt6vectorIlSaIlEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %21) #10
  %206 = load i64, ptr %205, align 8, !tbaa !84
  %207 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %192, i64 noundef %.0183257) #10
  %208 = getelementptr inbounds i8, ptr %207, i64 32
  %209 = load i8, ptr %208, align 8, !tbaa !92, !range !80, !noundef !81
  %210 = trunc nuw i8 %209 to i1
  %211 = trunc i64 %206 to i32
  %212 = select i1 %210, i32 %211, i32 1
  %.1182 = mul i32 %212, %.0181258
  %213 = add i64 %.0183257, 1
  %214 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPlSt6vectorIlSaIlEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %21) #10
  %215 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPlSt6vectorIlSaIlEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %22) #10
  br i1 %215, label %.lr.ph260, label %._crit_edge261

216:                                              ; preds = %._crit_edge261, %187
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #10
  %217 = invoke noalias noundef nonnull dereferenceable(200) ptr @_Znwm(i64 noundef 200) #11
          to label %218 unwind label %289

218:                                              ; preds = %216
  call void @_ZN6Halide8Internal13Autoscheduler8LoopNestC2Ev(ptr noundef nonnull align 8 dereferenceable(196) %217) #10
  store ptr %217, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #10
  %219 = invoke noalias noundef nonnull dereferenceable(200) ptr @_Znwm(i64 noundef 200) #11
          to label %220 unwind label %291

220:                                              ; preds = %218
  call void @_ZN6Halide8Internal13Autoscheduler8LoopNestC2Ev(ptr noundef nonnull align 8 dereferenceable(196) %219) #10
  store ptr %219, ptr %24, align 8, !tbaa !5
  %221 = load ptr, ptr %179, align 8, !tbaa !99
  %222 = getelementptr inbounds i8, ptr %219, i64 168
  store ptr %221, ptr %222, align 8, !tbaa !99
  %223 = load ptr, ptr %23, align 8, !tbaa !5
  %224 = getelementptr inbounds i8, ptr %223, i64 168
  store ptr %221, ptr %224, align 8, !tbaa !99
  %225 = load ptr, ptr %178, align 8, !tbaa !88
  %226 = getelementptr inbounds i8, ptr %219, i64 176
  store ptr %225, ptr %226, align 8, !tbaa !88
  %227 = getelementptr inbounds i8, ptr %223, i64 176
  store ptr %225, ptr %227, align 8, !tbaa !88
  %228 = load i8, ptr %140, align 1, !tbaa !85, !range !80, !noundef !81
  %229 = trunc nuw i8 %228 to i1
  br i1 %229, label %230, label %232

230:                                              ; preds = %220
  %231 = invoke noundef zeroext i1 @_ZN6Halide8Internal13Autoscheduler11may_subtileEv()
          to label %._crit_edge291 unwind label %291

._crit_edge291:                                   ; preds = %230
  %.pre = load ptr, ptr %24, align 8, !tbaa !5
  %.pre292 = load ptr, ptr %23, align 8, !tbaa !5
  br label %232

232:                                              ; preds = %._crit_edge291, %220
  %233 = phi ptr [ %223, %220 ], [ %.pre292, %._crit_edge291 ]
  %234 = phi ptr [ %219, %220 ], [ %.pre, %._crit_edge291 ]
  %235 = phi i1 [ false, %220 ], [ %231, %._crit_edge291 ]
  %236 = getelementptr inbounds i8, ptr %234, i64 185
  %237 = zext i1 %235 to i8
  store i8 %237, ptr %236, align 1, !tbaa !85
  %238 = getelementptr inbounds i8, ptr %233, i64 185
  store i8 %237, ptr %238, align 1, !tbaa !85
  %239 = load i32, ptr %180, align 4, !tbaa !83
  %240 = getelementptr inbounds i8, ptr %234, i64 188
  store i32 %239, ptr %240, align 4, !tbaa !83
  %241 = getelementptr inbounds i8, ptr %233, i64 188
  store i32 %239, ptr %241, align 4, !tbaa !83
  %242 = load i32, ptr %181, align 8, !tbaa !100
  %243 = getelementptr inbounds i8, ptr %234, i64 192
  store i32 %242, ptr %243, align 8, !tbaa !100
  %244 = getelementptr inbounds i8, ptr %233, i64 192
  store i32 %242, ptr %244, align 8, !tbaa !100
  %245 = getelementptr inbounds i8, ptr %234, i64 8
  %246 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIlSaIlEEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %245, ptr noundef nonnull align 8 dereferenceable(24) %147)
          to label %247 unwind label %291

247:                                              ; preds = %232
  %248 = load ptr, ptr %24, align 8, !tbaa !5
  %249 = getelementptr inbounds i8, ptr %248, i64 184
  store i8 0, ptr %249, align 8, !tbaa !46
  %250 = load i8, ptr %177, align 2, !tbaa !87, !range !80, !noundef !81
  %251 = getelementptr inbounds i8, ptr %248, i64 186
  store i8 %250, ptr %251, align 2, !tbaa !87
  %252 = load ptr, ptr %23, align 8, !tbaa !5
  %253 = getelementptr inbounds i8, ptr %252, i64 186
  store i8 0, ptr %253, align 2, !tbaa !87
  %254 = getelementptr inbounds i8, ptr %252, i64 8
  %255 = call noundef i64 @_ZNKSt6vectorIlSaIlEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %147) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #10
  store i64 1, ptr %25, align 8, !tbaa !84
  invoke void @_ZNSt6vectorIlSaIlEE6resizeEmRKl(ptr noundef nonnull align 8 dereferenceable(24) %254, i64 noundef %255, ptr noundef nonnull align 8 dereferenceable(8) %25)
          to label %256 unwind label %293

256:                                              ; preds = %247
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #10
  %257 = load i8, ptr %80, align 8, !tbaa !46, !range !80, !noundef !81
  %258 = load ptr, ptr %23, align 8, !tbaa !5
  %259 = getelementptr inbounds i8, ptr %258, i64 184
  store i8 %257, ptr %259, align 8, !tbaa !46
  %260 = getelementptr inbounds i8, ptr %258, i64 32
  %261 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EEaSERKS8_(ptr noundef nonnull align 8 dereferenceable(24) %260, ptr noundef nonnull align 8 dereferenceable(24) %76)
          to label %262 unwind label %291

262:                                              ; preds = %256
  %263 = load ptr, ptr %23, align 8, !tbaa !5
  %264 = getelementptr inbounds i8, ptr %263, i64 56
  %265 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterEaSERKS6_(ptr noundef nonnull align 8 dereferenceable(32) %264, ptr noundef nonnull align 8 dereferenceable(32) %182)
          to label %266 unwind label %291

266:                                              ; preds = %262
  %267 = load ptr, ptr %23, align 8, !tbaa !5
  %268 = getelementptr inbounds i8, ptr %267, i64 136
  %269 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeENS1_12IntrusivePtrIKNS2_13BoundContentsEEELi4E22PerfectHashMapAsserterEaSERKSA_(ptr noundef nonnull align 8 dereferenceable(32) %268, ptr noundef nonnull align 8 dereferenceable(32) %183)
          to label %270 unwind label %291

270:                                              ; preds = %266
  %271 = load ptr, ptr %23, align 8, !tbaa !5
  %272 = getelementptr inbounds i8, ptr %271, i64 88
  %273 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EEaSERKSA_(ptr noundef nonnull align 8 dereferenceable(48) %272, ptr noundef nonnull align 8 dereferenceable(48) %184)
          to label %274 unwind label %291

274:                                              ; preds = %270
  %275 = load ptr, ptr %23, align 8, !tbaa !5
  %276 = load ptr, ptr %179, align 8, !tbaa !99
  %277 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Halide8Internal13Autoscheduler8LoopNest10get_boundsEPKNS1_11FunctionDAG4NodeE(ptr noundef nonnull align 8 dereferenceable(196) %275, ptr noundef %276)
          to label %278 unwind label %295

278:                                              ; preds = %274
  %279 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %277)
  %280 = invoke noundef ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents9make_copyEv(ptr noundef nonnull align 8 dereferenceable(16) %279)
          to label %281 unwind label %295

281:                                              ; preds = %278
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #10
  %282 = load ptr, ptr %179, align 8, !tbaa !99
  %283 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Halide8Internal13Autoscheduler8LoopNest10get_boundsEPKNS1_11FunctionDAG4NodeE(ptr noundef nonnull align 8 dereferenceable(196) %3, ptr noundef %282)
          to label %284 unwind label %297

284:                                              ; preds = %281
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEC2ERKS5_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %283) #10
  %285 = call noundef i64 @_ZNKSt6vectorIlSaIlEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %20) #10
  %.not283 = icmp eq i64 %285, 0
  br i1 %.not283, label %._crit_edge266, label %.lr.ph265

._crit_edge266:                                   ; preds = %338, %284
  %286 = load ptr, ptr %24, align 8, !tbaa !5
  %287 = load ptr, ptr %179, align 8, !tbaa !99
  %288 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK6Halide8Internal13Autoscheduler8LoopNest10set_boundsEPKNS1_11FunctionDAG4NodeEPNS1_13BoundContentsE(ptr noundef nonnull align 8 dereferenceable(196) %286, ptr noundef %287, ptr noundef %280)
          to label %351 unwind label %356

289:                                              ; preds = %216
  %290 = landingpad { ptr, i32 }
          cleanup
  br label %415

291:                                              ; preds = %360, %352, %270, %266, %262, %256, %232, %230, %218
  %292 = landingpad { ptr, i32 }
          cleanup
  br label %414

293:                                              ; preds = %247
  %294 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #10
  br label %414

295:                                              ; preds = %278, %274
  %296 = landingpad { ptr, i32 }
          cleanup
  br label %414

297:                                              ; preds = %281
  %298 = landingpad { ptr, i32 }
          cleanup
  br label %359

.lr.ph265:                                        ; preds = %284, %338
  %.0184263 = phi i64 [ %346, %338 ], [ 0, %284 ]
  %299 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %20, i64 noundef %.0184263) #10
  %300 = load i64, ptr %299, align 8, !tbaa !84
  %301 = load ptr, ptr %24, align 8, !tbaa !5
  %302 = getelementptr inbounds i8, ptr %301, i64 8
  %303 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %302, i64 noundef %.0184263) #10
  %304 = load i64, ptr %303, align 8, !tbaa !84
  %305 = add i64 %300, -1
  %306 = add i64 %305, %304
  %307 = sdiv i64 %306, %300
  %308 = load ptr, ptr %23, align 8, !tbaa !5
  %309 = getelementptr inbounds i8, ptr %308, i64 8
  %310 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %309, i64 noundef %.0184263) #10
  store i64 %307, ptr %310, align 8, !tbaa !84
  %311 = load ptr, ptr %24, align 8, !tbaa !5
  %312 = getelementptr inbounds i8, ptr %311, i64 8
  %313 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %312, i64 noundef %.0184263) #10
  store i64 %300, ptr %313, align 8, !tbaa !84
  %314 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %26)
  %315 = load ptr, ptr %178, align 8, !tbaa !88
  %316 = getelementptr inbounds i8, ptr %315, i64 8
  %317 = load i32, ptr %316, align 8, !tbaa !101
  %318 = trunc i64 %.0184263 to i32
  %319 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNK6Halide8Internal13Autoscheduler13BoundContents5loopsEii(ptr noundef nonnull align 8 dereferenceable(16) %314, i32 noundef %317, i32 noundef %318)
          to label %320 unwind label %349

320:                                              ; preds = %.lr.ph265
  %321 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span3minEv(ptr noundef nonnull align 8 dereferenceable(17) %319)
  %322 = call noundef i64 @_ZNK6Halide8Internal13Autoscheduler4Span6extentEv(ptr noundef nonnull align 8 dereferenceable(17) %319)
  %323 = add i64 %305, %322
  %324 = sdiv i64 %323, %300
  %325 = sdiv i64 %300, 2
  %326 = mul nsw i64 %324, %325
  %327 = add nsw i64 %326, %321
  %328 = call noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler4Span15constant_extentEv(ptr noundef nonnull align 8 dereferenceable(17) %319)
  %329 = icmp sgt i64 %300, 1
  %or.cond = select i1 %328, i1 true, i1 %329
  br i1 %or.cond, label %330, label %338

330:                                              ; preds = %320
  %331 = icmp eq i64 %324, 1
  %332 = icmp eq i64 %300, 1
  %or.cond4 = or i1 %332, %331
  br i1 %or.cond4, label %338, label %333

333:                                              ; preds = %330
  %334 = load ptr, ptr %178, align 8, !tbaa !88
  %335 = getelementptr inbounds i8, ptr %334, i64 8
  %336 = load i32, ptr %335, align 8, !tbaa !101
  %337 = icmp eq i32 %336, 0
  br label %338

338:                                              ; preds = %330, %333, %320
  %339 = phi i1 [ false, %320 ], [ true, %330 ], [ %337, %333 ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %27) #10
  %340 = add i64 %324, -1
  %341 = add i64 %340, %327
  call void @_ZN6Halide8Internal13Autoscheduler4SpanC2Ellb(ptr noundef nonnull align 8 dereferenceable(17) %27, i64 noundef %327, i64 noundef %341, i1 noundef zeroext %339)
  %342 = load ptr, ptr %178, align 8, !tbaa !88
  %343 = getelementptr inbounds i8, ptr %342, i64 8
  %344 = load i32, ptr %343, align 8, !tbaa !101
  %345 = call noundef nonnull align 8 dereferenceable(17) ptr @_ZN6Halide8Internal13Autoscheduler13BoundContents5loopsEii(ptr noundef nonnull align 8 dereferenceable(16) %280, i32 noundef %344, i32 noundef %318)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(17) %345, ptr noundef nonnull align 8 dereferenceable(17) %27, i64 17, i1 false), !tbaa.struct !121
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %27) #10
  %346 = add nuw i64 %.0184263, 1
  %347 = call noundef i64 @_ZNKSt6vectorIlSaIlEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %20) #10
  %348 = icmp ult i64 %346, %347
  br i1 %348, label %.lr.ph265, label %._crit_edge266, !llvm.loop !123

349:                                              ; preds = %.lr.ph265
  %350 = landingpad { ptr, i32 }
          cleanup
  br label %358

351:                                              ; preds = %._crit_edge266
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #10
  br i1 %6, label %360, label %352

352:                                              ; preds = %351
  %353 = load ptr, ptr %24, align 8, !tbaa !5
  %354 = getelementptr inbounds i8, ptr %353, i64 88
  %355 = invoke { ptr, i8 } @_ZNSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE6insertERKS6_(ptr noundef nonnull align 8 dereferenceable(48) %354, ptr noundef nonnull align 8 dereferenceable(8) %8)
          to label %360 unwind label %291

356:                                              ; preds = %._crit_edge266
  %357 = landingpad { ptr, i32 }
          cleanup
  br label %358

358:                                              ; preds = %356, %349
  %.pn210 = phi { ptr, i32 } [ %350, %349 ], [ %357, %356 ]
  call void @_ZN6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler13BoundContentsEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #10
  br label %359

359:                                              ; preds = %358, %297
  %.pn210.pn = phi { ptr, i32 } [ %.pn210, %358 ], [ %298, %297 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #10
  br label %414

360:                                              ; preds = %352, %351
  %361 = load ptr, ptr %24, align 8, !tbaa !5
  %362 = getelementptr inbounds i8, ptr %361, i64 32
  %363 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE12emplace_backIJRPS4_EEERS6_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %362, ptr noundef nonnull align 8 dereferenceable(8) %23)
          to label %364 unwind label %291

364:                                              ; preds = %360
  br i1 %6, label %.critedge229, label %365

365:                                              ; preds = %364
  %366 = load ptr, ptr %8, align 8, !tbaa !5
  %367 = getelementptr inbounds i8, ptr %366, i64 120
  %368 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %367) #10
  %369 = icmp eq i64 %368, 1
  br i1 %369, label %370, label %.critedge229

370:                                              ; preds = %365
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %28) #10
  %371 = load ptr, ptr %23, align 8, !tbaa !5
  %372 = load ptr, ptr %8, align 8, !tbaa !5
  %373 = load ptr, ptr %24, align 8, !tbaa !5
  invoke void @_ZNK6Halide8Internal13Autoscheduler8LoopNest16compute_in_tilesEPKNS1_11FunctionDAG4NodeEPKS2_RKNS_13MachineParamsEib(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.8") align 8 %28, ptr noundef nonnull align 8 dereferenceable(196) %371, ptr noundef %372, ptr noundef %373, ptr noundef nonnull align 8 dereferenceable(20) %4, i32 noundef %5, i1 noundef zeroext true)
          to label %374 unwind label %378

374:                                              ; preds = %370
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #10
  %375 = call ptr @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %28) #10
  store ptr %375, ptr %29, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #10
  %376 = call ptr @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %28) #10
  store ptr %376, ptr %30, align 8
  %377 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %30) #10
  br i1 %377, label %.lr.ph268, label %._crit_edge269

._crit_edge269:                                   ; preds = %392, %374
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #10
  call void @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %28) #10
  br label %.critedge229

378:                                              ; preds = %370
  %379 = landingpad { ptr, i32 }
          cleanup
  br label %397

.lr.ph268:                                        ; preds = %374, %392
  %380 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %29) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #10
  %381 = invoke noalias noundef nonnull dereferenceable(200) ptr @_Znwm(i64 noundef 200) #11
          to label %382 unwind label %395

382:                                              ; preds = %.lr.ph268
  call void @_ZN6Halide8Internal13Autoscheduler8LoopNestC2Ev(ptr noundef nonnull align 8 dereferenceable(196) %381) #10
  store ptr %381, ptr %31, align 8, !tbaa !5
  %383 = load ptr, ptr %24, align 8, !tbaa !5
  invoke void @_ZN6Halide8Internal13Autoscheduler8LoopNest9copy_fromERKS2_(ptr noundef nonnull align 8 dereferenceable(196) %381, ptr noundef nonnull align 8 dereferenceable(196) %383)
          to label %384 unwind label %395

384:                                              ; preds = %382
  %385 = load ptr, ptr %31, align 8, !tbaa !5
  %386 = getelementptr inbounds i8, ptr %385, i64 32
  call void @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %386) #10
  %387 = load ptr, ptr %31, align 8, !tbaa !5
  %388 = getelementptr inbounds i8, ptr %387, i64 32
  %389 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE12emplace_backIJS6_EEERS6_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %388, ptr noundef nonnull align 8 dereferenceable(8) %380)
          to label %390 unwind label %395

390:                                              ; preds = %384
  %391 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE12emplace_backIJRPS4_EEERS6_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(8) %31)
          to label %392 unwind label %395

392:                                              ; preds = %390
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #10
  %393 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %29) #10
  %394 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %30) #10
  br i1 %394, label %.lr.ph268, label %._crit_edge269

395:                                              ; preds = %390, %384, %382, %.lr.ph268
  %396 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #10
  call void @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #10
  br label %397

397:                                              ; preds = %395, %378
  %.pn207 = phi { ptr, i32 } [ %396, %395 ], [ %379, %378 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %28) #10
  br label %414

.critedge229:                                     ; preds = %364, %._crit_edge269, %365
  %398 = load ptr, ptr %24, align 8, !tbaa !5
  %399 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN6Halide8Internal13Autoscheduler8LoopNest12compute_hereEPKNS1_11FunctionDAG4NodeEbi(ptr noundef nonnull align 8 dereferenceable(196) %398, ptr noundef %399, i1 noundef zeroext true, i32 noundef %5)
          to label %400 unwind label %412

400:                                              ; preds = %.critedge229
  %401 = load ptr, ptr %24, align 8, !tbaa !5
  %402 = getelementptr inbounds i8, ptr %401, i64 185
  %403 = load i8, ptr %402, align 1, !tbaa !85, !range !80, !noundef !81
  %404 = icmp ne i8 %403, 0
  %405 = and i1 %404, %151
  %406 = zext i1 %405 to i8
  store i8 %406, ptr %402, align 1, !tbaa !85
  %407 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE12emplace_backIJRPS4_EEERS6_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(8) %24)
          to label %408 unwind label %412

408:                                              ; preds = %400
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #10
  br label %409

409:                                              ; preds = %._crit_edge261, %408
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #10
  %410 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt6vectorIlSaIlEES1_IS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #10
  %411 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt6vectorIlSaIlEES1_IS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %19) #10
  br i1 %411, label %185, label %._crit_edge272

412:                                              ; preds = %400, %.critedge229
  %413 = landingpad { ptr, i32 }
          cleanup
  br label %414

414:                                              ; preds = %397, %412, %295, %359, %293, %291
  %.pn210.pn.pn.pn = phi { ptr, i32 } [ %292, %291 ], [ %294, %293 ], [ %.pn210.pn, %359 ], [ %296, %295 ], [ %.pn207, %397 ], [ %413, %412 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #10
  br label %415

415:                                              ; preds = %414, %289
  %.pn210.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn210.pn.pn.pn, %414 ], [ %290, %289 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #10
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #10
  br label %416

416:                                              ; preds = %415, %203
  %.pn210.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn210.pn.pn.pn.pn, %415 ], [ %204, %203 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #10
  br label %417

417:                                              ; preds = %416, %172
  %.pn210.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn210.pn.pn.pn.pn.pn, %416 ], [ %.pn195, %172 ]
  call void @_ZNSt6vectorIS_IlSaIlEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #10
  br label %418

418:                                              ; preds = %417, %166
  %.pn210.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn210.pn.pn.pn.pn.pn.pn, %417 ], [ %167, %166 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #10
  br label %546

419:                                              ; preds = %._crit_edge272, %139
  %420 = icmp slt i32 %.0172.lcssa, 0
  %brmerge = or i1 %.0174.lcssa, %6
  %or.cond236 = select i1 %420, i1 true, i1 %brmerge
  br i1 %or.cond236, label %.critedge235, label %421

421:                                              ; preds = %419
  %422 = invoke noundef zeroext i1 @_ZN6Halide8Internal13Autoscheduler11may_subtileEv()
          to label %423 unwind label %451

423:                                              ; preds = %421
  br i1 %422, label %426, label %424

424:                                              ; preds = %423
  %425 = call noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler8LoopNest7is_rootEv(ptr noundef nonnull align 8 dereferenceable(196) %1)
  br i1 %425, label %426, label %.critedge235

426:                                              ; preds = %424, %423
  %427 = load i32, ptr %4, align 8, !tbaa !89
  %428 = icmp eq i32 %427, 1
  br i1 %428, label %431, label %429

429:                                              ; preds = %426
  %430 = call noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler8LoopNest7is_rootEv(ptr noundef nonnull align 8 dereferenceable(196) %1)
  br label %431

431:                                              ; preds = %429, %426
  %.not202 = phi i1 [ false, %426 ], [ %430, %429 ]
  %432 = zext nneg i32 %.0172.lcssa to i64
  %433 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %76, i64 noundef %432) #10
  %434 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %433)
  %435 = getelementptr inbounds i8, ptr %434, i64 8
  %436 = call noundef i64 @_ZNKSt6vectorIlSaIlEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %435) #10
  %.not284 = icmp eq i64 %436, 0
  br i1 %.not284, label %._crit_edge277, label %.lr.ph276

._crit_edge277:                                   ; preds = %.lr.ph276, %431
  %.0165.lcssa = phi i32 [ 0, %431 ], [ %459, %.lr.ph276 ]
  %437 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %433)
  %438 = getelementptr inbounds i8, ptr %437, i64 8
  %439 = call noundef i64 @_ZNKSt6vectorIlSaIlEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %438) #10
  %440 = trunc i64 %439 to i32
  %441 = add nsw i32 %440, -1
  %442 = icmp ne i32 %.0165.lcssa, %441
  %.not204 = or i1 %.not202, %442
  %443 = load ptr, ptr %8, align 8, !tbaa !5
  %444 = getelementptr inbounds i8, ptr %443, i64 120
  %445 = call noundef i64 @_ZNKSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %444) #10
  %446 = icmp ne i64 %445, 1
  %.not201 = or i1 %446, %.not204
  %447 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %433)
  %448 = getelementptr inbounds i8, ptr %447, i64 192
  %449 = load i32, ptr %448, align 8, !tbaa !100
  %450 = icmp eq i32 %449, -1
  br i1 %450, label %475, label %465

451:                                              ; preds = %421
  %452 = landingpad { ptr, i32 }
          cleanup
  br label %546

.lr.ph276:                                        ; preds = %431, %.lr.ph276
  %.0164274 = phi i64 [ %460, %.lr.ph276 ], [ 0, %431 ]
  %.0165273 = phi i32 [ %459, %.lr.ph276 ], [ 0, %431 ]
  %453 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %433)
  %454 = getelementptr inbounds i8, ptr %453, i64 8
  %455 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %454, i64 noundef %.0164274) #10
  %456 = load i64, ptr %455, align 8, !tbaa !84
  %457 = icmp eq i64 %456, 1
  %458 = zext i1 %457 to i32
  %459 = add nuw nsw i32 %.0165273, %458
  %460 = add nuw i64 %.0164274, 1
  %461 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %433)
  %462 = getelementptr inbounds i8, ptr %461, i64 8
  %463 = call noundef i64 @_ZNKSt6vectorIlSaIlEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %462) #10
  %464 = icmp ult i64 %460, %463
  br i1 %464, label %.lr.ph276, label %._crit_edge277, !llvm.loop !124

465:                                              ; preds = %._crit_edge277
  %466 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %433)
  %467 = getelementptr inbounds i8, ptr %466, i64 8
  %468 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %433)
  %469 = getelementptr inbounds i8, ptr %468, i64 192
  %470 = load i32, ptr %469, align 8, !tbaa !100
  %471 = sext i32 %470 to i64
  %472 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %467, i64 noundef %471) #10
  %473 = load i64, ptr %472, align 8, !tbaa !84
  %474 = icmp ne i64 %473, 1
  br label %475

475:                                              ; preds = %._crit_edge277, %465
  %.not197198 = phi i1 [ false, %._crit_edge277 ], [ %474, %465 ]
  %.not197 = select i1 %.not201, i1 true, i1 %.not197198
  %476 = call noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler8LoopNest7is_rootEv(ptr noundef nonnull align 8 dereferenceable(196) %1)
  br i1 %476, label %477, label %485

477:                                              ; preds = %475
  %478 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %433)
  %479 = getelementptr inbounds i8, ptr %478, i64 8
  %480 = call noundef i64 @_ZNKSt6vectorIlSaIlEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %479) #10
  %481 = trunc i64 %480 to i32
  %482 = icmp eq i32 %.0165.lcssa, %481
  %483 = load i32, ptr %4, align 8
  %484 = icmp sgt i32 %483, 1
  %or.cond233 = select i1 %482, i1 %484, i1 false
  br i1 %or.cond233, label %509, label %485

485:                                              ; preds = %477, %475
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %32) #10
  %486 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %76, i64 noundef %432) #10
  %487 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %486)
  %488 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZNK6Halide8Internal13Autoscheduler8LoopNest16compute_in_tilesEPKNS1_11FunctionDAG4NodeEPKS2_RKNS_13MachineParamsEib(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.8") align 8 %32, ptr noundef nonnull align 8 dereferenceable(196) %487, ptr noundef %488, ptr noundef nonnull %1, ptr noundef nonnull align 8 dereferenceable(20) %4, i32 noundef %5, i1 noundef zeroext false)
          to label %489 unwind label %493

489:                                              ; preds = %485
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #10
  %490 = call ptr @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %32) #10
  store ptr %490, ptr %33, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #10
  %491 = call ptr @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %32) #10
  store ptr %491, ptr %34, align 8
  %492 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull align 8 dereferenceable(8) %34) #10
  br i1 %492, label %.lr.ph280.split, label %._crit_edge281

.split.us:                                        ; preds = %540, %535, %531, %530, %.lr.ph280.split.us.1
  %lpad.loopexit.split-lp289 = landingpad { ptr, i32 }
          cleanup
  br label %503

._crit_edge281:                                   ; preds = %506, %489
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #10
  call void @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %32) #10
  br label %509

493:                                              ; preds = %520, %485
  %494 = landingpad { ptr, i32 }
          cleanup
  br label %545

.lr.ph280.split:                                  ; preds = %489, %506
  %495 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %33) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #10
  %496 = invoke noalias noundef nonnull dereferenceable(200) ptr @_Znwm(i64 noundef 200) #11
          to label %497 unwind label %.split

497:                                              ; preds = %.lr.ph280.split
  call void @_ZN6Halide8Internal13Autoscheduler8LoopNestC2Ev(ptr noundef nonnull align 8 dereferenceable(196) %496) #10
  store ptr %496, ptr %35, align 8, !tbaa !5
  invoke void @_ZN6Halide8Internal13Autoscheduler8LoopNest9copy_fromERKS2_(ptr noundef nonnull align 8 dereferenceable(196) %496, ptr noundef nonnull align 8 dereferenceable(196) %1)
          to label %498 unwind label %.split

498:                                              ; preds = %497
  %499 = load ptr, ptr %35, align 8, !tbaa !5
  %500 = getelementptr inbounds i8, ptr %499, i64 32
  %501 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %500, i64 noundef %432) #10
  %502 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEaSERKS5_(ptr noundef nonnull align 8 dereferenceable(8) %501, ptr noundef nonnull align 8 dereferenceable(8) %495)
          to label %504 unwind label %.split

.split:                                           ; preds = %504, %498, %497, %.lr.ph280.split
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %503

503:                                              ; preds = %.split.us, %.split
  %.us-phi = phi { ptr, i32 } [ %lpad.loopexit, %.split ], [ %lpad.loopexit.split-lp289, %.split.us ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #10
  call void @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #10
  br label %545

504:                                              ; preds = %498
  %505 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE12emplace_backIJRPS4_EEERS6_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(8) %35)
          to label %506 unwind label %.split

506:                                              ; preds = %504
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #10
  %507 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %33) #10
  %508 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull align 8 dereferenceable(8) %34) #10
  br i1 %508, label %.lr.ph280.split, label %._crit_edge281

509:                                              ; preds = %477, %._crit_edge281
  br i1 %.not197, label %.critedge235, label %510

510:                                              ; preds = %509
  %511 = call noundef zeroext i1 @_ZNK6Halide8Internal13Autoscheduler8LoopNest7is_rootEv(ptr noundef nonnull align 8 dereferenceable(196) %1)
  br i1 %511, label %512, label %520

512:                                              ; preds = %510
  %513 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %433)
  %514 = getelementptr inbounds i8, ptr %513, i64 8
  %515 = call noundef i64 @_ZNKSt6vectorIlSaIlEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %514) #10
  %516 = trunc i64 %515 to i32
  %517 = icmp eq i32 %.0165.lcssa, %516
  %518 = load i32, ptr %4, align 8
  %519 = icmp sgt i32 %518, 1
  %or.cond233.1 = select i1 %517, i1 %519, i1 false
  br i1 %or.cond233.1, label %.critedge235, label %520

520:                                              ; preds = %512, %510
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %32) #10
  %521 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %76, i64 noundef %432) #10
  %522 = call noundef ptr @_ZNK6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %521)
  %523 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZNK6Halide8Internal13Autoscheduler8LoopNest16compute_in_tilesEPKNS1_11FunctionDAG4NodeEPKS2_RKNS_13MachineParamsEib(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.8") align 8 %32, ptr noundef nonnull align 8 dereferenceable(196) %522, ptr noundef %523, ptr noundef nonnull %1, ptr noundef nonnull align 8 dereferenceable(20) %4, i32 noundef %5, i1 noundef zeroext true)
          to label %524 unwind label %493

524:                                              ; preds = %520
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #10
  %525 = call ptr @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %32) #10
  store ptr %525, ptr %33, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #10
  %526 = call ptr @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %32) #10
  store ptr %526, ptr %34, align 8
  %527 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull align 8 dereferenceable(8) %34) #10
  br i1 %527, label %.lr.ph280.split.us.1, label %._crit_edge281.1

.lr.ph280.split.us.1:                             ; preds = %524, %542
  %528 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %33) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #10
  %529 = invoke noalias noundef nonnull dereferenceable(200) ptr @_Znwm(i64 noundef 200) #11
          to label %530 unwind label %.split.us

530:                                              ; preds = %.lr.ph280.split.us.1
  call void @_ZN6Halide8Internal13Autoscheduler8LoopNestC2Ev(ptr noundef nonnull align 8 dereferenceable(196) %529) #10
  store ptr %529, ptr %35, align 8, !tbaa !5
  invoke void @_ZN6Halide8Internal13Autoscheduler8LoopNest9copy_fromERKS2_(ptr noundef nonnull align 8 dereferenceable(196) %529, ptr noundef nonnull align 8 dereferenceable(196) %1)
          to label %531 unwind label %.split.us

531:                                              ; preds = %530
  %532 = load ptr, ptr %35, align 8, !tbaa !5
  %533 = getelementptr inbounds i8, ptr %532, i64 88
  %534 = invoke { ptr, i8 } @_ZNSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE6insertERKS6_(ptr noundef nonnull align 8 dereferenceable(48) %533, ptr noundef nonnull align 8 dereferenceable(8) %8)
          to label %535 unwind label %.split.us

535:                                              ; preds = %531
  %536 = load ptr, ptr %35, align 8, !tbaa !5
  %537 = getelementptr inbounds i8, ptr %536, i64 32
  %538 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %537, i64 noundef %432) #10
  %539 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEaSERKS5_(ptr noundef nonnull align 8 dereferenceable(8) %538, ptr noundef nonnull align 8 dereferenceable(8) %528)
          to label %540 unwind label %.split.us

540:                                              ; preds = %535
  %541 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE12emplace_backIJRPS4_EEERS6_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(8) %35)
          to label %542 unwind label %.split.us

542:                                              ; preds = %540
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #10
  %543 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %33) #10
  %544 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull align 8 dereferenceable(8) %34) #10
  br i1 %544, label %.lr.ph280.split.us.1, label %._crit_edge281.1

._crit_edge281.1:                                 ; preds = %542, %524
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #10
  call void @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %32) #10
  br label %.critedge235

545:                                              ; preds = %503, %493
  %.pn205 = phi { ptr, i32 } [ %.us-phi, %503 ], [ %494, %493 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %32) #10
  br label %546

.critedge235:                                     ; preds = %.preheader, %509, %512, %._crit_edge281.1, %._crit_edge, %43, %419, %424, %134
  ret void

546:                                              ; preds = %93, %133, %164, %418, %451, %545, %58, %60
  %.pn219.pn = phi { ptr, i32 } [ %61, %60 ], [ %59, %58 ], [ %94, %93 ], [ %.pn210.pn.pn.pn.pn.pn.pn.pn, %418 ], [ %.pn205, %545 ], [ %452, %451 ], [ %165, %164 ], [ %.pn192.pn, %133 ]
  call void @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #10
  resume { ptr, i32 } %.pn219.pn
}

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE12emplace_backIJPS4_EEERS6_DpOT_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsIRA27_KcEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(27)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZN6Halide8Internal5asloglsImEERS1_OT_(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIlSaIlEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #1 align 2

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

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

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

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

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

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.ceil.f64(double) #9

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE12emplace_backIJS6_EEERS6_DpOT_(ptr noundef nonnull align 8 dereferenceable(24), 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_iteratorIPN6Halide8Internal12IntrusivePtrIKNS2_13Autoscheduler8LoopNestEEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_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 @_ZN6Halide8Internal12IntrusivePtrIKNS0_13Autoscheduler8LoopNestEEaSERKS5_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #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 = { inlinehint 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 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #8 = { nobuiltin allocsize(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 #9 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #10 = { nounwind }
attributes #11 = { builtin allocsize(0) }

!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, !14, i64 168}
!10 = !{!"_ZTSN6Halide8Internal13Autoscheduler11FunctionDAG4NodeE", !6, i64 0, !11, i64 8, !15, i64 32, !16, i64 40, !20, i64 64, !24, i64 88, !28, i64 112, !29, i64 120, !33, i64 144, !14, i64 168, !14, i64 172, !14, i64 176, !14, i64 180, !28, i64 184, !28, i64 185, !28, i64 186, !28, i64 187, !28, i64 188, !37, i64 192}
!11 = !{!"_ZTSN6Halide8Internal8FunctionE", !12, i64 0}
!12 = !{!"_ZTSN6Halide8Internal11FunctionPtrE", !13, i64 0, !6, i64 8, !14, i64 16}
!13 = !{!"_ZTSN6Halide8Internal12IntrusivePtrINS0_13FunctionGroupEEE", !6, i64 0}
!14 = !{!"int", !7, i64 0}
!15 = !{!"double", !7, i64 0}
!16 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG16SymbolicIntervalESaIS4_EE", !17, i64 0}
!17 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG16SymbolicIntervalESaIS4_EE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG16SymbolicIntervalESaIS4_EE12_Vector_implE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG16SymbolicIntervalESaIS4_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!20 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler4SpanESaIS3_EE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler4SpanESaIS3_EE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler4SpanESaIS3_EE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler4SpanESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!24 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoESaIS5_EE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoESaIS5_EE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoESaIS5_EE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node18RegionComputedInfoESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!28 = !{!"bool", !7, i64 0}
!29 = !{!"_ZTSSt6vectorIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE", !30, i64 0}
!30 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE12_Vector_implE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!33 = !{!"_ZTSSt6vectorIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE", !34, i64 0}
!34 = !{!"_ZTSSt12_Vector_baseIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE12_Vector_implE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseIPN6Halide8Internal13Autoscheduler11FunctionDAG4EdgeESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!37 = !{!"_ZTSSt10unique_ptrIN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_EE", !38, i64 0}
!38 = !{!"_ZTSSt15__uniq_ptr_dataIN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_ELb1ELb1EE", !39, i64 0}
!39 = !{!"_ZTSSt15__uniq_ptr_implIN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_EE", !40, i64 0}
!40 = !{!"_ZTSSt5tupleIJPN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_EEE", !41, i64 0}
!41 = !{!"_ZTSSt11_Tuple_implILm0EJPN6Halide8Internal13Autoscheduler13BoundContents6LayoutESt14default_deleteIS4_EEE", !42, i64 0}
!42 = !{!"_ZTSSt10_Head_baseILm0EPN6Halide8Internal13Autoscheduler13BoundContents6LayoutELb0EE", !6, i64 0}
!43 = !{!10, !14, i64 180}
!44 = distinct !{!44, !45}
!45 = !{!"llvm.loop.mustprogress"}
!46 = !{!47, !28, i64 184}
!47 = !{!"_ZTSN6Halide8Internal13Autoscheduler8LoopNestE", !48, i64 0, !51, i64 8, !55, i64 32, !59, i64 56, !65, i64 88, !74, i64 136, !6, i64 168, !6, i64 176, !28, i64 184, !28, i64 185, !28, i64 186, !14, i64 188, !14, i64 192}
!48 = !{!"_ZTSN6Halide8Internal8RefCountE", !49, i64 0}
!49 = !{!"_ZTSSt6atomicIiE", !50, i64 0}
!50 = !{!"_ZTSSt13__atomic_baseIiE", !14, i64 0}
!51 = !{!"_ZTSSt6vectorIlSaIlEE", !52, i64 0}
!52 = !{!"_ZTSSt12_Vector_baseIlSaIlEE", !53, i64 0}
!53 = !{!"_ZTSNSt12_Vector_baseIlSaIlEE12_Vector_implE", !54, i64 0}
!54 = !{!"_ZTSNSt12_Vector_baseIlSaIlEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!55 = !{!"_ZTSSt6vectorIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE", !56, i64 0}
!56 = !{!"_ZTSSt12_Vector_baseIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE", !57, i64 0}
!57 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE12_Vector_implE", !58, i64 0}
!58 = !{!"_ZTSNSt12_Vector_baseIN6Halide8Internal12IntrusivePtrIKNS1_13Autoscheduler8LoopNestEEESaIS6_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!59 = !{!"_ZTS14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterE", !60, i64 0, !14, i64 24, !64, i64 28}
!60 = !{!"_ZTSSt6vectorISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElESaIS8_EE", !61, i64 0}
!61 = !{!"_ZTSSt12_Vector_baseISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElESaIS8_EE", !62, i64 0}
!62 = !{!"_ZTSNSt12_Vector_baseISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElESaIS8_EE12_Vector_implE", !63, i64 0}
!63 = !{!"_ZTSNSt12_Vector_baseISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElESaIS8_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!64 = !{!"_ZTSN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeElLi4E22PerfectHashMapAsserterEUt_E", !7, i64 0}
!65 = !{!"_ZTSSt3setIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeESt4lessIS6_ESaIS6_EE", !66, i64 0}
!66 = !{!"_ZTSSt8_Rb_treeIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeES6_St9_IdentityIS6_ESt4lessIS6_ESaIS6_EE", !67, i64 0}
!67 = !{!"_ZTSNSt8_Rb_treeIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeES6_St9_IdentityIS6_ESt4lessIS6_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !68, i64 0, !70, i64 8}
!68 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEEE", !69, i64 0}
!69 = !{!"_ZTSSt4lessIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeEE"}
!70 = !{!"_ZTSSt15_Rb_tree_header", !71, i64 0, !73, i64 32}
!71 = !{!"_ZTSSt18_Rb_tree_node_base", !72, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!72 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!73 = !{!"long", !7, i64 0}
!74 = !{!"_ZTS14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeENS1_12IntrusivePtrIKNS2_13BoundContentsEEELi4E22PerfectHashMapAsserterE", !75, i64 0, !14, i64 24, !79, i64 28}
!75 = !{!"_ZTSSt6vectorISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeENS2_12IntrusivePtrIKNS3_13BoundContentsEEEESaISC_EE", !76, i64 0}
!76 = !{!"_ZTSSt12_Vector_baseISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeENS2_12IntrusivePtrIKNS3_13BoundContentsEEEESaISC_EE", !77, i64 0}
!77 = !{!"_ZTSNSt12_Vector_baseISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeENS2_12IntrusivePtrIKNS3_13BoundContentsEEEESaISC_EE12_Vector_implE", !78, i64 0}
!78 = !{!"_ZTSNSt12_Vector_baseISt4pairIPKN6Halide8Internal13Autoscheduler11FunctionDAG4NodeENS2_12IntrusivePtrIKNS3_13BoundContentsEEEESaISC_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!79 = !{!"_ZTSN14PerfectHashMapIN6Halide8Internal13Autoscheduler11FunctionDAG4NodeENS1_12IntrusivePtrIKNS2_13BoundContentsEEELi4E22PerfectHashMapAsserterEUt_E", !7, i64 0}
!80 = !{i8 0, i8 2}
!81 = !{}
!82 = distinct !{!82, !45}
!83 = !{!47, !14, i64 188}
!84 = !{!73, !73, i64 0}
!85 = !{!47, !28, i64 185}
!86 = !{!10, !28, i64 186}
!87 = !{!47, !28, i64 186}
!88 = !{!47, !6, i64 176}
!89 = !{!90, !14, i64 0}
!90 = !{!"_ZTSN6Halide13MachineParamsE", !14, i64 0, !73, i64 8, !91, i64 16}
!91 = !{!"float", !7, i64 0}
!92 = !{!93, !28, i64 32}
!93 = !{!"_ZTSN6Halide8Internal13Autoscheduler11FunctionDAG4Node4LoopE", !94, i64 0, !28, i64 32, !28, i64 33, !96, i64 40, !96, i64 48, !14, i64 56, !28, i64 60, !14, i64 64, !28, i64 68, !73, i64 72, !73, i64 80, !94, i64 88}
!94 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !95, i64 0, !73, i64 8, !7, i64 16}
!95 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!96 = !{!"_ZTSN6Halide4ExprE", !97, i64 0}
!97 = !{!"_ZTSN6Halide8Internal8IRHandleE", !98, i64 0}
!98 = !{!"_ZTSN6Halide8Internal12IntrusivePtrIKNS0_6IRNodeEEE", !6, i64 0}
!99 = !{!47, !6, i64 168}
!100 = !{!47, !14, i64 192}
!101 = !{!102, !14, i64 8}
!102 = !{!"_ZTSN6Halide8Internal13Autoscheduler11FunctionDAG4Node5StageE", !6, i64 0, !14, i64 8, !103, i64 16, !28, i64 40, !14, i64 44, !107, i64 48, !108, i64 1200, !94, i64 1264, !14, i64 1296, !14, i64 1300, !33, 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", !6, i64 0, !6, i64 8, !6, i64 16}
!107 = !{!"_ZTSN6Halide8Internal16PipelineFeaturesE", !7, i64 0, !7, i64 28, !7, i64 700, !7, i64 812, !7, i64 924, !7, i64 1036}
!108 = !{!"_ZTSN6Halide5StageE", !11, i64 0, !109, i64 24, !73, i64 32, !111, i64 40}
!109 = !{!"_ZTSN6Halide8Internal10DefinitionE", !110, i64 0}
!110 = !{!"_ZTSN6Halide8Internal12IntrusivePtrINS0_18DefinitionContentsEEE", !6, 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", !6, i64 0, !6, i64 8, !6, 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, !6, i64 32}
!119 = !{!"_ZTSSt13_Bit_iterator", !120, i64 0}
!120 = !{!"_ZTSSt18_Bit_iterator_base", !6, i64 0, !14, i64 8}
!121 = !{i64 0, i64 8, !84, i64 8, i64 8, !84, i64 16, i64 1, !122}
!122 = !{!28, !28, i64 0}
!123 = distinct !{!123, !45}
!124 = distinct !{!124, !45}


; Effective O3 passes: AggressiveInstCombinePass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass